导弹击落飞行器
题目
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$ 轴上的分量。