1、 在中国大学生数学建模竞赛(China undergraduate mathematical contest in modeling,CUMCM)中,曾经出现过大量的优化建模赛题.本章从中选择了部分典型赛题,举例分析其优化建模过程,说明如何应用 LINDO/LINGO 软件包求解这些赛题.12.1 一个飞行管理问题12.1.1 问题描述1995 年全国大学生数学建模竞赛中的 A 题(“一个飞行管理问题” ).在约 10000m 高空的某边长为 160km 的正方形区域内,经常有若干架飞机作水平飞行.区域内每架飞机的位置和速度向量均由计算机记录其数据,以便进行飞行管理.当一架欲进入该区域的飞机到
2、达区域边缘时,记录其数据后,要立即计算并判断是否会与区域内的飞机发生碰撞.如果会碰撞,则应计算如何调整各架(包括新进入的)飞机飞行的方向角,以避免碰撞.现假定条件如下:(1) 不碰撞的标准为任意两架飞机的距离大于 8km;(2) 飞机飞行方向角调整的幅度不应超过 30;(3) 所有飞机飞行速度均为 800km/h;(4) 进入该区域的飞机在到达该区域边缘时,与该区域内的飞机的距离应在 60km 以上;(5) 最多需考虑 6 架飞机;(6) 不必考虑飞机离开此区域后的状况.请你对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方向角误差不超过 0.01) ,要求飞机飞行
3、方向角调整的幅度尽量小.设该区域 4 个顶点的坐标为(0,0) , (160,0) , (160,160) , (0,160).记录数据见表 12-1.表 12-1 飞机位置和方向角记录数据 飞机编号横坐标 x纵坐标 y方向角 )/(飞机编号横坐标 x纵坐标 y方向角 )/(1 150 140 243 4 145 50 1592 85 85 236 5 130 150 2303 150 155 220.5 新进入 0 0 52说明:方向角指飞行方向与轴正向的夹角.试根据实际应用背景对你的模型进行评价和推广.12.1.2 模型 1 及求解模型建立这个问题显然是一个优化问题.设第架飞机在调整时的方
4、向角为 (题目中已经给出) ,调整后的方向角为 = + ( =1,2,,6).题目中就是要求飞 机飞行方向角调整的幅度尽量小,因此优化的目标函数可以是. (1)6=1|2为了建立这个问题的优化模型,只须要明确约束条件就可以了.一个简单的约束是飞机飞行方向角调整的不应超过 30,即| | 30. (2) 题中要求进入该区域的飞机在到达该区域边缘时,与该区域内飞机的距离应在 60km 以上,这个条件是个初始条件,很容易验证目前所给数据是满足的,因此本模型中可以不予考虑.剩下的关键是要满足题目中描述的任意两架飞机不碰撞的要求,即任意两架位于该区域内的飞机的距离应大于 8km.但这个问题的难点在于飞机
5、是动态的,这个约束不好直接描述,为此我们首先需要描述每架飞机的飞行轨迹.记飞机飞行速率为 v(=800km/h),以当前时刻为 0 时刻.设第架飞机在调整时的位置坐标为( , ) (已知条件) ,t 时刻的位置坐标为( , ) ,则0i 0 i = + , = + .i0icos 0 sin如果要严格表示两架位于该区域内的飞机的距离应大于 8km,则需考虑每架飞机在该区域内的飞行时间的长度.记 为第架飞机飞出去与的时刻,即= argmint0: + =0 或 160, (4) 0icos或者 + =0 或 160. (5)0 sin记 t 时刻第架飞机与第架飞机的距离为 (t) ,并记 (t)
6、 = -64,这时在该区域内飞机不相撞的约束条件就变成了( ) 2(t) = -64 0(0 t ). ( ) 2 其中=min , . (6) 此外,经过计算,可以得到( t)= ( 0i+cos0cos) 2+ -64( 0 sin0 sin) 2= + + , (7)2其中=2vt , (8) sin2=2-( - ) + , (9) 0i0 sin+2 ( 00) cos+2 = + -64. (10)(0i0)2( 00) 2所以, (t)是一个关于 的二次函数,表示的是一条开口向上的抛物线. 当 =- /2,即 t=- /4v (记为 )时,函数 (t)取最小值- /4+ sin2
7、 t 2.注意到 (0)= 0(初始时刻不相撞) ,如果- /2 0(即 0) ,则此 时约束条件(5)一定成立,所以对约束条件(5)只需考虑以下两种可能情况:如果 0 且 ,只需要 (t)在右端点 的函数值非负即可,即 0);! 最小点非负;for(link(i,j): Minimum if(b(i,j)#lt#0 #and# -b(i,j)/4/V/sin(cita1(i)-cita1(j)*3.14159265/360) #gt#0 #and#-b(i,j)/4/V/sin(cita1(i)-cita1(j)*3.14159265/360) #lt#T_max ,b(i,j)2-4*c(
8、i,j),-1) alpha(I,J); );for(link:bnd(0,alpha,90);for(plane: bnd(-30,d_cita,30) );!min=sum(plane: sqr(d_cita);min=sum(plane: abs(d_cita) );END计算结果如下(只显示 和 的结果): Linearization components added:Constraints: 60Variables: 60Integers: 15Local optimal solution found at iteration: 575Objective value: 6.95467
9、6Variable Value Reduced CostD_CITA(1) -0.2622117E-07 -0.1776357E-07D_CITA(2) -0.249.247E-07 0.000000D_CITA(3) 2.062448 0.000000D_CITA(4) -0.4954375 0.000000D_CITA(5) -0.2482437E-07 0.000000D_CITA(6) 1.567011 0.000000ALPHA(1,2) 5.391190 0.000000ALPHA(1,3) 32.23095 0.000000ALPHA(1,4) 5.091816 0.000000ALPHA(1,5) 20.96336 0.000000ALPHA(1,6) 2.234507 0.000000ALPHA(2,3) 4.804024 0.000000ALPHA(2,4) 6.613460 0.000000ALPHA(2,5) 5.807866 0.000000