LINGO求解非线性规划.pptVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用LINGO 求解非线性规划 目标函数或约束条件(或两者)出现非线性表达式时的规划称为非线性规划。LINGO求解非线性规划是其强项。下面通过实例来学习其用法。 实例:飞行管理(95年竞赛题) 一、问题的提出 在约10,000米高空的某边长160公里的正方形区域内, 经常有若干架飞机作水平飞行。区域内每架飞机的位置和速度均由计算机记录其数据,以便进行飞行管理。当一架欲进入该区域的飞机到达区域边缘, 记录其数据后,要立即计算并判断是否会与区域内的飞机发生 碰撞。如果会碰撞,则应计算如何调整各架(包括新进入的)飞机飞行方向角,以避免碰撞。现假定条件如下: 1) 不碰撞的标准为任意两架飞机的距离大于8公里 ; 2) 飞机飞行方向角调整的幅度不应超过30度 ; 3) 所有飞机飞行速度均为每小时800公里; 4) 进入该区域的飞机在到达区域边缘时, 与区域内飞机的距离应在60公里以上 ; 5) 最多需考虑6架飞机 ; 6) 不必考虑飞机离开此区域后的状况 。 请你对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方向角误差不超过0.01度),要求飞机飞行方向角调整的幅度尽量小。设该区域4个顶点的座标为(0,0),(160,0),(160,160),(0,160)。记录数据为 : 飞机编号 横座标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的函数. 三、问题的分析 当前各架飞机的位置及飞行方向 画飞机位置图的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存盘 用MATLAB进行飞行模拟,画出飞行路线图 飞行模拟程序; 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 if k~=j tx=x1(j)-x1(k); ty=y1(j)-y1(k); dl

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档