资源描述
数学建模竞赛案例选讲,飞行管理问题,1995年A题,飞行管理问题(,1995,年全国大学生数学建模竞赛试题,A,),问题:在约,10000,米高空的正方形区域内,有若干架飞机作水平飞行。区域内每架飞机的位置和速度向量均由计算机记录数据,以便进行飞行管理,当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判别是否会与区域内的飞机发生碰撞。如果会碰撞,则应计算如何调整各架(包括新进入的)飞机飞行的方向角,以避免碰撞。,假定条件,:,1.,不碰撞的标准是任意两架飞机的距离大于,8km,;,2.,飞机飞行方向角调整幅度不应超过,30,度,而要尽可能小;,3.,所有飞机的飞行速度为,800km/h,,,不受其他因素影响;,4.,进入该区域的飞机在到达边缘时,与该区域内的飞机的距离应在,60km,以上;,5.,不考虑飞机离开区域后的情况;,6.,建模时暂考虑,6,架飞机;,问题的提出:,请你对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方向角误差不超过,0.01,度),要求飞机的方向角调整的幅度尽量小。,设该,区域,4,个顶点的坐标为,(0,,,0),(160,,,0),(160,,,160),(0,,,160,),记录数据如下表(其中方向角指飞行方向与,x,轴正向夹角,),飞机编号,横坐标,x,纵坐标,y,方向角度,1,150,140,243,2,85,85,236,3,150,155,220.5,4,145,50,159,5,130,150,230,新,进入,0,0,52,问题分析,根据题目的条件,可将飞机飞行的空域视为二维平面,xoy,中的一个正方形,顶点在,(0,,,0),(160,,,0),(160,,,160),(0,,,160,)。各架飞机的飞行方向角为飞行方向与,x,轴正向夹角(转角)。根据两飞机不碰撞的标准为二者距离大于,8km,,,可将每架飞机视为一个以飞机为圆心、以,4,为半径的圆状物体(每架飞机在空域中的状态由圆心的位置矢量和飞行速度矢量确定)。这样两架飞机是否碰撞就化为两圆在运动中是否相交的问题。两圆是否相交只要讨论它们的相对运动即可。,C,A,B,D,n,i,m,i,l,i,j,ij,ij,ij,ij,v,ij,i,j,建模时补充假定条件,:,1.,飞机在所定区域内作直线飞行,不偏离航向;,2.,飞机管理系统内不发生意外,如发动机失灵,或其他意外原因迫,使飞机改变航向;,4.,飞机管理系统发出的指令应被飞机立即执行,即认为转向是瞬间,完成的(忽略飞机转向的影响,即转弯半径和转弯时间的影响);,3.,飞机进入区域边缘时,立即作出计算,每架飞机按照计算后的指示立即作方向角改变;,5.,每架飞机在在整个过程中指点改变一次方向,6.,新飞机进入区域时,已在区域内部的飞机的飞行方向已调整合适,不会碰撞;,7.,对每架飞机方向角的相同调整量的满意程度是一样的。,模型的建立,(,1,)圆状模型,A,B,D,n,i,m,i,l,i,j,ij,ij,ij,ij,v,ij,i,j,采用相对速度作为研究对象,符号说明:,i,j,第,i,,第,j,架飞机的圆心;,ij,第,i,,第,j,架飞机的碰撞角,,ij,=,ji,;,v,ij,第,i,架飞机相对第,j,架飞机的相对飞行速度,;,l,ij,第,i,,第,j,架飞机的圆心距,i,第,i,架飞机的飞行方向与,x,轴正向夹角(逆时针为正),x,i,第,i,架飞机的位置矢量,v,i,第,i,架飞机的的速度矢量,ij,第,i,飞机对第,j,架飞机的相对速度与两架飞机圆心连线的夹角(逆时针为正),不碰撞,|,ij,|,ij,(2),由圆状模型导出的方程,讨论,ij,的改变量与第,i,第,j,两架飞机飞行方向角改变量,i,j,的关系,由,题目条件知,|v,i,|=A=800,,,可用复数表示速度,设第,i,,,j,飞机飞行方向改变前的速度分别为,改变后的速度分别为,改变前后相对速度分别为,两者之商的幅角就是,ij,定理:对第,i,,第,j,两架飞机,其相对速度方向,ij,的改变量,ij,等于两飞机飞行方向角改变量之和的一半,即,模型,目标函数:,Min,其中,为各飞机方向角调整量的最大值,或为,约束条件:,调整方向角时不能超过,30,0,:,调整飞行方向后飞机不能碰撞:,模型为,或为,化为线性规划模型,由于,i,可正可负,为使各变量均非负,引入新变量:,模型化为,模型求解,ij,的计算,model:,sets:,plane/1.6/:x0,y0;,link(plane,plane):alpha,sin2;,endsets,for(link(i,j)|i#ne#j,:,sin2(i,j)=64/(x0(i)-x0(j)2+(y0(i)-y0(j)2);,);,for(link(i,j)|i#ne#j,:,(sin(alpha*3.14159265/180.0)2=sin2;,);,data:,x0=150,85,150,145,130,0;,y0=140,85,155,50,150,0;,enddata,end,ALPHA(1,1)1.234568 ALPHA(1,2)5.391190 ALPHA(1,3)752.2310 ALPHA(1,4)5.091816 ALPHA(1,5)2000.963 ALPHA(1,6)2.234507 ALPHA(2,1)5.391190 ALPHA(2,2)1.234568 ALPHA(2,3)4.804024 ALPHA(2,4)6.613460 ALPHA(2,5)5.807866 ALPHA(2,6)3.815925 ALPHA(3,1)752.2310 ALPHA(3,2)4.804024 ALPHA(3,3)1.234568 ALPHA(3,4)4.364672 ALPHA(3,5)1102.834 ALPHA(3,6)2.125539 ALPHA(4,1)5.091816,ALPHA(4,2)6.613460 ALPHA(4,3)4.364672 ALPHA(4,4)1.234568 ALPHA(4,5)4.537692 ALPHA(4,6)2.989819 ALPHA(5,1)2000.963 ALPHA(5,2)5.807866 ALPHA(5,3)1102.834 ALPHA(5,4)4.537692 ALPHA(5,5)1.234568 ALPHA(5,6)2.309841 ALPHA(6,1)2.234507 ALPHA(6,2)3.815925 ALPHA(6,3)2.125539 ALPHA(6,4)2.989819 ALPHA(6,5)2.309841 ALPHA(6,6)1.234568,ij,J=1,2,3,4,5,6,i=1,0.000000,5.391190,32.230953,5.091816,20.963361,2.234507,2,5.391190,0.000000,4.804024,6.613460,5.807866,3.815925,3,32.230953,4.804024,0.000000,4.364672,22.833654,2.125539,4,5.091816,6.613460,4.364672,0.000000,4.537692,2.989819,5,20.963361,5.807866,22.833654,4.537692,0.000000,2.309841,6,2.234507,3.815925,2.125539,2.989819,2.309841,0.000000,整理可得,ij,的值(单位角度),也,可以用,MATLAB,计算,ij,的值,x=150,85,150,145,130,0;y=140,85,155,50,150,0;,k=length(x);,alpha=zeros(k);,for i=1:k,for j=1:k,if i=j,alpha(i,j)=0;,else alpha(i,j)=(180/3.14159265)*asin(8/sqrt(x(i)-x(j)2+(y(i)-y(j)2);,end,end,end,alpha,计算,ij,的值程序为,计算结果为,0 5.391190237223,5.391190237223 0,32.230952672331 4.804023933797,5.091816448550 6.613460489872,20.963360893128 5.807866243421,2.234506736995 3.815924775399,32.230952672331 5.091816448550,4.804023933798 6.613460489872,0 4.364671899111,4.364671899111 0,22.833654204009 4.537692462402,2.125538857551 2.989819139045,20.963360893128 2.234506736995,5.807866243421 3.815924775399,22.833654204009 2.125538857551,4.537692462403 2.989819139045,0 2.309841365405,2.309841365405 0,ij,的计算,:,a=150,85,150,145,130,0;b=140,85,155,50,150,0;,x=a+b*i;,c=243,236,220.5,159,230,52*pi/180;,v=exp(i*c);,k=length(a);,for,i=1:k,for,j=1:k,beita(i,j,)=(angle(v(i)-v(j)-angle(x(j)-x(i)*180/pi;,end,end,beita,用,matlab,程序编写,beita,=,0 109.2636-128.2500 24.1798-186.9349 14.4749,109.2636 0 -88.8711 -42.2436 -92.3048 9.0000,231.7500 271.1289 0 12.4763 301.2138 0.3108,24.1798 -42.2436 12.4763 0 5.9692 -3.5256,173.0651 267.6952 -58.7862 5.9692 0 1.9144,14.4749 9.0000 0.3108 -3.5256 1.9144 0,运算结果,最优解的计算,用,LINGO,求解,程序如下,model:,sets:,plane/1.6/:cita;,link(plane,plane):alpha,beta;,endsets,min=,sum(plane:abs(cita,);,for(plane(i):,bnd(-30,cita(i),30);,);,for(link(i,j)|i#ne#j,:,abs(beta(i,j)+0.5*cita(i)+0.5*,cita(j,),alpha(i,j);,);,data:,alpha=0.000000,5.391190,32.230953,5.091816,20.963361,2.234507,5.391190,0.000000,4.8040024,6.813460,5.807866,3.815925,32.230953,4.804024,0.000000,4.364672,22.833654,2.125539,5.091816,6.613460,4.363673,0.000000,4.537692,2.989819,20.963361,5.807866,22.833654,4.537692,0.000000,2.309841,2.234507,3.815925,2.125539,2.989819,2.309841,0.000000;,beta=0.000000 109.
展开阅读全文