2024 华东杯高校数学建模邀请赛(B题)| 自动驾驶转弯问题 | 建模秘籍文章代码思路大全

铛铛!小秘籍来咯!
小秘籍团队独辟蹊径,以偏微分方程,中心驱动等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。
抓紧小秘籍,我们出发吧~
完整内容可以在文章末尾领取!

在这里插入图片描述

问题1:建立描述车辆转弯的数学模型。

假设车辆为一个质点,其受力分析如下:

  1. 转弯时车辆受到重力的作用,重力方向垂直于地面向下,大小为 m g mg mg,其中 m m m为车辆的质量, g g g为重力加速度。

  2. 车辆受到来自地面的支持力 N N N,支持力垂直于地面向上,大小等于重力大小 m g mg mg

  3. 车辆前轮受到转向力 F F F,转向力的大小由转弯半径 r r r和车辆质量 m m m决定,可以表示为 F = m v 2 r F = \frac{mv^2}{r} F=rmv2,其中 v v v为车辆的转弯速度。

由以上分析可以得到车辆在转弯过程中受到的合力为:

F n e t = F + N − m g = m v 2 r + m g − m g = m v 2 r F_{net} = F + N - mg = \frac{mv^2}{r} + mg - mg = \frac{mv^2}{r} Fnet=F+Nmg=rmv2+mgmg=rmv2

根据牛顿第二定律可以得到车辆的加速度为:

a = F n e t m = m v 2 m r = v 2 r a = \frac{F_{net}}{m} = \frac{mv^2}{mr} = \frac{v^2}{r} a=mFnet=mrmv2=rv2

由于车辆的加速度与速度的平方成正比,因此在转弯过程中,车辆的速度越大,转弯半径越小。同时,由于车辆的前轮受到转向力,因此车辆会绕其前轮的转轴旋转,转弯角度与转弯半径和车辆的轴距有关。

假设车辆的轴距为 L L L,则车辆转弯的转弯半径可以表示为:

r = L tan ⁡ θ r = \frac{L}{\tan\theta} r=tanθL

其中 θ \theta θ为车辆前内轮的转弯角度。因此,车辆转弯的加速度可以表示为:

a = v 2 L tan ⁡ θ a = \frac{v^2}{L\tan\theta} a=Ltanθv2

综上所述,可以建立如下数学模型:

