建模案例飞行管理问题(1)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 这个模型麻烦之处就在于,要求严格表示
两架飞机的飞行距离应大于8km,所以需
要考虑每架飞机在区域内的飞行时间的长
度,比1 6 0较2繁琐。注意到区域对角线的长度 只有 ,任何一架飞机在所考虑的区域
内停T m a 留x 1 的6 0 时2 /8 间0 0 不0 .2 会2 超 0 .2 8 3 (h )
实时
算法
实时
优化问题
幅度尽量
小
方优 法优
相对
案化 化 调算
距离
整
问题的初步理解和想法
飞行管理问题是优化问题,在调整方向 角的幅度尽量小的同时,还必须注意 调整方案及算法的实时性.
2. 问题探究
• (1)优化问题的目标函数为何?
方向角调整的尽量小 方向角如何表示
方向角的概念是什 么
方向角的平方和
目标函数
((cita1(i)+cita1(j))*3.14159265/360)
•
+2*(y0(i) -y0(j))*@cos
((cita1(i)+cita1(j))*3.14159265/360);
• c(i,j) = (x0(i) -x0(j)) ^2 + (y0(i) -y0(j)) ^2 - 64;
• 运行这个程序,结果得到的是一个局部极小点,调整角
度较大。能找到更好的解吗?如果不用全局求解程序, 通常很难得到稍大规模的非线性规划问题的全局最优解。 所以我们启动LINGO全局求解程序求解这个模型(过程 省略),可以得到全局最优解。
• 可以看出,在0。01度的误差要求下,需要调整第3、4、
6三架飞机的角度,分别调整2.06度,-0.5度,1.57度 , 调整量的平方和为6.95。
的距离应大于8km,则需要考虑每架飞机 在区域内的飞行时间的长度。记Ti 为第i 架飞机飞出区域的时间,即
Ti argm in{t0:xi0vtcosi 0或 160,(4) 或 yi 0vtsini 0或 160}
t
i
j
• 记r ij (时t ) 刻第 架飞fij(机t)与[ri第j(t)]2架6飞4机的距离
为 ,并记
,这时在区
• 域fi内j(t)飞 [机r ij(不t)]2 相 6 撞4 的0 约(0 束t 条T i件j)就变成了 (5)
• 其中 Tij min{Ti,Tj}.
•
(6)
• 此外,经过计算可以得到
fij(t)(xi0vtcosix0 jvtcosj)2
• (yi0vtsiniy0 jvtsinj)264zi2 jbijzijcij (7)
过
。因此这里我们
简化一下问题;
• 不再单独考虑每架飞机T m ax在区域内停留的时
间,而是以最大时间 (Tij 这 Tm是ax 已经是一个常
数)代替之,此时所有
,这实际上
强化了问题的要求,即考虑了有些飞机可
能已经飞出区域,但仍不允许两架飞机的
距Biblioteka Baidu小于8km。
程序:
• MODEL: • TITLE 飞行管理问题的非线性规划模型; • SETS: • Plane/1..6/: x0, y0, cita0, cita1, d_cita; • ! cita0表示初始角度,cita1为调整后的角
,只要在右端点的函数
值非负即可,即
fij (Tij ) 0;
b ij 0 0 ti*j Tij
f ij ( t )
(11)
• 如果 且 fij(ti*j)bij/4cij 0 ,只需要
求最小值
•
bi2j 4cij 0. 即可,即
•
f ij ( t ) (12)
T •i j 实际上,约束(11)表示的是 在右端点
• 记飞机飞行速率为(800km/h),以当
前时刻为0时刻。设第i 架飞机在调整时的
位置坐标为( x
0 i
,
y
0 i
)
(已知条件),时刻的
位置坐标为( x
t i
,
y
t i
)
,则
• x i t x i 0 v tc o si,y i t y i0 v ts ini. (3)
• 如果要严格表示两架位于该区域内的飞机
(13)
(14) (15) (16)
模型求解
• 上面这是一个非线性规划模型,虽然是严格满足题目
要求的模型,但得到的模型逻辑关系比较复杂,约束 (16)是在一定条件下才成立的约束,而且其中的 计算式(4)也含有相当复杂的关系式,使用LINGO 软件不太容易将模型很方便的输入,因为逻辑处理不 是LINGO的优势所在。即使想办法把这个模型输入 到LINGO,也不一定能求出好的解(笔者尝试过, 但是LINGO运行时有时会出现系统内部错误,可能 是系统有问题,无法继续求解)。而且,在实时飞行 调度中显然需要快速求解,所以下面我们想办法简化 模型。
(4)求解方法
• 特殊到一般:先考虑2架,然考虑3架~ • 优化问题为非线性规划问题,编程求解。
总结:初等算法和高等算法都可。
创新之处:算法。
模型一及求解
• 模型建立
• 这个问题显然是一个优化 i0 问题。设第i 架飞
机在调整时的方向角为 i (i0题 目i(i中1 ,已2,给,6)
出),调整后的方向为
纵坐标y方向角/(°)
飞机编 横坐
号
标
1
150
纵坐 标
140
方向角 (°)
243
飞机编 横坐
号
标x
4
145
纵坐 标y
50
方向角/ (°)
159
2
85 85 236
5
130 150 230
3
155 155 220.5 新进入 0
0
52
说明:方向角指飞行方向与x轴正向的夹角。 试根据实际应用背景对你的模型进行评价和推广
• 其实,使用全局变量求解程序,通常也不一定要等到全
局最优解,而是观察求解状态窗口,看到一个较好的当 前解(或当前最好解在较长时间内不发生变化)时,就 可以中止程序,用当前最好的局部最优解作为最后结果。 例如对于本例,LINGO求出最优解大约需要一分,而实 际上5秒内LINGO得到了与全局最优解类似的解。
数学建模竞赛中的优化问题 -95A:飞行管理问题
一个飞行管理问题
• 1.1 问题描述 • 1995年全国大学生数学建模竞赛中的A题(“一
个飞行管理问题”)。
• 在约10000米高空的某边长为160km的正方形
区域内,经常有若干架飞机做水平飞行,区域内 每架飞机的位置和速度向量均由计算机记录其数 据,以便进行飞行管理,当一架欲进入该区域的 飞机到达区域边缘时,记录其数据后,要立即计 算并判断是否会与区域内的飞机发生碰撞。
1. 问题的前期分析
* 对问题仔细阅读, 首先抓住题目中的 关键词“管理”进行联想. • 抓住诸如“碰撞”、“调整”、“避免
碰撞”、“立即”、“判断”等等词语.
* 联系解决问题的方案,不加约束继续 联想,再将关键词搭配起来.
飞行位置示意图
160km 160km
碰撞
避
调
免
整
碰
方
撞
向
角
立即 判断
条件
• zij
2vtsini
j
2
,
(8)
• (9) b ij 2 [ (x i0 x 0 j)s ini 2j (y i0 y 0 j)c o si 2j],
• cij(xi0x0 j)2(yi0y0 j)2 6 4 .
(10)
f ij ( t )
• 所以 是一个关于 t 的二次函zij数,bij表/2示, 的
cita1(j))*3.14159265/360) #lt#T_max ,
•
b(i,j)^2-4*c(i,j),-1) < 0);
• !@for(link(i,j): @if(b(i,j)#lt#0, b(i,j)^2-4*c(i,j), -1) < 0);
• @for(link: @free(b));
度,d_cita为调整的角度;
• link(plane, plane)|&1 #LT# &2: b,c; • ENDSETS • DATA:
•x0 y0 cita0 =
150
140
85
85
150
155
145
50
130
150
0
0
243 236 220.5 159 230 52
• max_cita = 30;
• T_max = 0.283;
• V=800;
• ENDDATA
• INIT:
• d_cita = 0 0 0 0 0 0;
• ENDINIT
• @for(plane: cita1 - cita0 = d_cita);
• @for(link(i,j):
• b(i,j) = -2*(x0(i) -x0(j))*@sin
•
+ c(i,j) > 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)-
• 现假定条件如下: • 不碰撞的标准为任意两架飞机的距离大于
8km;
• 飞机飞行方向角调整幅度不应超过30°; • 所有飞机飞行速度均为800km/h; • 进入该区域的飞机在到达该区域边缘时,
与区域内飞机的距离应在60km以上;
• 最多需考虑6架飞机; • 不必考虑飞机离开此区域后的情况。
• 请你对这个避免碰撞的飞行管理问题建立数学模型,
• 此外 ,上面的模型还可以进一步简化,例如可以假设
要求飞机永远不相撞,即认为为无穷大,这时显然约束 条件(15)是多余的,而且约束(16)中只需要的条 件就可以了。也就是说上面程序中的对应部分(约束和 可以改写为更简单的形式:
的函数值非负,这个约束在(12)的条件
下也是自然成立的,所以可以是对约束
(11)不再附加且的条件。
• 于是我们的模型6 就是
•
m in | i |2 ; i 1
s .t .
•
| i |2 30 ,
•
fij (Tij ) 0;
•
b i2 j 4 c ij 0 .(b ij 0 ,0 ti* j T ij)
,
题目中就是要求飞机飞行方向角调整的幅
•
度尽量小,因此6有| 化 i 的|2 . 目的函数可以是:
i1
(1)
• 为了建立这个问题的优化模型,只需要明确约束条件就可
以了。一个简单的约束是飞机飞行方向角调整的幅度不应
超过30°,即
| | 30.
•
(2)
• 题目中要求进入该区域的飞机在到达该区域边缘时,
• !调整角度上下限,单位为角度;
• @for(plane: @bnd( - max_cita, d_cita, max_cita));
• [obj] MIN = @SUM(plane: (d_cita)^2);
• ![obj] MIN = @SUM(plane: @abs(d_cita));
• END
与区域内的飞机的距离应在60km以上。这个条件 是个初始条件,很容易验证目前所给的数据是满足 的,因此本模型中可以不予考虑。剩下的关键是 要满足题目中描述的任意两架位于该区域内的飞机 的距离应该大于8km。但这个问题的难点在于飞 机是动态的,这个约束不好直接描述,为此我们首 先需要描述每架飞机的飞行轨迹。
• 是t一bbijij/条/44vs开icnij口i 2向j (上记的为抛fitji*(j 0物))线c时ij 。f,0ij (当t )
即 函数取最小
值
。注bij 意/ 2 到0
b ij 0 (初始时刻不
相撞),如果
(即 )则此时约
束条件b ij (0 5)t i*j一 定T ij 成立,所以
• 如果 且
(2)优化问题的约束条件为何?
• 任意两架飞机的距离大于8 公里; • 飞机飞行方向角调整的幅度不应超过 30 °;
两点间距离表示方法
把飞机视为点
判断避免碰撞的依 据 总结:目标函数和约束条件中都含有方 向角。
(3)分析6架飞机目前碰撞情况
• 描点作图; • 分析飞机在飞行区域的时间; • 判断5架飞机此刻的情况; • 判断新进入飞机与其他5架飞机碰撞的情况。
• );
• ! 避免碰撞的条件;
• ! 右端点非负;
• @for(link(i,j): [Right]
• (2*V*T_max*@sin((cita1(i)-cita1(j))*3.14159265/360))^2
•
+ b(i,j)*(2*V*T_max*@sin((cita1(i)-
cita1(j))*3.14159265/360))
列出计算步骤,对以下数据进行计算(方向角误差 不超过0.01°),要求飞机飞行方向角调整的幅度 尽量小。
• 该区域四个定点的坐标为(0,0)、(160,0)、
(160,160)、(0,160)。记录数据见表2-
1。
表2-1 飞机位置和方向角记录数据
• 飞机编号横坐标纵坐标方向角(°)飞机编号横坐标x