飞机碰撞调整优化模型摘要本文研究的是在一定区域内水平飞行的n(n<=6)架飞机的飞行管理问题。
本文通过建立一个非线性规划模型来求解出飞机飞行的调整角度。
首先,根据题目中“要立即计算并判断新进入飞机是否会与区域内的飞机发生碰撞“的要求,我们在编程给出判断是否碰撞的算法之后,需要求出进行判断碰撞所需要的时间。
我们运用题目中所给假设中的条件作为约束条件,通过判断在区域内任两架飞机之间在区域内飞行时任意时刻的距离是否小于8公里作为碰撞标准,进行判断是否会发生碰撞。
利用MATLAB中tic和toc函数进行计时。
以题目中飞机的初始状态求解,实验得出判断结果的用时均在0.3s以内,且存在飞机会发生碰撞。
为了得出飞机的调整角度,我们首先运用蒙特卡洛法随机产生200组飞行调整角度。
其中每组数据包含6个数据项,分别作为架飞机的调整角度。
然后,我们通过碰撞条件筛选出这200组数据中能使飞机进行角度调整后不发生碰撞的数据。
继而将上一步中所得数据中的调整角度绝对值之和最小的那组数据作为进一步优化的对象。
接着,我们以o0.01为步长对上一步得到的优化对象按飞机编号顺序进行逐角优化,使每一个调整角度逐步减小。
每优化一步进行一次碰撞判断,直到该飞机的调整角度绝对值为0或将导致飞机发生碰撞为止,然后再按同样的算法优化下一个飞机的调整角度。
从而得出近似最优解。
通过模型求解后4.5之内。
结果显示各飞机调整角度绝对值之和均在o最后,为了对我们所建的模型进行推广,说明我们所建的模型是具有普适性的,我们又自行随机设计了两组符合初始状态要求即进入该区域的飞机在到达该区域边缘时,与区域内飞机的距离应在60公里以上的数据来作为6架飞机的初始状态,并利用我们所建的模型得出了调整角度结果。
实验结果比较理想,各飞机调整角度绝对值之和均在o1.5之内。
关键词:飞行管理判断调整蒙特卡罗逐步优化一、问题重述飞行管理问题在现代生活中是一个很值得考虑和解决的问题。
在约10000米高空的某边长为160公里的正方形区域内,经常有若干架飞机作水平飞行。
区域内每架飞机的位置和速度均由计算机记录其数据,以便进行飞机管理。
当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判断是否会与区域内的飞机发生碰撞。
如果会碰撞,则应计算如何调整各架(包括新进入的)飞机飞行方向角,以避免碰撞。
现假定条件如下:1)不碰撞的标准为任意两架飞机的距离大于8公里;2)飞机飞行方向角调整的幅度不应超过30度;3)所以飞机飞行速度均为每小时800公里;4)进入该区域的飞机在到达该区域边缘时,与区域内飞机的距离应在60公里以上;5)最多需考虑6架飞机;6)不必考虑飞机离开区域后的状况;在本文中,我们将对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方向角误差不超过0.01度),其中要求飞机飞行方向角调整的幅度尽量小。
设该区域4个顶点的坐标为:(0,0),(160,0),(160,160),(0,160)。
试根据实际应用背景对所建模型进行评价和推广。
二、模型假设与符号说明2.1 模型假设1)模型的目标是在满足各架飞机不碰撞的条件下,每架飞机的调整角度绝对值之和最小;2)不碰撞的标准为任意两架飞机在区域内飞行的任何时刻,它们之间的距离大于8 公里;3)飞机飞行方向角调整的幅度不应超过30 度;4)所有飞机飞行速度均为每小时800 公里;5)进入该区域的飞机在到达该区域边缘时,与区域内飞机的距离应在60 公里以上;6)考虑至多六架飞机的飞行管理;7)不必考虑飞机离开此区域后的状况; 8)在模型中先运用蒙特卡洛法进行初选时,我们令调整角β~()20,N 分布。
在“建模前准备”中我们给出了解释。
最后模型结果分析中,也对此假设的进行了验证并通过。
在优化算法中,我们还会对调整角度进行优化,以求更接近“调整角度尽可能小”的建模目标;9)忽略飞机转换角度的时间;10)假设飞机在进行角度调整之后将沿直线水平飞行且速率保持800km/h 不变。
2.2 符号说明三、问题分析本文研究的是在一定区域内水平飞行的n(n<=6)架飞机的飞行管理问题。
通过初步分析可知,我们可以通过建立一个非线性规划模型求解出飞机飞行的方向角应该进行如何合理的调整来满足在该区域内的飞行满足要求。
首先,我们需要考虑的是碰撞判断的算法的即时性。
题目要求,当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,需要立即计算是否会与区域内的飞机发生碰撞,这就要求实现该判断算法的即时性。
这样我们就需要编程给出判断是否碰撞的算法并记录其花费时间。
判断是否碰撞的思路是求出第六架(即新进入)飞机与其他五架飞机中任意一架飞机在t 时刻之间的距离,若求出的距离都始终大于8公里,则不需要调整。
否则,需要调整。
若飞机的飞行角度需要调整,我们尝试运用蒙特卡洛法随机产生一定数量组的飞机调整角度。
假设2)和4)给出了飞机的碰撞条件。
通过这些条件判断这些组数据中有哪些组数据可以满足飞机不发生碰撞,然后可以对得到调整角绝对值之和最小的可行解进行优化,将使飞机的调整角度和绝对值尽量小为目的进而将可行解在其原来数据的基础上一步步减小,从而得到近似最优解。
四、建模前的准备我们的目标是使飞机调整角度的绝对值之和尽可能小,因此我们具体采用的蒙特卡罗方法是根据以μ=0为条件的正态分布概率密度来随机产生每一架飞机的调整角度。
这样,随机产生的角度数据服从以0度为均值的正态分布。
为兼顾模型求解效率,我们利用程序循环规定每一次循环通过蒙德卡洛法产生1组数,循环200次。
每组数由6个数据项构成,分别作为每一架飞机的调整角度。
我们先令σ=1,以样例中飞机的飞行状态作为初始条件,经过多次实验,发现每次产生的200组数据中,满足飞机不碰撞条件的调整角度方案很少,大多数情况下产生的200组数据中没有一组数据能满足使所有飞机不碰撞的条件,因此,我们尝试令σ=2,经过上百次试验,发现通过蒙特卡罗法得出的数据,平均每次有10组解满足使飞机不发生碰撞的要求。
因此我们认为σ=2的条件下,用此方法得到可行解的概率相当高,确定首先通过产生服从()20,N 分布随机数的方法对样例数据进行求解。
为了提高算法的效率,尝试使每次求解产生的随机数减小为100组,仍以()20,N 的规则产生随机数,经过多次实验发现,有超过一半的情况没有获得可行解,因此我们决定在对样例数据求解时,确定运用蒙特卡罗具体实现算法中按照()20,N 的规则每次求解时产生200组随机数。
五、模型的建立和求解5.1模型建立假设()00,i i y x 表示第i 架飞机的初始位置,()i i y x ,表示第i 架飞机在规定区域内飞行时任一时刻的位置, i α表示第i 架飞机的初始飞行角(单位°),i β表示第i 架飞机的调整角度(单位°),t 表示飞行时刻(单位s ),v 表示飞机速度(单位km/s )。
则有:()i i i i vt x x βα++=cos 0 63,2,1 =i (1) ()i i i i vt y y βα++=sin 0 63,2,1 =i (2) 那么第i 架飞机和第j 架飞机的距离为:()()22j i ji y y x x -+- 由碰撞条件(即假设2))得:()()6422<-+-j i j i y y x x j i j i ≠=且,63,2,1 (3)将式(1)和式(2)代入式(3)得:(()())()()() 64 )(sin - )(sin y )(cos - )(cos 2j j 0i i 02j j 0i i 0<+++++++++βαβαβαβαvt y vt vt x vt x j i j i化简得:()()[]()[]{}++++-+2222sin cos cos j i j i j i t v βαβαβα ()()[]()()()[](){}vt y y x x j i j i j i j i j i i i 0000sin sin cos cos 2-+-++-+-+βαβαβαβα()()64200200<-+-+j i j i y y x x (4) 式(4)可以表示为:64At 2<++C Bt (5) 式(5)在飞机处于规定区域内时成立。
由此题目可以转化为在定区间[0,tmin]上对二次函数求极值的问题。
其中min t 为第i 架飞机和第j 架飞机飞出规定区域时的时刻的较小值。
假设()C Bt At t g ++=2则飞机在规定区域内的飞行约束条件即为:()64m in <t g , ()min ,0t t ∈ 由式(4)可知A>0。
因此,当-B/(2A)<0时, ()()640m in <=g t g当0<-B/(2A)< min t 时,()()()642/m in <-=A B g t g当-B/(2A)> min t 时, ()()64m in m in <=t g t g为了避免复杂运算,提高效率,我们在用以上模型的约束条件进行判断之前,先进行了一步碰撞的必要条件判断。
考虑到两架飞机的飞行轨迹为两条射线,若两条射线所在直线交点在射线的反向延长线上时,因为初始位置两架飞机距离一定大于8公里(否则此题不可解),所以这两架飞机一定不会相撞。
如图1所示:图1 两架飞机的飞行轨迹相交于延长线考虑,第i 架飞机和第j 架飞机:第i 架飞机和第j 架飞机的轨迹曲线为:解得两直线交点横坐标为)an(-)an()an(-)an(-x j j i i j j 0i i 000c βαβαβαβα+++++=t t t x t x y y j i j j对上式分析得,若出现下列四种情况,第i 架飞机和第j 架飞机一定不会碰撞:(1)当[][]︒︒︒︒∈+360270900i i ,, βα且[][]︒︒︒︒∈+360270900j j ,, βα时,若00j c i c x x x x <<且则一定不会碰撞;(2)当[][]︒︒︒︒∈+360270900i i ,, βα且[]︒︒∈+27009j j ,βα时,若00j c i c x x x x ><且则一定不会碰撞;(3)当[]︒︒∈+27090i i ,βα且[][]︒︒︒︒∈+360270900j j ,, βα时,若00j c i c x x x x <>且则一定不会碰撞;(4)当[]︒︒∈+27090i i ,βα且[]︒︒∈+27009j j ,βα时,若00j c i c x x x x >>且则一定不会碰撞;如果出现以上这四种情况,则不必用二次函数极值的约束条件来判断两架飞机是否会相撞了。