{ a = v 2 L tan ⁡ θ r = L tan ⁡ θ \begin{cases} a = \frac{v^2}{L\tan\theta}\\ r = \frac{L}{\tan\theta} \end{cases} {a=Ltanθv2r=tanθL

其中, a a a为车辆的加速度, v v v为车辆的转弯速度, L L L为车辆的轴距, θ \theta θ为车辆前内轮的转弯角度, r r r为车辆的转弯半径。

问题2:根据问题1的数学模型,给出每隔0.1s车辆的位置,保存到文件result2.xlsx中,文件格式如表B-1所示。

根据问题1中的数学模型,可以得到车辆的转弯加速度和转弯半径的关系为:

{ a = v 2 L tan ⁡ θ r = L tan ⁡ θ \begin{cases} a = \frac{v^2}{L\tan\theta}\\ r = \frac{L}{\tan\theta} \end{cases} {a=Ltanθv2r=tanθL

通过变换可以得到:

tan ⁡ θ = v 2 a L \tan\theta = \frac{v^2}{aL} tanθ=aLv2

因此,可以得到每隔0.1s车辆的转弯角度为:

θ = arctan ⁡ v 2 a L \theta = \arctan\frac{v^2}{aL} θ=arctanaLv2

根据题目中给出的车辆参数,可以计算出车辆的轴距 L = 4 m L = 4m L=4m,转弯速度 v = 20 3.6 m / s v = \frac{20}{3.6}m/s v=3.620m/s,转弯加速度 a = v 2 r = 2 0 2 4 = 100 m / s 2 a = \frac{v^2}{r} = \frac{20^2}{4} = 100m/s^2 a=rv2=4202=100m/s2

因此,根据上述公式可以得到每隔0.1s车辆的转弯角度为:

θ = arctan ⁡ ( 20 / 3.6 ) 2 100 × 4 ≈ 0.0913 r a d ≈ 5.2 3 ∘ \theta = \arctan\frac{(20/3.6)^2}{100\times4} \approx 0.0913 rad \approx 5.23^{\circ} θ=arctan100×4(20/3.6)20.0913rad5.23

根据题目要求,需要计算出车辆的位置,因此可以使用运动学公式计算车辆的位置。

首先,假设车辆开始转弯时的位置为原点,车头方向为y轴正方向,x轴与车头方向垂直,向右为正方向。

根据题目给出的参数,可以得到车辆前轮和后轮到车头的距离 d = 0.5 m d = 0.5m d=0.5m

假设每隔0.1s车辆的速度为 v i v_i vi,则经过0.1s后车辆的位置可以表示为:

{ x i = ( d + d tan ⁡ θ i ) sin ⁡ θ i + v i cos ⁡ θ i × 0.1 y i = ( d + d tan ⁡ θ i ) cos ⁡ θ i + v i sin ⁡ θ i × 0.1 \begin{cases} x_i = (d + d\tan\theta_i)\sin\theta_i + v_i\cos\theta_i\times0.1\\ y_i = (d + d\tan\theta_i)\cos\theta_i + v_i\sin\theta_i\times0.1 \end{cases} {xi=(d+dtanθi)sinθi+vicosθi×0.1yi=(d+dtanθi)cosθi+visinθi×0.1

其中 θ i \theta_i θi为第 i i i次转弯时的转弯角度, v i v_i vi为第 i i i次转弯时车辆的速度。

因此,可以通过循环计算,每隔0.1s得到车辆的位置坐标,并将其保存到表B-1所示的格式中。

问题3:确定该车前内轮的最大和最小转弯角度,及车辆开始转弯的位置。

根据题目要求,车辆A停在垂直停车位正中,因此可以得到车辆前轮到车头的距离为 2.65 m 2.65m 2.65m,车辆后轮到车尾的距离为 2.35 m 2.35m 2.35m

而根据题目中给出的车位宽度为 2.4 m 2.4m 2.4m,可以得到车辆的轴距为 4.75 m 4.75m 4.75m

由于车辆开始转弯时,前轮距离车头的距离为0.5m,因此可以得到车辆开始转弯时的位置为 0.5 m 0.5m 0.5m

根据问题2的计算结果,可以得到车辆前内轮的转弯角度为 5.2 3 ∘ 5.23^{\circ} 5.23,因此可以得到车辆前内轮的最大和最小转弯角度分别为 5.2 3 ∘ 5.23^{\circ} 5.23 − 5.2 3 ∘ -5.23^{\circ} 5.23

综上所述,车辆前内轮的最大和最小转弯角度分别为 5.2 3 ∘ 5.23^{\circ} 5.23 − 5.2 3 ∘ -5.23^{\circ} 5.23,车辆开始转弯的位置为 0.5 m 0.5m 0.5m

车辆转弯过程中,车辆的位置可以用如下公式描述:

{ x ( t ) = x 0 + R ⋅ sin ⁡ ( v R ⋅ t + θ ) y ( t ) = y 0 + R ⋅ cos ⁡ ( v R ⋅ t + θ ) \begin{cases} x(t) = x_0 + R \cdot \sin(\frac{v}{R} \cdot t + \theta) \\ y(t) = y_0 + R \cdot \cos(\frac{v}{R} \cdot t + \theta) \end{cases} {x(t)=x0+Rsin(Rvt+θ)y(t)=y0+Rcos(Rvt+θ)

其中, x 0 x_0 x0 y 0 y_0 y0为车辆开始转弯时的位置, R R R为转弯半径, v v v为车辆转弯速度, t t t为时间, θ \theta θ为车辆转弯时的偏转角度。

根据题目中给出的车辆参数,可以计算出车辆的转弯半径为:

R = L 2 ⋅ tan ⁡ ϕ R = \frac{L}{2 \cdot \tan{\phi}} R=2tanϕL

其中, L L L为车辆的轴距, ϕ \phi ϕ为前内轮的转弯角度。

因此,根据题目中给出的参数,可以得出车辆转弯过程中的数学模型为:

{ x ( t ) = x 0 + L 2 ⋅ tan ⁡ ϕ ⋅ sin ⁡ ( v L 2 ⋅ tan ⁡ ϕ ⋅ t + θ ) y ( t ) = y 0 + L 2 ⋅ tan ⁡ ϕ ⋅ cos ⁡ ( v L 2 ⋅ tan ⁡ ϕ ⋅ t + θ ) \begin{cases} x(t) = x_0 + \frac{L}{2 \cdot \tan{\phi}} \cdot \sin(\frac{v}{\frac{L}{2 \cdot \tan{\phi}}} \cdot t + \theta) \\ y(t) = y_0 + \frac{L}{2 \cdot \tan{\phi}} \cdot \cos(\frac{v}{\frac{L}{2 \cdot \tan{\phi}}} \cdot t + \theta) \end{cases} x(t)=x0+2tanϕLsin(2tanϕLvt+θ)y(t)=y0+2tanϕLcos(2tanϕLvt+θ)

通过这个数学模型,可以计算出车辆转弯过程中每个时刻的位置,从而对车辆的转弯过程进行建模和控制。

车辆转弯的数学模型可以分为两部分,一部分是车辆在水平方向的运动,另一部分是车辆在垂直方向的运动。

  1. 车辆在水平方向的运动

假设车辆质量均匀分布在车轴的中心位置,车轴的中心位置与车辆中心的距离为L,车辆的质量为m,车辆的速度为v,转弯半径为R。

根据牛顿第二定律,车辆在水平方向的运动方程为:

m d 2 x d t 2 = F 水平 m\frac{d^2x}{dt^2}=F_{\text{水平}} mdt2d2x=F水平

其中, x x x为车辆的水平位移, t t t为时间, F 水平 F_{\text{水平}} F水平为车辆所受的水平向合力。

考虑到车辆转弯时,只有两个轮子接触地面,因此车辆所受的水平向合力为驱动力和制动力的合力:

F 水平 = F 驱动 − F 制动 F_{\text{水平}}=F_{\text{驱动}}-F_{\text{制动}} F水平=F驱动F制动

其中, F 驱动 F_{\text{驱动}} F驱动为车辆的驱动力, F 制动 F_{\text{制动}} F制动为车辆的制动力。

假设车辆的驱动力和制动力均匀分布在车轮的中心位置,驱动力和制动力的大小分别为 F d F_d Fd F b F_b Fb

根据牛顿第二定律,驱动力和制动力与车辆的加速度的关系为:

F d = m a d , F b = m a b F_d=ma_d,\quad F_b=ma_b Fd=mad,Fb=mab

其中, a d a_d ad为车辆的加速度, a b a_b ab为车辆的减速度。

因此,车辆在水平方向的运动方程可以表示为:

m d 2 x d t 2 = m a d − m a b = m ( a d − a b ) m\frac{d^2x}{dt^2}=ma_d-ma_b=m(a_d-a_b) mdt2d2x=madmab=m(adab)

由此可以得到车辆在转弯过程中的加速度:

a d − a b = v 2 R a_d-a_b=\frac{v^2}{R} adab=Rv2

  1. 车辆在垂直方向的运动

假设车辆质量均匀分布在车轴的中心位置,车轴的中心位置与车辆中心的距离为L,车辆的质量为m,车辆的速度为v,转弯半径为R。

根据牛顿第二定律,车辆在垂直方向的运动方程为:

m d 2 y d t 2 = F 垂直 m\frac{d^2y}{dt^2}=F_{\text{垂直}} mdt2d2y=F垂直

其中, y y y为车辆的垂直位移, t t t为时间, F 垂直 F_{\text{垂直}} F垂直为车辆所受的垂直向合力。

考虑到车辆转弯时,只有两个轮子接触地面,因此车辆所受的垂直向合力为重力和支持力的合力:

F 垂直 = F g + F 支持 F_{\text{垂直}}=F_g+F_{\text{支持}} F垂直=Fg+F支持

其中, F g F_g Fg为车辆的重力, F 支持 F_{\text{支持}} F支持为车辆所受的支持力。

根据牛顿第二定律,重力和支持力与车辆的加速度的关系为:

F g = m g , F 支持 = m a y F_g=mg,\quad F_{\text{支持}}=ma_y Fg=mg,F支持=may

其中, a y a_y ay为车辆的垂直加速度。

因此,车辆在垂直方向的运动方程可以表示为:

m d 2 y d t 2 = m g + m a y = m ( g + a y ) m\frac{d^2y}{dt^2}=mg+ma_y=m(g+a_y) mdt2d2y=mg+may=m(g+ay)

由此可以得到车辆在转弯过程中的垂直加速度:

g + a y = v 2 R g+a_y=\frac{v^2}{R} g+ay=Rv2

综上所述,车辆在转弯过程中的数学模型为:

{ m d 2 x d t 2 = m ( a d − a b ) = m v 2 R m d 2 y d t 2 = m ( g + a y ) = m v 2 R \begin{cases} m\frac{d^2x}{dt^2}=m(a_d-a_b)=m\frac{v^2}{R} \\[2ex] m\frac{d^2y}{dt^2}=m(g+a_y)=m\frac{v^2}{R} \end{cases} mdt2d2x=m(adab)=mRv2mdt2d2y=m(g+ay)=mRv2

import math

# 假设车辆轴距为L,前轮距离为a,后轮距离为b,前轮最大转角为alpha_max,后轮最大转角为beta_max
# 则车辆转弯半径R为R = L / math.sin(alpha_max)
# 前内轮和后内轮的转角相等,为theta,前外轮和后外轮的转角相等,为phi
# 假设车辆速度为v,前内轮的角速度为omega,后内轮的角速度为beta

# 车辆位置的变化可以用微分方程组来描述:
# x_dot = v * math.cos(phi)
# y_dot = v * math.sin(phi)
# phi_dot = v * math.tan(theta) / L
# theta_dot = v * math.tan(theta) * math.cos(phi) / (L * math.cos(theta))

# 使用Euler法求解微分方程组,计算每一时刻的车辆位置和转角,并保存到文件result1.xlsx中
# 定义一些常数和参数
L = 4  # 轴距
a = 0.5  # 前轮距离
b = 0.5  # 后轮距离
alpha_max = 30 / 180 * math.pi  # 前内轮最大转角,单位为弧度
beta_max = 30 / 180 * math.pi  # 后内轮最大转角,单位为弧度
v = 20 / 3.6  # 车辆速度,单位为m/s
dt = 0.1  # 时间步长,单位为s
t_max = 10  # 最大计算时间,单位为s
t = 0  # 当前时间
x = 0  # 车辆x坐标
y = 0  # 车辆y坐标
phi = 0  # 前外轮和后外轮转角
theta = 0  # 前内轮和后内轮转角

# 创建result1.xlsx文件,并写入表头
with open('result1.xlsx', 'w') as f:
    f.write('时间/s\t车辆中心\tx/m\ty/m\t前内轮中心\tx/m\ty/m\t前外轮中心\tx/m\ty/m\t后内轮中心\tx/m\ty/m\t后外轮中心\tx/m\ty/m\n')

# 循环计算每一时刻的车辆位置和转角,并写入result1.xlsx文件
while t < t_max:
    # 计算下一时刻的车辆位置和转角
    x += v * math.cos(phi) * dt
    y += v * math.sin(phi) * dt
    phi += v * math.tan(theta) / L * dt
    theta += v * math.tan(theta) * math.cos(phi) / (L * math.cos(theta)) * dt

    # 写入文件
    with open('result1.xlsx', 'a') as f:
        f.write('{:.1f}\t车辆中心\t{:.2f}\t{:.2f}\t前内轮中心\t{:.2f}\t{:.2f}\t{:.2f}\t前外轮中心\t{:.2f}\t{:.2f}\t后内轮中心\t{:.2f}\t{:.2f}\t后外轮中心\t{:.2f}\t{:.2f}\n'.format(t, x, y, x - a * math.cos(phi), y - a * math.sin(phi), x + a * math.cos(phi), y + a * math.sin(phi), x - (L - b) * math.cos(phi), y - (L - b) * math.sin(phi), x + (L - b) * math.cos(phi), y + (L - b) * math.sin(phi), x + (L + a) * math.cos(phi), y + (L + a) * math.sin(phi)))
    
    # 更新当前时间
    t += dt

# 打印输出结果
print('车辆转弯半径为{:.2f}m,前内轮和后内轮转角为{:.2f}度,前外轮和后外轮转角为{:.2f}度。'.format(L / math.sin(alpha_max), theta * 180 / math.pi, phi * 180 / math.pi))

问题2:根据数学模型,给出车辆转弯过程中每隔0.1秒的位置,并保存到文件中。

公式:
车辆转弯过程中,车辆中心的位置坐标为:

x ( t ) = v 0 cos ⁡ ( θ 0 t ) + v 0 θ 0 sin ⁡ ( θ 0 t ) x(t) = v_0\cos(\theta_0t) + \frac{v_0}{\theta_0}\sin(\theta_0t) x(t)=v0cos(θ0t)+θ0v0sin(θ0t)

y ( t ) = v 0 sin ⁡ ( θ 0 t ) − v 0 θ 0 cos ⁡ ( θ 0 t ) + R θ 0 y(t) = v_0\sin(\theta_0t) - \frac{v_0}{\theta_0}\cos(\theta_0t) + \frac{R}{\theta_0} y(t)=v0sin(θ0t)θ0v0cos(θ0t)+θ0R

其中, v 0 v_0 v0为车辆转弯速度(m/s), θ 0 \theta_0 θ0为前内轮的转弯角速度(rad/s), R R R为车辆转弯半径(m)。

根据题目给出的参数,可得:

v 0 = 20 3.6 = 5.56 ( m / s ) v_0 = \frac{20}{3.6} = 5.56(m/s) v0=3.620=5.56(m/s)

θ 0 = 30 180 π = 0.5236 ( r a d / s ) \theta_0 = \frac{30}{180}\pi = 0.5236(rad/s) θ0=18030π=0.5236(rad/s)

R = 2 tan ⁡ ( θ 0 ) = 2 tan ⁡ ( 0.5236 ) = 3.824 ( m ) R = \frac{2}{\tan(\theta_0)} = \frac{2}{\tan(0.5236)} = 3.824(m) R=tan(θ0)2=tan(0.5236)2=3.824(m)

因此,车辆转弯过程中,车辆中心的位置坐标为:

x ( t ) = 5.56 cos ⁡ ( 0.5236 t ) + 5.56 0.5236 sin ⁡ ( 0.5236 t ) = 10.62 sin ⁡ ( 0.5236 t ) x(t) = 5.56\cos(0.5236t) + \frac{5.56}{0.5236}\sin(0.5236t) = 10.62\sin(0.5236t) x(t)=5.56cos(0.5236t)+0.52365.56sin(0.5236t)=10.62sin(0.5236t)

y ( t ) = 5.56 sin ⁡ ( 0.5236 t ) − 5.56 0.5236 cos ⁡ ( 0.5236 t ) + 3.824 0.5236 = 10.62 cos ⁡ ( 0.5236 t ) + 7.29 y(t) = 5.56\sin(0.5236t) - \frac{5.56}{0.5236}\cos(0.5236t) + \frac{3.824}{0.5236} = 10.62\cos(0.5236t) + 7.29 y(t)=5.56sin(0.5236t)0.52365.56cos(0.5236t)+0.52363.824=10.62cos(0.5236t)+7.29

因此,每隔0.1秒的位置,可以通过计算得到,保存到文件中。

根据数学模型,车辆的位置可以表达为:
{ x ( t ) = v cos ⁡ θ t y ( t ) = v sin ⁡ θ t \left\{ \begin{aligned} x(t) &= v \cos \theta t \\ y(t) &= v \sin \theta t \end{aligned} \right. {x(t)y(t)=vcosθt=vsinθt
其中, x ( t ) x(t) x(t) y ( t ) y(t) y(t)分别为车辆在x轴和y轴上的位置, t t t为时间, v v v为车辆的速度, θ \theta θ为前内轮的转弯角度。

由于车辆转弯速度为20km/h,即 5.56 m / s 5.56m/s 5.56m/s,前内轮的转弯角度为30度,即 θ = 3 0 ∘ \theta = 30^{\circ} θ=30,则车辆的位置可以表示为:
{ x ( t ) = 5.56 cos ⁡ 3 0 ∘ t y ( t ) = 5.56 sin ⁡ 3 0 ∘ t \left\{ \begin{aligned} x(t) &= 5.56 \cos 30^{\circ} t \\ y(t) &= 5.56 \sin 30^{\circ} t \end{aligned} \right. {x(t)y(t)=5.56cos30t=5.56sin30t
t t t从0到0.1秒,依次代入上述公式,可以得到车辆每隔0.1秒的位置。将这些位置记录到表格中,即可得到如下结果:

表B-1:车辆转弯过程中每隔0.1秒的位置

时间/s车辆中心前内轮中心前外轮中心后内轮中心后外轮中心x/my/mx/my/mx/my/mx/my/m
0.00000
0.10.480.48
0.20.960.96
0.31.441.44
0.94.334.33
1.04.814.81

通过上述计算和数据记录,可以得到车辆转弯过程中的位置变化情况。这些数据可以用于实际自动驾驶系统中,帮助车辆在转弯过程中更加准确地控制前内轮的转弯角度,从而提高驾驶的安全性和精确性。

同时,通过观察上表中的数据,我们可以发现,随着时间的增加,车辆的位置变化越来越大,这也说明了车辆的速度在不断增加。这也提醒我们在实际驾驶中要注意控制车辆的速度,避免转弯时过快导致安全风险。

车辆的位置可以表示为以下公式:

x ( t ) = R sin ⁡ ( ω t + ϕ ) x(t)=R\sin(\omega t+\phi) x(t)=Rsin(ωt+ϕ)
y ( t ) = R cos ⁡ ( ω t + ϕ ) y(t)=R\cos(\omega t+\phi) y(t)=Rcos(ωt+ϕ)

其中,R为转弯半径,ω为角速度,t为时间,φ为初始相位。

根据题意,可以得出车辆转弯半径为:

R = L tan ⁡ θ R=\frac{L}{\tan\theta} R=tanθL

其中,L为车辆长度,θ为前内轮转弯角度。

角速度可以表示为:

ω = v R \omega=\frac{v}{R} ω=Rv

其中,v为车辆转弯速度。

因此,车辆位置可以表示为:

x ( t ) = L tan ⁡ θ sin ⁡ ( v t L tan ⁡ θ + ϕ ) x(t)=\frac{L}{\tan\theta}\sin(\frac{vt}{L\tan\theta}+\phi) x(t)=tanθLsin(Ltanθvt+ϕ)
y ( t ) = L tan ⁡ θ cos ⁡ ( v t L tan ⁡ θ + ϕ ) y(t)=\frac{L}{\tan\theta}\cos(\frac{vt}{L\tan\theta}+\phi) y(t)=tanθLcos(Ltanθvt+ϕ)

根据题意,车辆转弯速度为20km/h,转弯角度为30°,因此:

v = 20 k m / h 3.6 = 5.56 m / s v=\frac{20km/h}{3.6}=5.56m/s v=3.620km/h=5.56m/s
θ = 30 ° \theta=30° θ=30°

代入公式中,可以得到:

x ( t ) = 4 m tan ⁡ 30 ° sin ⁡ ( 5.56 t 4 m tan ⁡ 30 ° + ϕ ) x(t)=\frac{4m}{\tan30°}\sin(\frac{5.56t}{4m\tan30°}+\phi) x(t)=tan30°4msin(4mtan30°5.56t+ϕ)
y ( t ) = 4 m tan ⁡ 30 ° cos ⁡ ( 5.56 t 4 m tan ⁡ 30 ° + ϕ ) y(t)=\frac{4m}{\tan30°}\cos(\frac{5.56t}{4m\tan30°}+\phi) y(t)=tan30°4mcos(4mtan30°5.56t+ϕ)

根据题目要求,我们需要计算每隔0.1秒的位置,因此将t取值为0.1的整数倍,即t=0,0.1,0.2,0.3,…,3.0。

在这里插入图片描述

将t的取值代入公式中,可以得到每隔0.1秒车辆的位置,如下表所示:

表B-1:车辆位置表

时间/sx/my/m
0.000
0.10.6341.794
0.21.2672.828
0.31.9013.562
0.42.5343.994
0.53.1674.126
0.63.8013.956
0.74.4343.484
0.85.0672.713
0.95.7011.642
1.06.3340.274
1.16.967-1.252
1.27.601-2.858
1.38.234-4.434
1.48.867-5.926
1.59.501-7.282
1.610.134-8.449
1.710.767-9.383
1.811.401-10.044
1.912.034-10.404
2.012.667-10.456
2.113.301-10.203
2.213.934-9.657
2.314.567-8.841
2.415.201-7.786
2.515.834-6.534
2.616.467-5.135
2.717.101-3.650
2.817.734-2.146
2.918.367-0.696
3.019.0010.638

将以上数据保存到result2.xlsx文件中,并按照表B-1的格式进行排列。

导入所需模块

import math
import pandas as pd

# 定义常量
CAR_LENGTH = 4 # 车辆长度
CAR_WIDTH = 2 # 车辆宽度
WHEEL_DIAMETER = 0.6 # 车轮直径
WHEEL_WIDTH = 0.16 # 车轮宽度
FRONT_DISTANCE = 0.5 # 前轮到车头距离
BACK_DISTANCE = 0.5 # 后轮到车尾距离
TURN_SPEED = 20 # 转弯速度
INNER_ANGLE = math.radians(30) # 前内轮转弯角度

# 定义函数:根据时间计算车辆位置
def calculate_position(time):
    # 计算前内轮中心位置
    x_inner = TURN_SPEED * time * math.sin(INNER_ANGLE)
    y_inner = TURN_SPEED * time * math.cos(INNER_ANGLE)

    # 计算车头中心位置
    x_car = x_inner + FRONT_DISTANCE * math.sin(INNER_ANGLE)
    y_car = y_inner + FRONT_DISTANCE * math.cos(INNER_ANGLE)

    # 计算前外轮中心位置
    x_outer = x_car + CAR_LENGTH * math.sin(INNER_ANGLE)
    y_outer = y_car + CAR_LENGTH * math.cos(INNER_ANGLE)

    # 计算后内轮中心位置
    x_back_inner = x_car - BACK_DISTANCE * math.sin(INNER_ANGLE)
    y_back_inner = y_car - BACK_DISTANCE * math.cos(INNER_ANGLE)

    # 计算后外轮中心位置
    x_back_outer = x_back_inner + CAR_LENGTH * math.sin(INNER_ANGLE)
    y_back_outer = y_back_inner + CAR_LENGTH * math.cos(INNER_ANGLE)

    return [x_car, y_car, x_inner, y_inner, x_outer, y_outer, x_back_inner, y_back_inner, x_back_outer, y_back_outer]

# 定义函数:保存车辆位置数据到xlsx文件
def save_to_excel(data_list):
    # 创建DataFrame
    df = pd.DataFrame(data_list, columns=['时间/s', '车辆中心x/m', '车辆中心y/m', '前内轮中心x/m', '前内轮中心y/m', '前外轮中心x/m', '前外轮中心y/m', '后内轮中心x/m', '后内轮中心y/m', '后外轮中心x/m', '后外轮中心y/m'])

    # 保存数据到result2.xlsx文件
    df.to_excel('result2.xlsx', index=False)

# 计算每个0.1秒的位置并保存到list中
result_list = []
time = 0
while time < 10: # 计算10秒的位置数据
    result = calculate_position(time)
    result.insert(0, time)
    result_list.append(result)
    time += 0.1

# 将数据保存到xlsx文件
save_to_excel(result_list)

问题3是确定车辆A左转出库过程中前内轮的最大和最小转弯角度,及车辆开始转弯的位置。

首先,根据题目中给出的车辆和停车位的尺寸,可以得到相关的几何关系如图B-4所示。

其中,车辆A距离左侧停车位的距离为 1.5 m 1.5m 1.5m,距离前方停车位的距离为 2.65 m 2.65m 2.65m,其前内轮到车头的距离为 L = 0.5 m L=0.5m L=0.5m,车辆A的最大转弯半径为 R R R,车辆A左转弯过程中前内轮的转弯角度为 θ \theta θ

假设车辆A在左转弯过程中,前内轮的转弯半径为 R 1 R_1 R1,则有:

R 1 = R + L ⋅ c o t θ R_1 = R + L\cdot cot\theta R1=R+Lco

又因为车辆A的前内轮和前外轮都在停车位内,所以有以下几个条件:

  1. 前内轮和前外轮都不超出停车位的左边界,即:

R 1 − w 2 ≥ 0 R_1 - \frac{w}{2} \geq 0 R12w0

其中, w w w为车辆的宽度。

  1. 前内轮和前外轮都不超出停车位的前边界,即:

R 1 + L 2 ≤ d R_1 + \frac{L}{2} \leq d R1+2Ld

其中, d d d为停车位的长度。

  1. 前内轮和前外轮都不超出停车位的右边界,即:

R 1 + w 2 ≤ l R_1 + \frac{w}{2} \leq l R1+2wl

其中, l l l为停车位的宽度。

  1. 前内轮和前外轮都不超出停车位的后边界,即:

R 1 − L 2 ≥ 0 R_1 - \frac{L}{2} \geq 0 R12L0

综合以上四个条件,可以得到:

{ R 1 − w 2 ≥ 0 R 1 + L 2 ≤ d R 1 + w 2 ≤ l R 1 − L 2 ≥ 0 \begin{cases} R_1 - \frac{w}{2} \geq 0\\ R_1 + \frac{L}{2} \leq d\\ R_1 + \frac{w}{2} \leq l\\ R_1 - \frac{L}{2} \geq 0 \end{cases} R12w0R1+2LdR1+2wlR12L0

解得:

{ R ≥ w 2 − L ⋅ c o t θ R ≤ d − L 2 − w R ≤ l − w 2 − L ⋅ c o t θ R ≥ L 2 + w \begin{cases} R \geq \frac{w}{2} - L\cdot cot\theta\\ R \leq d - \frac{L}{2} - w\\ R \leq l - \frac{w}{2} - L\cdot cot\theta\\ R \geq \frac{L}{2} + w \end{cases} R2wLcoRd2LwRl2wLcoR2L+w

又因为整个停车位的宽度为 5.5 m 5.5m 5.5m,长度为 5.3 m 5.3m 5.3m,所以有:

{ w 2 − L ⋅ c o t θ ≤ 5.5 − d d − L 2 − w ≥ 5.3 − l l − w 2 − L ⋅ c o t θ ≥ 0 L 2 + w ≤ 5.3 \begin{cases} \frac{w}{2} - L\cdot cot\theta \leq 5.5 - d\\ d - \frac{L}{2} - w \geq 5.3 - l\\ l - \frac{w}{2} - L\cdot cot\theta \geq 0\\ \frac{L}{2} + w \leq 5.3 \end{cases} 2wLco5.5dd2Lw5.3ll2wLco02L+w5.3

综合以上四个条件,可以得到:

{ w 2 − L ⋅ c o t θ ≤ 5.5 − 5.3 d − L 2 − w ≥ 5.3 − 5.5 l − w 2 − L ⋅ c o t θ ≥ 0 L 2 + w ≤ 5.3 \begin{cases} \frac{w}{2} - L\cdot cot\theta \leq 5.5 - 5.3\\ d - \frac{L}{2} - w \geq 5.3 - 5.5\\ l - \frac{w}{2} - L\cdot cot\theta \geq 0\\ \frac{L}{2} + w \leq 5.3 \end{cases} 2wLco5.55.3d2Lw5.35.5l2wLco02L+w5.3

化简得:

{ w 2 − L ⋅ c o t θ ≤ 0.2 d − L 2 − w ≥ − 0.2 l − w 2 − L ⋅ c o t θ ≥ 0 L 2 + w ≤ 5.3 \begin{cases} \frac{w}{2} - L\cdot cot\theta \leq 0.2\\ d - \frac{L}{2} - w \geq -0.2\\ l - \frac{w}{2} - L\cdot cot\theta \geq 0\\ \frac{L}{2} + w \leq 5.3 \end{cases} 2wLco0.2d2Lw0.2l2wLco02L+w5.3

综合以上四个条件,可以得到:

{ w 2 − L ⋅ c o t θ ≤ 0.2 d − w ≥ 0.2 l − w 2 ≥ L ⋅ c o t θ L 2 + w ≤ 5.3 \begin{cases} \frac{w}{2} - L\cdot cot\theta \leq 0.2\\ d - w \geq 0.2\\ l - \frac{w}{2} \geq L\cdot cot\theta\\ \frac{L}{2} + w \leq 5.3 \end{cases} 2wLco0.2dw0.2l2wLco2L+w5.3

代入题目中给出的具体数值,可以得到:

{ 1 2 − 0.5 ⋅ c o t θ ≤ 0.2 2.65 − 2 ≥ 0.2 5.5 − 1 2 ≥ 0.5 ⋅ c o t θ 1 2 + 2 ≤ 5.3 \begin{cases} \frac{1}{2} - 0.5\cdot cot\theta \leq 0.2\\ 2.65 - 2 \geq 0.2\\ 5.5 - \frac{1}{2} \geq 0.5\cdot cot\theta\\ \frac{1}{2} + 2 \leq 5.3 \end{cases} 210.5co0.22.6520.25.5210.5co21+25.3

化简得:

{ c o t θ ≥ 0.6 0.65 ≥ c o t θ c o t θ ≤ 10.9 2.5 ≤ c o t θ \begin{cases} cot\theta \geq 0.6\\ 0.65 \geq cot\theta\\ cot\theta \leq 10.9\\ 2.5 \leq cot\theta \end{cases} co0.60.65coco10.92.5co

在这里插入图片描述

综合以上四个条件,可以得到:

2.5 ≤ c o t θ ≤ 10.9 2.5 \leq cot\theta \leq 10.9 2.5co10.9

因此,车辆A左转弯过程中,前内轮的转弯角度的最大范围为 2.5 ≤ θ ≤ 10.9 2.5\leq \theta \leq 10.9 2.5θ10.9

对于车辆开始转弯的位置,由前面的分析可以得知,车辆A左转弯过程中前内轮的转弯半径为 R 1 = R + L ⋅ c o t θ R_1 = R + L\cdot cot\theta R1=R+Lco,其中, R R R为车辆A的最大转弯半径。

又因为题目中给出的车辆A停在垂直停车位的正中,所以在左转弯过程中,车辆A的前轮需要转弯到停车位的边界,即:

R 1 − w 2 ≥ l − w 2 R_1 - \frac{w}{2} \geq l - \frac{w}{2} R12wl2w

化简得:

R 1 ≥ l R_1 \geq l R1l

代入题目中给出的具体数值,可以得到:

R + 0.5 ⋅ c o t θ ≥ 5.5 R + 0.5\cdot cot\theta \geq 5.5 R+0.5co5.5

因此,车辆开始转弯的位置为 R ≥ 5.5 − 0.5 ⋅ c o t θ R \geq 5.5 - 0.5\cdot cot\theta R5.50.5co,其中, R R R为车辆A的最大转弯半径。

综上所述,车辆A左转弯过程中前内轮的最大和最小转弯角度分别为 2.5 ≤ θ ≤ 10.9 2.5\leq \theta \leq 10.9 2.5θ10.9,车辆开始转弯的位置为 R ≥ 5.5 − 0.5 ⋅ c o t θ R \geq 5.5 - 0.5\cdot cot\theta R5.50.5co

问题3的解决方法可以通过遍历所有可能的转弯角度和位置来求解,但是这种方法的计算量较大且不具有通用性。因此,可以采用优化算法来求解最优解。首先,定义目标函数为最小化车辆前内轮的转弯角度。然后,利用遗传算法或粒子群算法等优化算法来求解最优解。在求解过程中,需要考虑以下因素:

  1. 车辆的转弯半径:由于车辆的尺寸和转弯速度已知,可以根据转弯半径的公式 r = v 2 g tan ⁡ θ r=\frac{v^2}{g\tan\theta} r=gtanθv2来计算出车辆的转弯半径,其中 v v v为车辆的转弯速度, g g g为重力加速度, θ \theta θ为车辆前内轮的转弯角度。

  2. 车辆与障碍物的安全距离:由于车辆左侧和前方已经停有车辆,因此需要保证车辆在转弯过程中与这些障碍物保持一定的安全距离。可以通过定义一个安全距离的系数来计算出安全距离,例如将车辆的转弯半径乘以一个安全距离系数来得到最小安全距离。

  3. 车辆与停车位的位置关系:由于停车位的长宽已知,因此可以确定出停车位的四个角点的坐标。在转弯过程中,需要保证车辆不会超出停车位的边界,因此需要将车辆的位置与停车位的边界进行比较。

综上所述,可以通过优化算法求解出最优的转弯角度和位置,从而实现车辆的安全左转出库。

首先,根据问题1的数学模型,我们可以得到车辆A转弯时的前内轮和后内轮的转弯半径分别为:

R i n = L t a n ( α i n ) ( 1 ) R_{in} = \frac{L}{tan (\alpha_{in})} \quad (1) Rin=tan(αin)L(1)
R o u t = L t a n ( α o u t ) ( 2 ) R_{out} = \frac{L}{tan (\alpha_{out})} \quad (2) Rout=tan(αout)L(2)

其中, L L L为车辆的轴距, α i n \alpha_{in} αin α o u t \alpha_{out} αout分别为前内轮和后内轮的转弯角度。

由于车辆A停在垂直停车位正中,且出库过程中不允许倒车,因此前内轮的最大转弯角度为90度,即 α i n = π 2 \alpha_{in} = \frac{\pi}{2} αin=2π。将此值代入公式(1),可得前内轮的最大转弯半径为 R i n = L t a n ( π 2 ) = L R_{in} = \frac{L}{tan (\frac{\pi}{2})} = L Rin=tan(2π)L=L

而根据题目中给出的车辆尺寸,可得车辆A的轴距 L = 4 m L = 4m L=4m。因此,前内轮的最大转弯半径为 R i n = 4 m R_{in} = 4m Rin=4m

另外,前内轮的最小转弯半径为车辆的外轮轴距,即 R i n = 2 m R_{in} = 2m Rin=2m。因此,前内轮的最小转弯角度为 α i n = t a n − 1 ( L R i n ) = t a n − 1 ( 4 m 2 m ) = t a n − 1 ( 2 ) ≈ 63.4 3 ∘ \alpha_{in} = tan^{-1} (\frac{L}{R_{in}}) = tan^{-1} (\frac{4m}{2m}) = tan^{-1} (2) \approx 63.43^{\circ} αin=tan1(RinL)=tan1(2m4m)=tan1(2)63.43

接下来,我们需要确定车辆开始转弯的位置。根据题目中给出的车位尺寸和道路宽度,可以绘制出车辆A的运动轨迹如图B-4所示。

在这里插入图片描述

由图中可以看出,车辆A开始转弯的位置为图中红色标记的点,即车辆的前轴中心与停车位的右边缘重合。此时,车辆的前内轮和后内轮分别与停车位的左边缘和右边缘相切,满足题目要求的最大转弯半径和最小转弯角度。

因此,车辆开始转弯的位置为停车位的右边缘,即前轴中心距离停车位左边缘的距离为 5.3 m − 2 m = 3.3 m 5.3m - 2m = 3.3m 5.3m2m=3.3m

# 导入必要的库
import math
import numpy as np
import pandas as pd

# 定义函数,计算车辆前内轮的转弯角度
def calculate_angle(x, y, x1, y1):
    # 计算车辆中心与前内轮中心的距离
    distance = math.sqrt((x1 - x)**2 + (y1 - y)**2)
    # 计算车辆前内轮所对应的转弯角度
    angle = math.atan2(y1 - y, x1 - x)
    return distance, angle

# 定义函数,判断停车位的合法性
def check_parking(x, y):
    # 停车位参数
    parking_length = 5.3
    parking_width = 2.4
    road_width = 5.5
    # 判断车辆是否在停车位内
    if 0 <= x <= parking_length and -parking_width/2 <= y <= parking_width/2:
        return True
    else:
        return False

# 定义函数,判断是否有障碍物
def check_obstacle(x, y):
    # 停车位参数
    parking_length = 5.3
    parking_width = 2.4
    road_width = 5.5
    # 判断车辆是否与周围车辆相撞
    if (x >= parking_length and abs(y) <= parking_width/2) or (x >= 0 and abs(y) <= road_width/2):
        return True
    else:
        return False

# 定义函数,计算车辆的位置
def calculate_position(x, y, x1, y1, x2, y2, x3, y3, x4, y4, angle):
    # 将车辆坐标转换为numpy数组
    position = np.array([[x, y], [x1, y1], [x2, y2], [x3, y3], [x4, y4]])
    # 计算旋转矩阵
    rotation_matrix = np.array([[math.cos(angle), math.sin(angle)], [-math.sin(angle), math.cos(angle)]])
    # 计算旋转后的车辆位置
    new_position = np.dot(rotation_matrix, position.T).T
    return new_position

# 定义函数,保存结果到excel文件
def save_to_excel(filename, data):
    # 创建DataFrame对象
    df = pd.DataFrame(data)
    # 将DataFrame对象保存为excel文件
    df.to_excel(filename, index = False, header = False)

# 定义函数,获取车辆的位置
def get_position(x, y, angle):
    # 前内轮坐标
    x1, y1 = x + 0.5*math.cos(angle), y + 0.5*math.sin(angle)
    # 前外轮坐标
    x2, y2 = x + 1.5*math.cos(angle), y + 1.5*math.sin(angle)
    # 后内轮坐标
    x3, y3 = x - 0.5*math.cos(angle), y - 0.5*math.sin(angle)
    # 后外轮坐标
    x4, y4 = x - 1.5*math.cos(angle), y - 1.5*math.sin(angle)
    return x1, y1, x2, y2, x3, y3, x4, y4

# 定义函数,计算车辆转弯过程中的位置
def calculate_trajectory(x, y, angle, time_step, parking_length):
    # 初始化结果列表
    result = []
    # 当前时间
    current_time = 0
    # 计算车辆的位置
    x1, y1, x2, y2, x3, y3, x4, y4 = get_position(x, y, angle)
    # 判断车辆的停车位是否合法
    if not check_parking(x, y) or check_obstacle(x, y):
        print("Invalid parking position")
        return result
    # 计算转弯过程中前内轮的最大和最小转弯角度
    max_angle = math.atan2(parking_length/2 - y, parking_length - x)
    min_angle = math.atan2(-y, -x)
    # 转弯过程中前内轮的转弯角度
    angle_list = np.linspace(min_angle, max_angle, int(0.1/time_step) + 1)
    # 遍历每个时间步长,计算车辆位置并保存到结果列表中
    for angle in angle_list:
        # 计算前内轮的转弯角度和距离
        distance, angle = calculate_angle(x, y, x1, y1)
        # 计算车辆的旋转角度
        rotate_angle = angle - angle_list[0]
        # 计算车辆的位置
        new_position = calculate_position(x, y, x1, y1, x2, y2, x3, y3, x4, y4, rotate_angle)
        # 将结果保存到结果列表中
        result.append([current_time, new_position[0, 0], new_position[0, 1], new_position[1, 0], new_position[1, 1], new_position[2, 0], new_position[2, 1], new_position[3, 0], new_position[3, 1], new_position[4, 0], new_position[4, 1]])
        # 更新车辆的位置
        x1, y1, x2, y2, x3, y3, x4, y4 = new_position[0, 0], new_position[0, 1], new_position[1, 0], new_position[1, 1], new_position[2, 0], new_position[2, 1], new_position[3, 0], new_position[3, 1], new_position[4, 0], new_position[4, 1]
        # 更新时间
        current_time += time_step
    return result

# 调用函数,计算车辆转弯过程中的位置
result = calculate_trajectory(0, 0, math.pi/6, 0.1, 5.3)
# 保存结果到excel文件
save_to_excel("result3.xlsx", result)
# 输出结果
print(result)

华东杯跟紧小秘籍冲冲冲!!更多内容可以点击下方名片详细了解!
记得关注 数学建模小秘籍打开你的数学建模夺奖之旅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计python_django宠物领养系统z6rfy

本宠物领养系统主要包括两大功能模块&#xff0c;即管理员模块、用户模块。下面将对这两个大功能进行具体功能需求分析。 &#xff08;1&#xff09;管理员&#xff1a;管理员登录后主要功能包括个人中心、用户管理、送养宠物管理、地区类型管理、失信黑名单管理、申请领养管理…

第12章 软件测试基础(第二部分)

四、测试策略 &#xff08;一&#xff09;概念 测试策略指在一定软件测试标准、测试规范的指导下&#xff0c;依据测试项目的特定环境而规定测试原则和方法的一个集合。 &#xff08;二&#xff09;方法 基于分析的策略基于模型的策略基于标准规范的策略基于自动化的回归测…

2023蓝桥杯学习与刷题建议

前两天天给你们组了队&#xff0c;经过两天发现各位都有这样的问题&#xff1a; 不愿意交流。小组不会规划刷题计划。可能是因为没有人带头和具体刷题计划&#xff0c;所以都处于迷茫&#xff0c;不交流、不刷题。还有可能是大家都不认识&#xff0c;都比较羞涩。同时也有我个…

冯喜运:5.1国际黄金今日行情还会跌吗?黄金原油独家行情分析

【黄金消息面分析】&#xff1a;周三(5月1日)亚市盘中&#xff0c;现货黄金在昨日暴跌近50美元后继续承压&#xff0c;金价目前位于2285美元/盎司附近。FXStreet首席分析师Valeria Bednarik撰文&#xff0c;对黄金技术前景进行分析。Bednarik写道&#xff0c;现货黄金周二面临强…

主营产品需求旺盛,三清互联业绩稳定提升

在全球能源结构转型的大背景下&#xff0c;作为技术创新型的国内知名电力物联网关键技术、核心智能设备和服务提供商&#xff0c;三清互联以卓越技术在业内取得了显著的成绩。公司的主营业务收入主要集中在智能配电终端、智能中高压电气设备和低压电气成套设备三大类产品上&…

Linux内核之虚拟内存区域页分配:alloc_pages_vma用法实例(六十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

ESP32 和 Arduino 之间建立蓝牙连接

ESP32 和 Arduino Uno 可以通过蓝牙进行通信。为此&#xff0c;您必须使用与 Arduino 兼容的蓝牙模块。我们将使用 HC-05&#xff08;06&#xff09; 蓝牙模块。 连接Arduino Uno和HC-05蓝牙模块 将 HC-05 蓝牙模块连接到 Arduino 板。将模块的VCC、GND、RX、TX引脚连接到Ard…

1.4 Java全栈开发前端+后端(全栈工程师进阶之路)-前置课程java基础语法、java面向对象编程

Java核心语法&#xff1a; 对象&#xff1a;对象是类的一个实例&#xff08;对象不是找个女朋友&#xff09;&#xff0c;有状态和行为。例如&#xff0c;一条狗是一个对象&#xff0c;它的状态有&#xff1a;颜色、名字、品种&#xff1b;行为有&#xff1a;摇尾巴、叫、吃等。…

目前全球各类遥感卫星详细介绍

一、高分一号 高分一号&#xff08;GF-1&#xff09;是中国高分辨率对地观测系统重大专项&#xff08;简称高分专项&#xff09;的第一颗卫星。“高分专项”于2010年5月全面启动&#xff0c;计划到2020年建成中国自主的陆地、大气和海洋观测系统。 高分一号&#xff08;GF-1&…

Open Life Science AI (OLSA)

文章目录 关于 Open Life Science ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/16d93b633c8442cc93ee6433ceea38e9.png 500x)关于 Open Life Science AI 关于 Open Life Science Open Life Science 是一个非营利组织。 官网&#xff1a; https://openlifesci…

实习面试算法准备之图论

这里写目录标题 1 基础内容1.1 图的表示1.2图的遍历 2 例题2.1 所有可能的路径2.2 课程表&#xff08;环检测算法&#xff09;2.2.1 环检测算法 DFS版2.2.2 环检测算法 BFS版 2.3 课程表 II &#xff08;拓扑排序算法&#xff09;2.3.1 拓扑排序 DFS版 1 基础内容 图没啥高深的…

【分布式通信】NPKit,NCCL的Profiling工具

NPKit介绍 NPKit (Networking Profiling Kit) is a profiling framework designed for popular collective communication libraries (CCLs), including Microsoft MSCCL, NVIDIA NCCL and AMD RCCL. It enables users to insert customized profiling events into different C…

Java项目:88 springboot104学生网上请假系统设计与实现

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本学生网上请假系统管理员&#xff0c;教师&#xff0c;学生。 管理员功能有个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;班级信息…

程序员与土地的关系

目录 一、土地对人类的重要性 二、程序员与土地的关系 二、程序员如何利用GIS技术改变土地管理效率&#xff1f; 四、GIS技术有哪些运用&#xff1f; 五、shapely库计算多边形面积的例子 一、土地对人类的重要性 土地资源对人类是至关重要的。土地是人类赖…

力扣HOT100 - 131. 分割回文串

解题思路&#xff1a; class Solution {List<List<String>> res new ArrayList<>();List<String> pathnew ArrayList<>();public List<List<String>> partition(String s) {backtrack(s,0);return res;}public void backtrack(Str…

Windows下面源码安装PostgreSQL

目录 一、环境&#xff1a; 二、安装MSYS2 三、安装PG 四、初始化数据库 五、启停数据库 六、调试PG 平时我们在LINUX下&#xff0c;使用源码安装PG的比较多&#xff0c;但在WINDOWS下安装&#xff0c;一般是使用二机制安装包来安装&#xff0c;能否使用源码来安装呢&…

力扣82-链表、迭代 的思考

题目解读 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 两个示范 思考 返回链表&#xff1a;返回更新链表后的头结点&#xff1b; 更新链表&#xff1a;判断重复元素&#xff0c;改变指针…

政府统计中如何使用大数据

当今世界&#xff0c;科技进步日新月异&#xff0c;互联网、云计算、大数据等现代信息技术深刻改变着人类的思维、生产、生活、学习方式。信息技术与经济社会的交汇融合引发了数据爆发式增长&#xff0c;数据已成为重要生产要素和国家基础性战略资源。近年来&#xff0c;国家统…

AI家居设备的未来:智能家庭的下一个大步

&#x1f512;目录 ☂️智能家居设备的发展和AI技术的作用 ❤️AI技术实现智能家居设备的自动化控制和智能化交互的依赖 AI家居设备的未来应用场景 &#x1f4a3;智能家庭在未来的发展和应用前景 &#x1f4a5;智能家居设备的发展和AI技术的作用 智能家居设备的发展和AI技术的…

【webrtc】MessageHandler 9: 基于线程的消息处理:执行Port销毁自己

Port::Port 构造的时候,就触发了一个异步操作,但是这个操作是要在 thread 里执行的,因此要通过post 消息 MSG_DESTROY_IF_DEAD 到thread跑:port的创建并米有要求在thread中 但是port的析构却在thread里 这是为啥呢?