题目

1、为地对空导弹设计追踪算法,评价指标:越短时间击中目标越好;
2、为飞行目标设计机动规避算法。提示:如,规避算法可以采取调整飞行方向尽量背离导弹迫近方向;
3、任选编程语言建立演示系统并研究问题:上述对抗算法条件下,分析不同飞行速度、不同高度、不同距离z的最佳击落策略。
提示:
策略1:可以建立不同坐标(x0,y0,z0)=》临界速度v0
,建立数据集,然后尝试通过神经网络建立反演关系(v0,y0,z0)=>x0*,效果不好;
策略2:即时策略,if(checkv0(craft.x, craft.y, craft.z, craft.v)) Then releaseflag = True。
也可考虑其他策略。
附参数条件:
1、飞行器目标可设定高度5-20km,飞行速度400-800m/s,速度大小不变;但可在飞行水平面机动,机动转向最大速度为0.1rad/s;
2、导弹初速800m/s,风阻f=-bV, b=0.02m,m为导弹质量;重力加速度9.81m/s^2;
3、导弹点火提供前进方向推进力,单次推进可持续2s:f=ma, a=100m/s^2;最多可以提供3次点火推进;
4、导弹基地雷达感知范围40km。(如为可移动的导弹车也可另行考虑,选做,作为加分项:+20%成绩直至满分)
5、导弹发射后(不发射飞行器亦无法感知),飞行器感知导弹范围为20km,导弹进入该范围即启动机动规避。
特别注意:飞行目标可以在飞行平面转向,转向最大速度为0.1rad/s;不考虑飞行目标垂直方向机动。

飞行器动力学模型推导

设飞行器的位置矢量为 $\vec{P}$,速度矢量为 $\vec{V}$,偏航角为 $\theta$,加速度为 $a$,角加速度为 $\dot{\theta}$。

在 $dt$ 时间内,飞行器的位置和速度矢量变化量可以表示为:

$\Delta \vec{P} = \vec{V} dt$

$\Delta \vec{V} = \vec{a} dt$

为了计算加速度,我们需要首先计算出飞行器的加速度矢量 $\vec{a}$。在偏航运动中,飞行器在水平面内进行转向运动,因此只有垂直于速度矢量的分量会引起加速度变化。设向心加速度为 $a_c$,则有:

$a_c = \frac{V^2}{R}$

其中 $R$ 为转弯半径,由下式给出:

$R = \frac{V^2}{\dot{\theta}}$

因此,向心加速度可以表示为:

$a_c = V \dot{\theta}$

根据正弦定理,飞行器的偏航角变化量为:

$\Delta \theta = \dot{\theta} dt = \arcsin\left(\frac{\Delta V}{V}\right)$

根据角速度定义,我们有:

$\dot{\theta} = \frac{\Delta \theta}{dt}$

联立以上式子,可以解出速度变化量 $\Delta V$:

$\Delta V = V \sin(\dot{\theta} dt)$

于是,飞行器的加速度矢量可以表示为:

$\vec{a} = \begin{pmatrix} 0 \ a_c \end{pmatrix} = \begin{pmatrix} 0 \ V \dot{\theta} \end{pmatrix}$

最后,可以计算出飞行器的位置和速度矢量:

$\vec{P}_{t+dt} = \vec{P}_t + \vec{V}_t dt$

$\vec{V}_{t+dt} = \vec{V}_t + \vec{a}_t dt$

其中 $\vec{P}_t$、$\vec{V}_t$、$\vec{a}_t$ 分别表示时刻 $t$ 的位置、速度和加速度矢量。


飞行器在飞行水平面机动,机动转向最大速度为0.1rad/s,则可以计算出飞行器的加速度大小为:

$a_c = V \dot{\theta} = V \times 0.1 = 0.1V$

由于速度大小不变,所以飞行器的加速度矢量可以表示为:

$\vec{a} = \begin{pmatrix} 0 \ a_c \end{pmatrix} = \begin{pmatrix} 0 \ 0.1V \end{pmatrix}$

因此,在 $dt$ 时间内,飞行器的位置和速度矢量变化量可以表示为:

$\Delta \vec{P} = \vec{V} dt$

$\Delta \vec{V} = \vec{a} dt = \begin{pmatrix} 0 \ 0.1V \end{pmatrix} dt$

将变化量加到原来的位置和速度矢量上,即可得到 $dt$ 后的位置和速度矢量:

$\vec{P}_{t+dt} = \vec{P}_t + \vec{V}_t dt$

$\vec{V}_{t+dt} = \vec{V}_t + \begin{pmatrix} 0 \ 0.1V \end{pmatrix} dt$

其中 $\vec{P}_t$、$\vec{V}_t$ 分别表示时刻 $t$ 的位置和速度矢量。


飞行器偏航运动是指飞行器绕垂直于飞行方向的轴线(称为偏航轴)进行转向运动。在转向运动中,飞行器的速度方向发生变化,从而引起加速度的变化。为了计算飞行器的位置和速度矢量变化量,我们需要先计算出飞行器的加速度矢量。

在偏航运动中,飞行器在水平面内进行转向运动,因此只有垂直于速度矢量的分量会引起加速度变化。设向心加速度为 $a_c$,则有:

$a_c = \frac{V^2}{R}$

其中 $R$ 为转弯半径,由下式给出:

$R = \frac{V^2}{\dot{\theta}}$

因此,向心加速度可以表示为:

$a_c = V \dot{\theta}$

根据正弦定理,飞行器的偏航角变化量为:

$\Delta \theta = \dot{\theta} dt = \arcsin\left(\frac{\Delta V}{V}\right)$

根据角速度定义,我们有:

$\dot{\theta} = \frac{\Delta \theta}{dt}$

联立以上式子,可以解出速度变化量 $\Delta V$:

$\Delta V = V \sin(\dot{\theta} dt)$

最后,可以计算出飞行器的位置和速度矢量:

$\vec{P}_{t+dt} = \vec{P}_t + \vec{V}_t dt$

$\vec{V}_{t+dt} = \vec{V}_t + \vec{a}_t dt$

其中 $\vec{P}_t$、$\vec{V}_t$、$\vec{a}_t$ 分别表示时刻 $t$ 的位置、速度和加速度矢量。


情况一:飞机不自主规避、导弹不加速

已知:飞机飞行高度、


这行代码是计算偏航角的变化量,它的具体实现是先用 Math.Asin() 函数计算出当前速度向量的 y 分量在速度向量的模长上的正弦值,然后再乘上速度向量的 x 分量的符号(即 -1 或 1),最后再乘上时间步长 dt 得到偏航角的变化量 deltaTheta。

偏航角变化量的计算公式为:

$$\Delta\theta = \arcsin\left(\frac{v_y}{v}\right) \times \mathrm{sign}(v_x) \times \Delta t$$

其中,$v$ 是速度向量的模长,$v_x$ 和 $v_y$ 分别是速度向量在 $x$ 轴和 $y$ 轴上的分量。

后续有时间再重新写一篇完整的吧,不想搞了