资源描述:
《lingo求解非线性规划》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用LINGO求解非线性规划目标函数或约束条件(或两者)出现非线性表达式时的规划称为非线性规划。LINGO求解非线性规划是其强项。下面通过实例来学习其用法。实例:飞行管理(95年竞赛题)一、问题的提出在约10,000米高空的某边长160公里的正方形区域内,经常有若干架飞机作水平飞行。区域内每架飞机的位置和速度均由计算机记录其数据,以便进行飞行管理。当一架欲进入该区域的飞机到达区域边缘,记录其数据后,要立即计算并判断是否会与区域内的飞机发生碰撞。如果会碰撞,则应计算如何调整各架(包括新进入的)飞机飞行方向角,以避免碰撞。现假定条件如下:1)不碰撞的标准为任意两架飞机的距离大于8
2、公里;2)飞机飞行方向角调整的幅度不应超过30度;3)所有飞机飞行速度均为每小时800公里;4)进入该区域的飞机在到达区域边缘时,与区域内飞机的距离应在60公里以上;5)最多需考虑6架飞机;6)不必考虑飞机离开此区域后的状况。请你对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方向角误差不超过0.01度),要求飞机飞行方向角调整的幅度尽量小。设该区域4个顶点的座标为(0,0),(160,0),(160,160),(0,160)。记录数据为:飞机编号横座标x纵座标y方向角(度)1150140243285852363150155220.541455
3、01595130150230新进入60052注:方向角指飞行方向与x轴正向的夹角。试根据实际应用背景对你的模型进行评价与推广。二、符号规定Pi:代表第i架飞机,新进入为第6架;xi(t),yi(t):第i架飞机的位置坐标,它们都是时间t的函数;xi0,yi0是它们的初始值;v:飞行速度,本题为常数800km/h;i:第i架飞机的飞行飞行角;i0:第i架飞机的飞行飞行角的初始值;i:第i架飞机飞行飞行角的调整值;dij(t):第i架飞机与第j架飞机之间的距离,它是时间t的函数.三、问题的分析当前各架飞机的位置及飞行方向画飞机位置图的MATLAB程序:x=[150,8
4、5,150,145,130,0];y=[140,85,155,50,150,0];scatter(x,y,30,'r','filled');axis([-10,195,-10,170]);gridon;holdon;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);forn=1:6plot([x(n),x1(n)],[y(n),y1(n)],'k');end以文件名feiji.m存
5、盘用MATLAB进行飞行模拟,画出飞行路线图飞行模拟程序;axis([-10,195,-10,170]);gridon;holdon;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);forn=1:120x1=x+dx;y1=y+dy;scatter(x1,y1,10,c,'filled');forj=1:5fork=2:6ifk~=jtx=x1(j)-x1(k);ty=y1(j)-y
6、1(k);dl=sqrt(tx*tx+ty*ty);ifdl<=8fprintf('i=%dj=%dn=%d',j,k,n);endendendendx=x1;y=y1;pause(0.1);end经过计算可知,如果不调整飞行方向,飞机6和5先发生碰撞,然后6和3发生碰撞。四、模型的建立设飞行方向角调整量为i,经过调整后的飞行方向角为i=i0+i;在时刻t,飞机的位置为:xi(t)=xi0+vtcosi,yi(t)=yi0+vtsini,两架飞机距离的平方为按题意,约束条件为:题目给出的目标是“要求飞机飞行方向角调整的幅度尽量小”,,对调整的幅度,可以用
7、向量i的范数来表示,故目标函数有两者表示方式:或建立数学模型如下:这两种目标函数都是非线性的,约束条件也是非线性的,因而是非线性规划,且是时间的连续函数,为了简化计算,令vt=l,把l离散化,且l在适当范围内取值(l=其它值时dij>>8,不会发生碰撞)经过预先计算可知,碰撞可能发生94