当前位置:文档之家› LINGO求解非线性规划

LINGO求解非线性规划


四、模型的建立
设飞行方向角调整量为 i ,经过调整后的飞行 方向角为 i=i0+ i ;在时刻t,飞机的位置为: xi(t)=xi0+vtcos i,yi(t)=yi0+vtsin i,
两架飞机距离的平方为
d (t ) ( xi 0 x j 0 vt(cosi cos j ))
用MATLAB进行飞行模拟,画出飞行路线图
16053 1源自140120100
2
80 60
40
4
20
6
0 0 20 40 60 80 100 120 140 160 180
飞行模拟程序; axis([-10,195,-10,170]); grid on; hold on; plot([0,160,160,0,0],[0,0,160,160,0],'b'); zt=[243,236,220.5,159,230,52]; zt1=zt*pi/180; vt=1; dx=vt*cos(zt1); dy=vt*sin(zt1); for n=1:120 x1=x+dx;y1=y+dy; scatter(x1,y1,10,c,'filled'); for j=1:5 for k=2:6
( yi 0 y j 0 vt(sin i sin j ))
2
这两种目标函数都是非线性的,约束条件也是非 线性的,因而是非线性规划,且是时间的连续函 数,为了简化计算,令vt=l,把l离散化,且l在适 当范围内取值(l=其它值时dij>>8,不会发生碰撞) 经过预先计算可知,碰撞可能发生94<l<112范围 内。现在把l的范围放宽到90<l<120,为减少计算 量,从初步计算可知,飞机1和2不会与其它飞机 发生碰撞,故碰撞约束条件可以不考虑1和2。编 写LINGO程序,计算得到结果: 3=0.0495412弧度=2.8385 6=0.01380405弧度=0.7909 目标函数值:0.06334526弧度=3.6294 注:在相同目标函数下,调整方案不唯一。
2 ij
2
( yi 0 y j 0 vt(sin i sin j ))
按题意,约束条件为: 2 dij (t ) 64 1 i, j 6 , i j
2
| i | / 6 , i 1,2,6
题目给出的目标是“要求飞机飞行方向角调整的 幅度尽量小”,,对调整的幅度,可以用向量i 的范数来表示,故目标函数有两者表示方式:
@FOR(JULI(I):L(I)=80+(I-1)/100); @FOR(FEIJI:@BND(0,DZT,0.08)); @FOR(FEIJI:ZT1=ZT0+DZT); @FOR(JULI(I):@FOR(FEIJI(J)|J#LT#6: @FOR(FEIJI(K)|K#GT#J:(XI0(J)-XI0(K) +L(I)*(@COS(ZT1(J))-@COS(ZT1(K))))^2 +(YI0(J)-YI0(K)+L(I)*(@SIN(ZT1(J))@SIN(ZT1(K))))^2>=64););); MIN=@SUM(FEIJI(I):@ABS(DZT(I))); END
if k~=j tx=x1(j)-x1(k); ty=y1(j)-y1(k); dl=sqrt(tx*tx+ty*ty); if dl<=8 fprintf('\ni=%d j=%d n=%d',j,k,n); end end end end x=x1;y=y1; pause(0.1); end 经过计算可知,如果不调整飞行方向,飞机6和5 先发生碰撞,然后6和3发生碰撞。
计算可知,该调整方案可行,不会发生碰撞。 LINGO程序如下:
MODEL: SETS: FEIJI/P1..P6/:ZT0,DZT,ZT1,XI0,YI0,XI,YI; JULI/L1..L5001/:L; ENDSETS DATA: XI0=150,85,150,145,130,0; YI0=140,85,155,50,150,0; ZT0=4.2411150082,4.118977035,3.848451, 2.775073511,4.01425728,0.907571211; ENDDATA
1) 不碰撞的标准为任意两架飞机的距离大于8公 里; 2) 飞机飞行方向角调整的幅度不应超过30度 ; 3) 所有飞机飞行速度均为每小时800公里; 4) 进入该区域的飞机在到达区域边缘时, 与区域 内飞机的距离应在60公里以上 ; 5) 最多需考虑6架飞机 ; 6) 不必考虑飞机离开此区域后的状况 。 请你对这个避免碰撞的飞行管理问题建立数学模 型,列出计算步骤,对以下数据进行计算(方向角 误差不超过0.01度),要求飞机飞行方向角调整的 幅度尽量小。设该区域4个顶点的座标为(0,0), (160,0),(160,160),(0,160)。记录数据为 :
用LINGO 求解非线性规划
目标函数或约束条件(或两者)出现非线 性表达式时的规划称为非线性规划。LINGO 求解非线性规划是其强项。下面通过实例来学 习其用法。
实例:飞行管理(95年竞赛题)
一、问题的提出
在约10,000米高空的某边长160公里的正方 形区域内, 经常有若干架飞机作水平飞行。区 域内每架飞机的位置和速度均由计算机记录其 数据,以便进行飞行管理。当一架欲进入该区 域的飞机到达区域边缘, 记录其数据后,要立 即计算并判断是否会与区域内的飞机发生 碰撞。 如果会碰撞,则应计算如何调整各架(包括新进 入的)飞机飞行方向角,以避免碰撞。现假定条 件如下:
三、问题的分析 当前各架飞机的位置及飞行方向
160
5
140
3 1
120
100
80
2
60
4
40 20
0 0 20 40 60 80 100 120 140 160 180
画飞机位置图的MATLAB程序: x=[150,85,150,145,130,0]; y=[140,85,155,50,150,0]; scatter(x,y,30,'r','filled'); axis([-10,195,-10,170]); grid on; hold on; plot([0,160,160,0,0],[0,0,160,160,0],'b'); zt=[243,236,220.5,159,230,52]; zt1=zt*pi/180; b=40; x1=x+b*cos(zt1); y1=y+b*sin(zt1); for n=1:6 plot([x(n),x1(n)],[y(n),y1(n)],'k'); end 以文件名feiji.m存盘
min
| i |
i 1
6

min
( i )
i 1
6
2
建立数学模型如下:
min
| i |
i 1
6
2 d ij (t ) 64 1 i, j 6 , i j s.t | i | / 6 , i 1,2,6
2 dij (t ) ( xi 0 x j 0 vt(cosi cos j )) 2
飞机编号 横座标x 纵座标y 方向角(度) 1 150 140 243 2 85 85 236 3 150 155 220.5 4 145 50 159 5 130 150 230 新进入6 0 0 52
注: 方向角指飞行方向与x轴正向的夹角。试根据 实际应用背景对你的模型进行评价与推广。
二、符号规定 Pi:代表第i架飞机,新进入为第6架; xi(t),yi(t):第i架飞机的位置坐标,它们都是时间 t的函数; xi0, yi0是它们的初始值; v:飞行速度,本题为常数800 km/h; i:第i架飞机的飞行飞行角; i0:第i架飞机的飞行飞行角的初始值; i:第i架飞机飞行飞行角的调整值; dij(t):第i架飞机与第j架飞机之间的距离,它是 时间t的函数.
相关主题