2024国赛A问题三和四

问题三

最小螺距单目标优化模型的建立

问题二考虑了在螺距固定的条件下计算舞龙队盘入的终止时间,问题三在第二问的基础提出了改变螺距的要求,即求解在螺距最小为多少时,龙头前把手能够沿着相应的螺线盘入到调头空间的边界。故可将其转换为一个单目标优化问题,目标函数为求解最小的螺距,将板凳龙模型中具体物理要求与龙头前把手能够沿着相应的螺线盘入到调头空间的边界作为约束条件,由于该目标函数非线性且较为复杂,故本文采取了带罚函数的双重模拟退火算法与变步长搜索算法结合进行求解。

目标函数与约束条件

由于此时螺距的取值受到约束条件的限制,故将螺距 a a a的表达修改为变量 A A A,可写出目标函数的表达为:
min ⁡ A \min A minA
其中约束条件如下如下:

(1). 根据题意,龙头能够进入调头空间的边界,即此时结束位置的极径应该小于4.5m,此时螺线方程为 r = A 2 π ⋅ θ r=\frac{A}{2\pi}\cdot \theta r=2πAθ,故可列约束条件为:
A 2 π ⋅ θ ≤ 4.5 ( m ) \frac{A}{2\pi}\cdot \theta \leq4.5(m) 2πAθ4.5(m)
(2).根据题意,在龙头能够进入调头空间前,板凳之间不能相撞,即此时的决策变量应该满足的约束条件为:
∑ i = 1 223 ∑ j = 1 , 223 δ i j = 0 \sum_{i=1}^{223}\sum_{j=1,}^{223}\delta_{ij}=0 i=1223j=1,223δij=0
(3).板凳的宽度为15cm,螺距的宽度能够支持两个板凳并肩移动,即此时螺距应该满足的约束条件为:
A ≥ 30 ( c m ) A \geq30(cm) A30(cm)
(4).调头空间意味着舞龙队的总长度不能长于螺线的总弧长,此时应该满足的约束条件为:
A ∫ 0 32 π 1 + θ 2 d θ ≥ 220 × 222 + 341 A\int_{0}^{32\pi}\sqrt{1+\theta^2}d\theta \geq220\times222+341 A032π1+θ2 dθ220×222+341
(5).此时碰撞时间的求解模型基于问题一中对位置的迭代求解模型,给出问题一中的迭代方程为:
{ ( x i + 1 − x i ) 2 + ( y i + 1 − y i ) 2 = 16 5 2 x i + 1 = 55 2 π ⋅ θ i + 1 ⋅ cos ⁡ ( θ i + 1 ) y i + 1 = 55 2 π ⋅ θ i + 1 ⋅ sin ⁡ ( θ i + 1 ) \begin{cases} (x_{i+1}-x_i)^2+(y_{i+1}-y_i)^2=165^2&\\ x_{i+1}=\frac {55}{2\pi}\cdot\theta_{i+1}\cdot\cos(\theta_{i+1})\\y_{i+1}=\frac {55}{2\pi}\cdot\theta_{i+1}\cdot\sin(\theta_{i+1})&\\ \end{cases} (xi+1xi)2+(yi+1yi)2=1652xi+1=2π55θi+1cos(θi+1)yi+1=2π55θi+1sin(θi+1)
此处 ( x i + 1 , y i + 1 ) (x_{i+1},y_{i+1}) (xi+1,yi+1)为下一龙身前孔的坐标, ( x i , y i ) (x_{i},y_{i}) (xi,yi)为上一龙身前孔的坐标, θ i + 1 \theta_{i+1} θi+1为下一龙身前孔此时的弧度。

综上所述,给出问题三最小螺距单目标优化模型如下:
min ⁡ A s.t. { A 2 π ⋅ θ ≤ 4.5 ( m ) ∑ i = 1 223 ∑ j = 1 , 223 δ i j = 0 A ≥ 30 ( c m ) A ∫ 0 32 π 1 + θ 2 d θ ≥ 220 × 222 + 341 ( x i + 1 − x i ) 2 + ( y i + 1 − y i ) 2 = 16 5 2 x i + 1 = 55 2 π ⋅ θ i + 1 ⋅ cos ⁡ ( θ i + 1 ) y i + 1 = 55 2 π ⋅ θ i + 1 ⋅ sin ⁡ ( θ i + 1 ) \min A\\ \text{s.t.}\begin{cases} \frac{A}{2\pi}\cdot \theta \leq4.5(m)\\ \sum_{i=1}^{223}\sum_{j=1,}^{223}\delta_{ij}=0\\ A \geq30(cm)\\ A\int_{0}^{32\pi}\sqrt{1+\theta^2}d\theta \geq220\times222+341\\ (x_{i+1}-x_i)^2+(y_{i+1}-y_i)^2=165^2&\\ x_{i+1}=\frac {55}{2\pi}\cdot\theta_{i+1}\cdot\cos(\theta_{i+1})\\y_{i+1}=\frac {55}{2\pi}\cdot\theta_{i+1}\cdot\sin(\theta_{i+1})&\\ \end{cases} minAs.t. 2πAθ4.5(m)i=1223j=1,223δij=0A30(cm)A032π1+θ2 dθ220×222+341(xi+1xi)2+(yi+1yi)2=1652xi+1=2π55θi+1cos(θi+1)yi+1=2π55θi+1sin(θi+1)

模型的求解

本题的方程比较复杂且非线性,但是最终结果为一维且搜索空间较小,于是本文在求解的时候采取了带罚函数的模拟退火算法与定步长遍历算法结合的办法,启发式算法可以很好的在解空间内探查到最优解,而变步长遍历算法则可以在解空间较小的情况下遍历空间得到整个函数的分布情况进而查找到最优解。下面是两种算法的求解过程:

带罚函数的双重模拟退火算法

双重模拟退火算法(Dual Annealing)是一种启发式算法,适合用于求解复杂的非线性优化问题。在该问题中,由于目标函数和约束条件都比较复杂,使用双重模拟退火算法可以有效搜索到接近全局最优解的结果。为了处理约束条件,本文引入罚函数,将约束条件违背的程度引入到目标函数中,确保求解过程中尽量满足约束条件。

Step1 设定初始解,初始温度和罚函数

设定初始螺距 A 0 = 30 c m A_0=30cm A0=30cm,初始温度 T 0 = 100 T_0=100 T0=100,设定罚函数因子 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 λ 3 \lambda_3 λ3,其大小为某远大于目标值的数,定义罚函数为:
P ( A ) = λ 1 ⋅ max ⁡ ( 0 , A 2 π ⋅ θ − 4.5 ) + λ 2 ⋅ ( ∑ i = 1 223 ∑ j = 1 , 223 δ i j ) + λ 3 ⋅ max ⁡ ( 0 , 220 × 222 + 341 − A ∫ 0 32 π 1 + θ 2 d θ ) P(A) = \lambda_1 \cdot \max(0, \frac{A}{2\pi}\cdot \theta - 4.5) + \lambda_2 \cdot \left(\sum_{i=1}^{223}\sum_{j=1,}^{223}\delta_{ij}\right) + \lambda_3 \cdot \max(0, 220\times 222 + 341 - A\int_{0}^{32\pi}\sqrt{1+\theta^2}d\theta) P(A)=λ1max(0,2πAθ4.5)+λ2(i=1223j=1,223δij)+λ3max(0,220×222+341A032π1+θ2 dθ)
由此实现对约束条件的处理

Step2 全局搜索

在当前解 x i x_i xi的邻域内生成新解 x i + 1 x_{i+1} xi+1,计算新解的函数值 f ( x i + 1 ) f(x_{i+1}) f(xi+1),如果 f ( x i + 1 ) < f ( x i ) f(x_{i+1})<f(x_i) f(xi+1)<f(xi),则接受新解作为当前解。若不满足该条件,则以概率 P = exp ⁡ ( f ( x i ) − f ( x i + 1 ) T ) P=\exp\left(\frac{f(x_i)-f(x_{i+1})}T\right) P=exp(Tf(xi)f(xi+1))接受新解,随着温度的降低,接受劣解的概率逐渐减小。

Step3 局部搜索

在接受新解后,使用局部优化算法(如最速下降法或梯度下降法)对当前解进行局部优化,以快速收敛到邻域内的局部最优解。

Step4 温度下降

更新温度 T i + 1 = α ⋅ T i T_{i+1}=α⋅T_i Ti+1=αTi,逐步降低温度。

Step5 搜索结束,输出结果

当最终结果收敛时,将搜索得到的结果输出,获得此时的螺距长度。

变步长遍历算法

变步长求解是一种结合了大步长的快速搜索和小步长的精细搜索的优化策略。在开始阶段使用较大的步长快速缩小解的范围,后面逐步缩小步长,通过类似二分查找的方式,精确找到最优解。

Step1 设定初始解和初始步长

设定初始螺距 A 0 = 30 c m A_0=30cm A0=30cm,最大螺距为在通过观察模拟退火算法求解过程基础上确定的边界解 A m a x = 50 c m A_{max}=50cm Amax=50cm,初始步长为 Δ A = 2 c m \Delta A=2cm ΔA=2cm

Step2 大步长快速搜索

从初始螺距 A 0 A_0 A0开始搜索,以 Δ A = 2 c m \Delta A=2cm ΔA=2cm为步长开始遍历,快速搜索解空间直达搜索到 A m a x A_{max} Amax,计算每个搜索点的目标函数值,若当前螺距下的目标函数值优于前面搜索到的最优值,则更新最优值,重复上述过程,直到搜索完初始步长的范围。

Step3 二分精细搜索

经过大步长搜索找到最优螺距 A b e s t A_{best} Abest,在其左右邻域 [ A b e s t − Δ A , A b e s t + Δ A ] [A_{best}-\Delta A,A_{best}+\Delta A] [AbestΔA,Abest+ΔA]内进行搜索,此时设定步长为 Δ A 2 \frac{\Delta A}{2} 2ΔA。重复Step2与Step3的步骤。

Step4 导出搜索结果

当搜索步长缩小到 Δ A 1024 \frac{\Delta A}{1024} 1024ΔA时,其值以达到误差容限内,输出此时的目标函数值 A b e s t A_{best} Abest

问题四

模型的建立

问题四设置盘入螺线的螺距为1.7m,盘入螺线与盘出螺线为中心对称关系,并且舞龙队需要在调头空间内实现调头,其中调头位置在盘入螺线上,调出位置在盘出螺线,即现在确定了调头空间的调入点与调出点,以及调入圆弧与调出圆弧之间的数量关系,在未知圆弧进入点与圆弧出去点的情况下对圆弧曲线的长度进行优化,求解出最短的调头曲线。为了求解这个问题,首先需要求解调头螺线的数学方程,进而通过几何关系建立起调头圆弧的数学模型,根据圆弧的弧度和调头的位置确定整个调头曲线长度的表达式,作为模型的目标函数,然后通过数学模型以及实际板凳的物理模型给出目标函数的约束条件,

调头弧线模型的建立

首先已知盘入螺线的螺距为 1.7 m,盘出螺线与盘入螺线关于螺线中心呈中心对称,故可先求解出盘入螺线 C 1 C_1 C1与盘出螺线 C 2 C_2 C2的表达式分别为:
{ C 1 : r = 170 2 π ⋅ θ C 2 : r = − 170 2 π ⋅ θ \begin{cases} C1:r=\frac{170}{2\pi}\cdot \theta\\ C2:r=-\frac{170}{2\pi}\cdot \theta\\ \end{cases} {C1:r=2π170θC2:r=2π170θ
由于目前只可推出进入调头空间的点与离开调头空间的点,由于两点分别位于中心对称的两螺线与调头区域圆的交点上,所以两点坐标存在中心对称关系,可设进入点为 A ( x A , y A ) A(x_A,y_A) A(xA,yA),离开点为 B ( x B , y B ) B(x_B,y_B) B(xB,yB),则两点满足的方程为:
{ x A + x B = 0 y A + y B = 0 x 2 + y 2 = 45 0 2 \begin{cases} x_A+x_B=0\\ y_A+y_B=0\\ x^2+y^2=450^2 \end{cases} xA+xB=0yA+yB=0x2+y2=4502
由于开始调头的点在盘入螺线和前段圆弧上,且经过该点后龙头前把手运动方程从螺线方程变为圆方程,结束调头的点则相反,故可设开始调头的点为点 C C C,坐标为 ( x C , y C ) (x_C,y_C) (xC,yC),结束调头的点为点 D D D,坐标为 ( x D , y D ) (x_D,y_D) (xD,yD)。其示意图如下图所示:

故可表示调头弧线的总长度 L L L可表示为:
L = A C ⌢ + C D ⌢ + D B ⌢ L=\overset{\LARGE{\frown}}{AC}+\overset{\LARGE{\frown}}{CD}+\overset{\LARGE{\frown}}{DB} L=AC+CD+DB
为确定两圆的圆心位置,需计算出点 C C C处螺线的导数,将其带入曲率半径的公式即可计算出前段圆弧的半径,进而确定后段圆弧半径,即可确定两圆心的位置以及调头弧线的长度。

由于点 C C C位于螺线上,故可先求解螺线的 d x d θ \frac{dx}{d\theta} dθdx d y d θ \frac{dy}{d\theta} dθdy,再通过链式法则即可求解得到 d y d x \frac{dy}{dx} dxdy,计算过程如下:
d x d θ = 170 2 π ⋅ ( cos ⁡ ( θ ) − θ ⋅ sin ⁡ ( θ ) ) d y d θ = 170 2 π ⋅ ( sin ⁡ ( θ ) + θ ⋅ cos ⁡ ( θ ) ) d y d x = d y d θ d x d θ = sin ⁡ ( θ ) + θ ⋅ cos ⁡ ( θ ) cos ⁡ ( θ ) − θ ⋅ sin ⁡ ( θ ) \frac{dx}{d\theta}=\frac{170}{2\pi}\cdot(\cos(\theta)-\theta\cdot\sin(\theta))\\ \frac{dy}{d\theta}=\frac{170}{2\pi}\cdot(\sin(\theta)+\theta\cdot\cos(\theta))\\ \frac{dy}{dx}=\frac{\frac{dy}{d\theta}}{\frac{dx}{d\theta}}=\frac{\sin(\theta)+\theta\cdot\cos(\theta)}{\cos(\theta)-\theta\cdot\sin(\theta)} dθdx=2π170(cos(θ)θsin(θ))dθdy=2π170(sin(θ)+θcos(θ))dxdy=dθdxdθdy=cos(θ)θsin(θ)sin(θ)+θcos(θ)
故点 C C C处的导数为:
y C ′ ( x ) = d y C d x C = d y C d θ C d x C d θ C = sin ⁡ ( θ C ) + θ C ⋅ cos ⁡ ( θ C ) cos ⁡ ( θ C ) − θ ⋅ sin ⁡ ( θ C ) y'_C(x)=\frac{dy_C}{dx_C}=\frac{\frac{dy_C}{d\theta_C}}{\frac{dx_C}{d\theta_C}}=\frac{\sin(\theta_C)+\theta_C\cdot\cos(\theta_C)}{\cos(\theta_C)-\theta\cdot\sin(\theta_C)} yC(x)=dxCdyC=dθCdxCdθCdyC=cos(θC)θsin(θC)sin(θC)+θCcos(θC)
根据互相垂直的直线之间存在 k 1 ⋅ k 2 = − 1 k_1\cdot k_2=-1 k1k2=1可知 C C C点切线的垂线斜率 k w 1 k_{w1} kw1为:
k w 1 = d y C d θ C d x C d θ C = − cos ⁡ ( θ C ) − θ ⋅ sin ⁡ ( θ C ) ) sin ⁡ ( θ C ) + θ C ⋅ cos ⁡ ( θ C k_{w1}=\frac{\frac{dy_C}{d\theta_C}}{\frac{dx_C}{d\theta_C}}=-\frac{\cos(\theta_C)-\theta\cdot\sin(\theta_C))}{\sin(\theta_C)+\theta_C\cdot\cos(\theta_C} kw1=dθCdxCdθCdyC=sin(θC)+θCcos(θCcos(θC)θsin(θC))
同理, D D D点切线的垂线斜率 k w 2 k_{w2} kw2为:
k w 2 = d y D d θ D d x D d θ D = − cos ⁡ ( θ D ) − θ ⋅ sin ⁡ ( θ D ) ) sin ⁡ ( θ D ) + θ D ⋅ cos ⁡ ( θ D ) k_{w2}=\frac{\frac{dy_D}{d\theta_D}}{\frac{dx_D}{d\theta_D}}=-\frac{\cos(\theta_D)-\theta\cdot\sin(\theta_D))}{\sin(\theta_D)+\theta_D\cdot\cos(\theta_D)} kw2=dθDdxDdθDdyD=sin(θD)+θDcos(θD)cos(θD)θsin(θD))
作出切线图后,调头空间中存在如图的几何约束,示意图如下图所示:

其中 r 1 r_1 r1为前段圆的半径, r 2 r_2 r2为后段圆的半径,设两圆圆心与坐标分别为 O 1 ( x O 1 , y O 1 ) O_1(x_{O1},y_{O1}) O1(xO1,yO1) O 2 ( x O 2 , y O 2 ) O_2(x_{O2},y_{O2}) O2(xO2,yO2),此时可依图列出方程组为:
{ x O 1 = x C + 1 k w 1 2 + 1 ⋅ r 1 y O 1 = y C + k w 1 k w 1 2 + 1 ⋅ r 1 x O 2 = x D + 1 k w 2 2 + 1 ⋅ r 2 y O 2 = y D + k w 2 k w 2 2 + 1 ⋅ r 2 r 1 = 2 r 2 ( x O 1 − x O 2 ) 2 + ( y O 1 − y O 2 ) 2 = r 1 + r 2 \begin{cases} x_{O1}=x_C+\frac1{\sqrt{k_{w1}^2+1}}\cdot r_1\\ y_{O1}=y_C+\frac{k_{w1}}{\sqrt{k_{w1}^2+1}}\cdot r_1\\ x_{O2}=x_D+\frac1{\sqrt{k_{w2}^2+1}}\cdot r_2\\ y_{O2}=y_D+\frac{k_{w2}}{\sqrt{k_{w2}^2+1}}\cdot r_2\\ r_1=2r_2&\\ \sqrt{(x_{O1}-x_{O2})^2+(y_{O1}-y_{O2})^2}=r_1+r_2\\ \end{cases} xO1=xC+kw12+1 1r1yO1=yC+kw12+1 kw1r1xO2=xD+kw22+1 1r2yO2=yD+kw22+1 kw2r2r1=2r2(xO1xO2)2+(yO1yO2)2 =r1+r2
求解上述方程组,即可计算得到两圆圆心的坐标。

得到圆心坐标后,则需要再计算出两圆的切点 E E E的坐标,由于已知两圆的圆心坐标和圆心到 E E E点的直线的斜率,故需要通过简单的比例计算就可得到 E E E点的坐标如下:
{ x E = x O 1 + r 1 r 1 + r 2 ⋅ ( x O 2 − x O 1 ) y E = y O 1 + r 1 r 1 + r 2 ⋅ ( y O 2 − y O 1 ) \begin{cases} x_E=x_{O1}+\frac{r1}{r1+r2}\cdot (x_{O2}-x_{O1})\\ y_E=y_{O1}+\frac{r1}{r1+r2}\cdot (y_{O2}-y_{O1}) \end{cases} {xE=xO1+r1+r2r1(xO2xO1)yE=yO1+r1+r2r1(yO2yO1)
下面依据 E E E点的坐标,注意到前段圆弧均为顺时针方向,后段圆弧为逆时针方向,在导出公式中将角度的顺序进行调整,可导出两圆转过的弧度 ϕ 1 \phi_1 ϕ1 ϕ 2 \phi_2 ϕ2为:
{ ϕ 1 = arctan ⁡ ( y C − y O 1 x C − x O 1 ) − arctan ⁡ ( y E − y O 1 x E − x O 1 ) ϕ 2 = arctan ⁡ ( y D − y O 2 x D − x O 2 ) − arctan ⁡ ( y E − y O 2 x E − x O 2 ) \begin{cases} \phi_1=\arctan(\frac{y_C-y_{O1}}{x_C-x_{O1}})-\arctan (\frac{y_E-y_{O1}}{x_E-x_{O1}})\\ \phi_2=\arctan(\frac{y_D-y_{O2}}{x_D-x_{O2}})-\arctan (\frac{y_E-y_{O2}}{x_E-x_{O2}})\\ \end{cases} {ϕ1=arctan(xCxO1yCyO1)arctan(xExO1yEyO1)ϕ2=arctan(xDxO2yDyO2)arctan(xExO2yEyO2)
即可求解出 L L L的表达式为:
L = 170 2 π ∫ θ C θ A 1 + θ 2 d θ + r 1 ⋅ ϕ 1 + r 2 ⋅ ϕ 2 + 170 2 π ∫ θ D θ B 1 + θ 2 d θ L=\frac{170}{2\pi}\int_{\theta_C}^{\theta_A}\sqrt{1+\theta^2}d\theta+r_1\cdot\phi_1+r_2\cdot\phi_2+\frac{170}{2\pi}\int_{\theta_D}^{\theta_B}\sqrt{1+\theta^2}d\theta L=2π170θCθA1+θ2 dθ+r1ϕ1+r2ϕ2+2π170θDθB1+θ2 dθ

建立最短弦长单目标优化模型

前文已经求解出 L L L的表达式,根据题意,需要通过调整圆弧,保持各部分相切在条件下使得调头曲线变短,故可基于此构建最短调头曲线的优化模型,其目标函数为最短调头曲线弧长,约束条件则基于调头区域内需要保持各部分相切以及圆弧之间的几何关系约束。

目标函数与约束条件

目标函数为最短调头曲线弧长,由于前文的推导过程均基于 C C C点与 D D D点的不同坐标,即 θ C 与 θ D \theta_C与\theta_D θCθD,故可视 L L L θ C \theta_C θC θ D \theta_D θD的函数,故目标函数数学表达式为:
min ⁡ L ( θ C , θ D ) = 170 2 π ∫ θ C θ A 1 + θ 2 d θ + r 1 ⋅ ϕ 1 + r 2 ⋅ ϕ 2 + 170 2 π ∫ θ D θ B 1 + θ 2 d θ \min L(\theta_C,\theta_D)=\frac{170}{2\pi}\int_{\theta_C}^{\theta_A}\sqrt{1+\theta^2}d\theta+r_1\cdot\phi_1+r_2\cdot\phi_2+\frac{170}{2\pi}\int_{\theta_D}^{\theta_B}\sqrt{1+\theta^2}d\theta minL(θC,θD)=2π170θCθA1+θ2 dθ+r1ϕ1+r2ϕ2+2π170θDθB1+θ2 dθ
其中 r 1 , r 2 , ϕ 1 , ϕ 2 r_1,r_2,\phi_1,\phi_2 r1,r2,ϕ1,ϕ2均可由 θ C \theta_C θC θ D \theta_D θD确定, θ A \theta_A θA θ B \theta_B θB为定值。

约束条件在前文调头弧线模型的建立已经进行了详细的推导,得出了方程组(44),(45),(46),(47)与(48),方程组本问中需要的约束条件。

综上所述,最短弦长单目标优化模型建立如下:
min ⁡ θ C , θ D L ( θ C , θ D ) = 170 2 π ∫ θ C θ A 1 + θ 2 d θ + r 1 ⋅ ϕ 1 + r 2 ⋅ ϕ 2 + 170 2 π ∫ θ D θ B 1 + θ 2 d θ s.t. { k w 1 = − cos ⁡ ( θ C ) − θ ⋅ sin ⁡ ( θ C ) ) sin ⁡ ( θ C ) + θ C ⋅ cos ⁡ ( θ C k w 2 = − cos ⁡ ( θ D ) − θ ⋅ sin ⁡ ( θ D ) ) sin ⁡ ( θ D ) + θ D ⋅ cos ⁡ ( θ D ) x O 1 = x C + 1 k w 1 2 + 1 ⋅ r 1 y O 1 = y C + k w 1 k w 1 2 + 1 ⋅ r 1 x O 2 = x D + 1 k w 2 2 + 1 ⋅ r 2 y O 2 = y D + k w 2 k w 2 2 + 1 ⋅ r 2 r 1 = 2 r 2 ( x O 1 − x O 2 ) 2 + ( y O 1 − y O 2 ) 2 = r 1 + r 2 x E = x O 1 + r 1 r 1 + r 2 ⋅ ( x O 2 − x O 1 ) y E = y O 1 + r 1 r 1 + r 2 ⋅ ( y O 2 − y O 1 ) ϕ 1 = arctan ⁡ ( y C − y O 1 x C − x O 1 ) − arctan ⁡ ( y E − y O 1 x E − x O 1 ) ϕ 2 = arctan ⁡ ( y D − y O 2 x D − x O 2 ) − arctan ⁡ ( y E − y O 2 x E − x O 2 ) \min_{\theta_C,\theta_D} L(\theta_C,\theta_D)=\frac{170}{2\pi}\int_{\theta_C}^{\theta_A}\sqrt{1+\theta^2}d\theta+r_1\cdot\phi_1+r_2\cdot\phi_2+\frac{170}{2\pi}\int_{\theta_D}^{\theta_B}\sqrt{1+\theta^2}d\theta \\ \text{s.t.} \begin{cases} k_{w1}=-\frac{\cos(\theta_C)-\theta\cdot\sin(\theta_C))}{\sin(\theta_C)+\theta_C\cdot\cos(\theta_C}\\ k_{w2}=-\frac{\cos(\theta_D)-\theta\cdot\sin(\theta_D))}{\sin(\theta_D)+\theta_D\cdot\cos(\theta_D)}\\ x_{O1}=x_C+\frac1{\sqrt{k_{w1}^2+1}}\cdot r_1\\ y_{O1}=y_C+\frac{k_{w1}}{\sqrt{k_{w1}^2+1}}\cdot r_1\\ x_{O2}=x_D+\frac1{\sqrt{k_{w2}^2+1}}\cdot r_2\\ y_{O2}=y_D+\frac{k_{w2}}{\sqrt{k_{w2}^2+1}}\cdot r_2\\ r_1=2r_2&\\ \sqrt{(x_{O1}-x_{O2})^2+(y_{O1}-y_{O2})^2}=r_1+r_2\\ x_E=x_{O1}+\frac{r1}{r1+r2}\cdot (x_{O2}-x_{O1})\\ y_E=y_{O1}+\frac{r1}{r1+r2}\cdot (y_{O2}-y_{O1})\\ \phi_1=\arctan(\frac{y_C-y_{O1}}{x_C-x_{O1}})-\arctan (\frac{y_E-y_{O1}}{x_E-x_{O1}})\\ \phi_2=\arctan(\frac{y_D-y_{O2}}{x_D-x_{O2}})-\arctan (\frac{y_E-y_{O2}}{x_E-x_{O2}})\\ \end{cases} θC,θDminL(θC,θD)=2π170θCθA1+θ2 dθ+r1ϕ1+r2ϕ2+2π170θDθB1+θ2 dθs.t. kw1=sin(θC)+θCcos(θCcos(θC)θsin(θC))kw2=sin(θD)+θDcos(θD)cos(θD)θsin(θD))xO1=xC+kw12+1 1r1yO1=yC+kw12+1 kw1r1xO2=xD+kw22+1 1r2yO2=yD+kw22+1 kw2r2r1=2r2(xO1xO2)2+(yO1yO2)2 =r1+r2xE=xO1+r1+r2r1(xO2xO1)yE=yO1+r1+r2r1(yO2yO1)ϕ1=arctan(xCxO1yCyO1)arctan(xExO1yEyO1)ϕ2=arctan(xDxO2yDyO2)arctan(xExO2yEyO2)

位置速度计算模型基于调头弧线的优化

在问题一与问题二中,求解板凳龙各个圆孔的位置与速度,按照本文的思路需要计算螺线的积分,但是第四问中路线修改为螺线与双圆弧进行拼接,无法直接套用问题一中对于位置的求解模型,于是在第一问的基础上进行了优化,以 C C C点处的弧度 θ C \theta_C θC D D D点弧度 θ D \theta_D θD作为盘入圆弧与盘出圆弧的范围限制,在从 [ θ D , θ C ] [\theta_D,\theta_C] [θD,θC]的弧度范围内,设定映射关系 g ( θ ) g(\theta) g(θ)表述双圆弧段的板凳位置计算,则整个板凳龙所处位置与弧度的关系可表示为函数 f ( x , y ) f(x,y) f(x,y)如下:
f ( x , y ) = { r ( θ ) , if θ ∈ [ θ C , 32 π ] g ( θ ) , if θ ∈ [ θ D , θ C ] − r ( θ ) , if θ ∈ [ − 32 π , θ D ] f(x,y)=\begin{cases}r(\theta),&\text{if}\theta\in[\theta_C,32\pi]\\g(\theta),&\text{if}\theta\in[\theta_D,\theta_C]\\-r(\theta),&\text{if}\theta\in[-32\pi,\theta_D]\end{cases} f(x,y)= r(θ),g(θ),r(θ),ifθ[θC32π]ifθ[θD,θC]ifθ[32πθD]
其中 r ( θ ) r(\theta) r(θ) − r ( θ ) -r(\theta) r(θ)分别对应前段螺线和后段螺线的位置计算函数,可沿用第一问模型,对于 g ( θ ) g(\theta) g(θ),求解过程如下:

由于驶入圆弧前与盘出圆弧后的位置 C ( x C , y C ) C(x_C,y_C) C(xC,yC) D ( x D , y D ) D(x_D,y_D) DxD,yD)可根据最短路径 L L L求解导出,由此可导出对应的 θ C \theta_C θC θ D \theta_D θD,进而求解出圆弧部分总长度 S = ϕ 1 ⋅ r 1 + ϕ 2 ⋅ r 2 S=\phi_1\cdot r_1+\phi_2\cdot r_2 S=ϕ1r1+ϕ2r2.

其中在整个圆弧路线中,盘入点弧度 θ C \theta_C θC为其中弧度的最大值,即 θ m a x \theta_{max} θmax,同理盘出点 θ D \theta_D θD为其中弧度的最小值,即 θ m i n \theta_{min} θmin,故可定义映射系数 k k k,表示螺旋线开始到当前角度 θ \theta θ 的路径长度相对于整个双圆弧路径长度的比例,其公式为:
k = θ − θ m i n θ m a x − θ m i n k=\frac{\theta-\theta_{min}}{\theta_{max}-\theta_{min}} k=θmaxθminθθmin
基于比例系数与映射关系,可计算出此时在圆弧部分前进路程与后段圆弧长度的差值 Δ x \Delta x Δx及其含义为:
Δ x = k ⋅ S − ϕ 2 ⋅ r 2 \Delta x=k\cdot S-\phi_2\cdot r_2 Δx=kSϕ2r2
其中:

  • 如果 Δ x > 0 \Delta x >0 Δx>0,则当前点在前段圆弧上;
  • 如果 Δ x ≤ 0 \Delta x \leq 0 Δx0,则当前点在后段圆弧上。

若该点在前段圆弧上

首先需求解出该点在前段圆弧上的角度占比 η \eta η的表达式为:
η = k S − r 2 ϕ 2 2 π r 1 \eta=\frac{kS-r_2\phi_2}{2\pi r_1} η=2πr1kSr2ϕ2
最终导出该点的极坐标下的极角 θ 0 \theta_0 θ0表达为:
θ 0 = arctan ⁡ ( y E − y O 1 x E − x O 1 ) + 2 π η \theta_0=\arctan (\frac{y_E-y_{O1}}{x_E-x_{O1}})+2\pi\eta θ0=arctan(xExO1yEyO1)+2πη
最终将 θ 0 \theta_0 θ0与圆心 O 1 ( x O 1 , y O 1 ) O_1(x_{O1},y_{O1}) O1(xO1yO1)的坐标结合即可推导出此时该点的位置坐标为:
f ( x , y ) = { x = x O 1 + r 1 cos ⁡ θ 0 y = y O 1 + r 1 sin ⁡ θ 0 f(x,y)= \begin{cases} x=x_{O1}+r_1\cos\theta_0\\ y=y_{O1}+r_1\sin\theta_0 \end{cases} f(x,y)={x=xO1+r1cosθ0y=yO1+r1sinθ0
若该点在后段圆弧上

推导过程与前段圆弧类似,只是将其中相对的位置计算点改为 O 2 ( x 2 , y 2 ) O_2(x_2,y_2) O2(x2,y2),并且由于其在后段圆弧上,投影范围从 [ θ D , θ C ] [\theta_D,\theta_C] [θD,θC],则其圆弧长度小于后段圆弧的总长,故公式表达修改如下:
η = r 2 ϕ 2 − k S 2 π r 1 \eta=\frac{r_2\phi_2-kS}{2\pi r_1} η=2πr1r2ϕ2kS

θ 0 = arctan ⁡ ( y E − y O 2 x E − x O 2 ) + 2 π η \theta_0=\arctan (\frac{y_E-y_{O2}}{x_E-x_{O2}})+2\pi\eta θ0=arctan(xExO2yEyO2)+2πη

f ( x , y ) = { x = x O 2 + r 2 cos ⁡ θ 0 y = y O 2 + r 2 sin ⁡ θ 0 f(x,y)= \begin{cases} x=x_{O2}+r_2\cos\theta_0\\ y=y_{O2}+r_2\sin\theta_0 \end{cases} f(x,y)={x=xO2+r2cosθ0y=yO2+r2sinθ0

最终导出位置计算的全曲线表达式为:
f ( x , y ) = { r ( θ ) i f θ ∈ [ θ C , 32 π ] { x = x O 1 + r 1 cos ⁡ ( θ 0 ) , y = y O 1 + r 1 sin ⁡ ( θ 0 ) , i f θ ∈ [ θ D , θ C ] a n d Δ x > 0 { x = x O 2 + r 2 cos ⁡ ( θ 0 ) , y = y O 2 + r 2 sin ⁡ ( θ 0 ) , i f θ ∈ [ θ D , θ C ] a n d Δ x ≤ 0 − r ( θ ) i f θ ∈ [ − 32 π , θ D ] \begin{aligned}f(x,y)=\begin{cases}r(\theta)&\mathrm{if~}\theta\in[\theta_C,32\pi]\\\begin{cases}x=x_{O1}+r_1\cos(\theta_0),\\y=y_{O1}+r_1\sin(\theta_0),\end{cases}&\mathrm{if~}\theta\in[\theta_D,\theta_C]\mathrm{~and~}\Delta x>0 \\\begin{cases}x=x_{O2}+r_2\cos(\theta_0),\\y=y_{O2}+r_2\sin(\theta_0),\end{cases}&\mathrm{if~}\theta\in[\theta_D,\theta_C]\mathrm{~and~}\Delta x\leq0\\-r(\theta)&\mathrm{if~}\theta\in[-32\pi,\theta_D]&\end{cases}\end{aligned} f(x,y)= r(θ){x=xO1+r1cos(θ0),y=yO1+r1sin(θ0),{x=xO2+r2cos(θ0),y=yO2+r2sin(θ0),r(θ)if θ[θC,32π]if θ[θD,θC] and Δx>0if θ[θD,θC] and Δx0if θ[32π,θD]
由于数学公式过于繁琐,故在本问中速度的求解模型的建立只采取了问题一中以极小时间步长 Δ t \Delta t Δt进行数值模拟的方法,具体过程将置于模型的求解中进行。

模型的求解

本题中需要求解的部分是单目标优化模型最优值的求解与速度计算小步长数值模拟的求解。对于本题最短弦长单目标优化模型的求解,由于主要决策变量仅为 θ C \theta_C θC θ D \theta_D θD,计算量较小,故采取定步长搜索策略,具体步骤如下:

Step1 设定初始解向量和初始步长

设定初始解 [ θ C 0 , θ D 0 ] [\theta_{C0},\theta_{D0}] [θC0,θD0] [ π , π ] [\pi,\pi] [π,π],步长均为 2 π 360 \frac{2\pi}{360} 3602π,即角度制中的 1 ° 1°

Step2 遍历解空间

采用双层循环的方式遍历解空间,通过固定其中一个变量,改变另一个变量,并计算每一对 [ θ C , θ D ] [\theta_C,\theta_D] [θC,θD]的目标函数值,若比之前的最优值更好,则更新最优解和最优值。

Step3 得到最优解

将最终保存的最优解与最优值导出。

对于问题四速度的求解,仍沿用问题一中提出的求解办法,具体步骤参照问题一模型的求解部分。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx Rewrite 相关功能

一、Nginx Rewrite 概述 定义 Nginx 的 Rewrite 模块允许对请求的 URI 进行重写操作。它可以基于一定的规则修改请求的 URL 路径&#xff0c;然后将请求定向到新的 URL 地址&#xff0c;这在很多场景下都非常有用&#xff0c;比如实现 URL 美化、网站重构后的 URL 跳转等。主要…

GA-Kmeans-Transformer时序聚类+状态识别组合模型

创新研究亮点&#xff01;GA-Kmeans-Transformer时序聚类状态识别组合模型 目录 创新研究亮点&#xff01;GA-Kmeans-Transformer时序聚类状态识别组合模型效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.创新研究亮点&#xff01;GA-Kmeans-Transformer时序聚类状态识…

最新的强大的文生视频模型Pyramid Flow 论文阅读及复现

《PYRAMIDAL FLOW MATCHING FOR EFFICIENT VIDEO GENERATIVE MODELING》 论文地址&#xff1a;2410.05954https://arxiv.org/pdf/2410.05954 项目地址&#xff1a; jy0205/Pyramid-Flow&#xff1a; 用于高效视频生成建模的金字塔流匹配代码https://github.com/jy0205/Pyram…

阻塞队列BlockingQueue实战及其原理分析

1. 阻塞队列介绍 1.1 队列 是限定在一端进行插入&#xff0c;另一端进行删除的特殊线性表。先进先出(FIFO)线性表。允许出队的一端称为队头&#xff0c;允许入队的一端称为队尾。 数据结构演示网站&#xff1a;https://www.cs.usfca.edu/~galles/visualization/Algorithms.ht…

hadoop搭建

前言 一般企业中不会使用master slave01 slave02来命名 vmware创建虚拟机 打开vmware软件&#xff0c;新建虚拟机 典型 稍后安装系统 选择centos7 虚拟机名称和安放位置自行选择&#xff08;最小化安装消耗空间较少&#xff09; 默认磁盘大小即可 自定义硬件 选择centos7的i…

测试 - 1 ( 9000 字详解 )

一&#xff1a; 测试入门 测试是指运用特定的方法、手段或工具&#xff0c;对某一对象进行验证、检查或评估&#xff0c;判断其是否符合预期标准或目标。例如&#xff0c;修理好一盏灯后通过按开关测试其是否正常工作&#xff1b;通过一次数学测验评估学生对代数知识的掌握程度…

【MATLAB第110期】#保姆级教学 | 基于MATLAB的PAWN全局敏感性分析方法(无目标函数)含特征变量置信区间分析

【MATLAB第110期】#保姆级教学 | 基于MATLAB的PAWN全局敏感性分析方法&#xff08;无目标函数&#xff09;含特征变量置信区间分析 一、介绍 PAWN&#xff08;Probabilistic Analysis With Numerical Uncertainties&#xff09;是一种基于密度的全局敏感性分析&#xff08;Gl…

DX12 快速教程(2) —— 渲染天蓝色窗口

快速导航 新建项目 "002-DrawSkyblueWindow"DirectX 12 入门1. COM 技术&#xff1a;DirectX 的中流砥柱什么是 COM 技术COM 智能指针 2.创建 D3D12 调试层设备&#xff1a;CreateDebugDevice什么是调试层如何创建并使用调试层 3.创建 D3D12 设备&#xff1a;CreateD…

【合作原创】使用Termux搭建可以使用的生产力环境(八)

前言 在上一篇【合作原创】使用Termux搭建可以使用的生产力环境&#xff08;七&#xff09;-CSDN博客中我们讲到了安装百度网盘、VS Code还有java&#xff0c;这篇我打算讲一下最后的编程&#xff0c;还有输入法相关问题解决。众所周知我的本职工作是Java程序猿&#xff0c;因…

VLMs之Gemma 2:PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略

VLMs之Gemma 2&#xff1a;PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;2024年12月4日&#xff0c;PaliGemma 2是一个基于Gemma 2系列语言模型的开源视觉语言模型 (VLM) 家族。PaliGemma 2 通过提供一个规模化、多功能且开源的VLM家族&#xff0c;…

24.12.26 SpringMVCDay01

SpringMVC 也被称为SpringWeb Spring提供的Web框架,是在Servlet基础上,构建的框架 SpringMVC看成是一个特殊的Servlet,由Spring来编写的Servlet 搭建 引入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc<…

国产 HighGo 数据库企业版安装与配置指南

国产 HighGo 数据库企业版安装与配置指南 1. 下载安装包 访问 HighGo 官方网站&#xff08;https://www.highgo.com/&#xff09;&#xff0c;选择并下载企业版安装包。 2. 上传安装包到服务器 将下载的安装包上传至服务器&#xff0c;并执行以下命令&#xff1a; [rootmas…

Java程序设计,使用属性的选项库,轻松实现商品检索的复杂查询(上)

一、背景 本文我们以某商城的商品检索为例,说一说如何使用属性及选项,实现复杂的逻辑表达式的查询。 先贴图,总结出业务需求。 可以通过一系列属性及选项的组合,过滤出用户想要的商品列表。 1、属性 上文中的品牌、分类、屏幕尺寸、CPU型号、运行内存、机身内存、屏幕材…

机器学习(二)-简单线性回归

文章目录 1. 简单线性回归理论2. python通过简单线性回归预测房价2.1 预测数据2.2导入标准库2.3 导入数据2.4 划分数据集2.5 导入线性回归模块2.6 对测试集进行预测2.7 计算均方误差 J2.8 计算参数 w0、w12.9 可视化训练集拟合结果2.10 可视化测试集拟合结果2.11 保存模型2.12 …

WHAT KAN I SAY?Kolmogorov-Arnold Network (KAN)网络结构介绍及实战(文末送书)

一、KAN网络介绍 1.1 Kolmogorov-Arnold Network (KAN)网络结构的提出 2024年4月&#xff0c;来自MIT、加州理工学院、东北大学等团队的研究&#xff0c;引爆了一整个科技圈&#xff1a;Yes We KAN&#xff01; 这种创新方法挑战了多层感知器(Multilayer Perceptron&#xff…

YOLO11改进-模块-引入星型运算Star Blocks

当前网络设计中&#xff0c;“星型运算”&#xff08;逐元素乘法&#xff09;的应用原理未被充分探究&#xff0c;潜力有待挖掘。为解决此问题&#xff0c;我们引入 Star Blocks&#xff0c;其内部由 DW - Conv、BN、ReLU 等模块经星型运算连接&#xff0c;各模块有特定参数。同…

3.银河麒麟V10 离线安装Nginx

1. 下载nginx离线安装包 前往官网下载离线压缩包 2. 下载3个依赖 openssl依赖&#xff0c;前往 官网下载 pcre2依赖下载&#xff0c;前往Git下载 zlib依赖下载&#xff0c;前往Git下载 下载完成后完整的包如下&#xff1a; 如果网速下载不到请使用网盘下载 通过网盘分享的文件…

【理解机器学习中的过拟合与欠拟合】

在机器学习中&#xff0c;模型的表现很大程度上取决于我们如何平衡“过拟合”和“欠拟合”。本文通过理论介绍和代码演示&#xff0c;详细解析过拟合与欠拟合现象&#xff0c;并提出应对策略。主要内容如下&#xff1a; 什么是过拟合和欠拟合&#xff1f; 如何防止过拟合和欠拟…

【婚庆摄影小程序设计与实现】

摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。所以各大互联网厂商都瞄准移动互联网这个潮…

12.26 学习卷积神经网路(CNN)

完全是基于下面这个博客来进行学习的&#xff0c;感谢&#xff01; ​​【深度学习基础】详解Pytorch搭建CNN卷积神经网络LeNet-5实现手写数字识别_pytorch cnn-CSDN博客 基于深度神经网络DNN实现的手写数字识别&#xff0c;将灰度图像转换后的二维数组展平到一维&#xff0c;…