题目
在约10000米的高空的某边长为160公里的正方形区域内,经常有若干架飞机作水平飞行,区域内每架飞机的位置和速度向量均有计算机记录其数据,以便进行飞行管理。当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判断是否会与区域内的飞机发生碰撞,如果会碰撞,则应计算如何调整每架(包括新进入的)飞机飞行角度的方向角,以避免碰撞。现假定条件如下:
①不碰撞的标准为任意两架飞机的距离大于8公里
②飞机飞行方向角调整的幅度不应该超过30度
③所有飞机飞行速度均为每小时800公里
④进入该区域的飞机在到达区域边缘时与区域内飞机的距离应在60公里以上
⑤最多需考虑6架飞机
⑥不必考虑飞机离开此区域后的情况
请你对这个碰撞的飞行管理问题建立数学模型,列出计算步骤,要求飞机飞行方向角调整的幅度尽量小。并对一下数据进行计算(方向角误差不超过0.01°)
建模过程
1.问题重述
此题的目的是通过调整区域内(包括即将进入区域)的飞机的飞行角度,避免其在区域内飞行过程中发生碰撞,且要求飞行角度调整尽可能小。
2.模型假设
(1)假设区域内所有飞机都沿水平直线正常飞行(不考虑意外坠毁等情况)。
(2)若飞机需要进行飞行角度调整,则假定在角度调整过程中飞机速度不变。
(3)不考虑天气状况(不稳定气流,暴雨等)对飞机飞行造成的影响。
(4)假设新的飞机进入区域边缘时,区域内其他飞机的飞行方向和角度都合适。
(5)假设每架飞机最多只改变一次飞行角度。
(6)飞机进入边缘时就对飞机的方向角进行调整。
3.符号解释
4.模型建立
飞机在10000米的高空,边长为160公里的正方形区域内飞行,因飞行高度与此题求解无关,所以可以不考虑天空高度,建立xoy平面直角坐标系模拟飞机的飞行区域。
以飞机每一时刻的所在点为圆心,4公里为半径绘制圆形,区域中的圆形相交等价于飞机发生碰撞。
因为飞机在飞行过程中的位置受飞行角度,飞行时间的影响,但飞行角度在新的飞机进入区域的那一刻就会进行调整且在飞行过程中固定,所以飞机的位置坐标可以看做飞行时间t的函数。
此题为优化问题,目标函数为 。6个约束条件等价的数学约束如下:
模型求解
hwf1:目标函数
function y=hwf1(seta)
for i=1:6
y=seta(i).^2;
end
end
hw3_main:主程序
clear,clc;
x0=zeros(1,6);
lb=zeros(1,6);
ub=[(pi/6).^2 (pi/6).^2 (pi/6).^2 (pi/6).^2 (pi/6).^2 (pi/6).^2];
[x,fval]=fmincon(@hwf1,x0,[],[],[],[],lb,ub,@hwf2)
hwf2:非线性约束
function [c,ceq]=hwf2(seta)
m=[150 85 150 145 130 0];
n=[140 85 155 50 150 0];
seta0 = [243 236 220.5 159 230 52]*pi/180;
c=[];x=[];y=[];
cc=cos(seta0+seta);ss=sin(seta0+seta);
for t=0:0.001:160*sqrt(2)/800
for i=1:length(m)
for j=i+1:length(m)
c=[c 64-((m(i)-m(j)+800*t*(cc(i)-cc(j)))^2+(n(i)-n(j)+800*t*(ss(i)-ss(j)))^2)];
end
end
end
ceq=0;
end