上式可以表示任意一架飞机在 时刻的坐标,所以第 架到第 架飞机之间的距离可以表示为:
其中,


那么,任意两架飞机在任意时刻的距离不超过8公里可以表示成:

3.2 目标层——调整的角度越小越好
由于调整方向有负有正,本文取各架飞机调整角度的绝对值之和
3.3模型的建立与求解
从飞行操控难易程度的角度出发,以所有的飞机调整角度最小为目标,建立非线性规划模型,以调整角度 为决策变量(规定逆时针调整时 ,顺时针方向调整时 ),模型如下:


3.4 模型求解3.4.1巧妙精炼的预处理工作本题建立的是一个非线性规划模型,模型本身已经考虑到了LINGO求解时的困难,主要在于:将距离计算式的开方计算,减小了程序运算量,提高了效率;
(1) 转化为 
(2)把时间离散化表示,即
对于连续的时间,无法编程计算,因此首先将时间离散化,取为 。但即便这样运用LINGO来计算 的值会增加变量数量,因为数值计算并不是LINGO软件包的强项,所以我们预先使用MATLAB计算 的值,以文件形式向LINGO中导入,这样做显然符合现代结构化编程规范,即:数据程序分离;同样也方便了调试(数据文件保存为DAT.TXT见附录3)。
表示优化:为了方便计算,本文在前面对角度统一使用弧度描述,但是为了符合人们的习惯,直观的观察求解结果,可以将目标转换成角度表示:

3.4.2求解结果取时间分段数目N=10000,运行LINGO程序得到如下结果:
目标值 Objective value: 3.629436度 DT(3)=2.5695956 弧度=0.044847903 DT(6)=1.0598407 弧度=0.01849771 距离最小值8.87公里 |
可以看出,只需调整3号与6号飞机,整个区域就可以保证安全,无碰撞事故发生。第3架的调整角度是2.5695956度(0.044847903弧度),第6架的调整角度是1.0598407度(0.01849771弧度)。
3.5仿真验证为了更加直观地描述调度方案,我们后续在MATLAB中编写仿真程序,动画显示6架飞机实时运行状况,对求解结果进行验证,算法如下:
Step(1): 输入各飞机初始坐标X,Y,初始方向角 ,调整角度 ;(都为1*6数组)
Step(2): 创建时间变量t=0.01小时;
Step(3): 计算t时刻各飞机坐标

Step(4): 刷新图像,显示当前各飞机位置,t=t+0.01;
Step(5): 若t 1/3小时则程序结束;否则转STEP[3]。
通过动画可以观察出经过调整后的飞机飞行线路,直观的验证模型的可行性与求解结果的正确性。
参考文献
[ 1 ]、谢金星、薛毅,《优化建模与LINDO/LINGO软件》,北京,清华大学出版社,2005-7
[ 2 ]、Duane Hanselman, Bruce Littlefield著,朱仁峰 译 《精通MATLAB 7》,北京,清华大学出版社 2006
2/2 首页 上一页 1 2 |