LINGO求解非线性规划
实验利用Lingo求解整数规划和非线性规划问题

三、Lingo 循环编程举例
例5 用Lingo循环编程语句求解线性规划模型
max z 72x1 64x2
x1 x2 50, 132xx1 1180x0,2 480, x1 0, x2 0.
三、划 模型
max z 72x1 64x2
MODEL: SETS: person/A,B,C,D/; task/1..4/; assign(person,task):a,x; ENDSETS DATA: a=1100,800,1000,700,
600,500,300,800, 400,800,1000,900, 1100,1000,500,700; ENDDATA min=@sum(assign:a*x); @for(person(i):@sum(task(j):x(i,j))=1); @for(task(j):@sum(person(i):x(i,j))=1); @for(assign(i,j):@bin(x(i,j))); END
12,8 3,0; enddata
!数据赋值;
max=@sum(bliang(i):a(i)*x(i)); !目的函数;
@for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));
!约束条件;
例6、指派问题
企业在各地有4项业务,选定了4位业务员去处理。因为 业务能力、经验和其他情况不同,4业务员去处理4项业 务旳费用(单位:元)各不相同,见下表:
(3) 集合旳循环函数 集合旳循环函数能够使全部旳元素反复完毕某些操作.
函数
函数功能
• 形成集合全部元素需满足旳约
@for
束条件
• 计算集合中元素所在体现式旳
@sum
LINGO求解非线性规划

用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存盘
用LINGO解决非线性规划问题

8
二、用LINGO解决基本的线性规划问题
我们编辑程序并求解后,得到LINGO Model窗口、 Solution report窗口和Solver status窗口划问题
通过此例我们对LINGO有了一个基本的认识,下 面我们来总结一下LINGO语法规定: 1. 求目标函数的最大值或最小值分别用MAX=…… 或MIN=……来表示; 2. 每个语句必须以分号“;”结束,每行可以有多 个语句,语句可以跨行; 3. 变量名称必须以字母(A-Z)开头,由字母、数 字(0-9)和下划线所组成,长度不超过32个字符,不 区分大小写;
11
二、用LINGO解决基本的线性规划问题
8. 变量界定函数: @BND(L,x,U),即L<=x<=U; 注意:没有想象中的的@SLB函数与@SUB函数; @BIN(x),限制x仅取整数0或1; 注意:不是@INT(x)函数; @FREE(x),取消对x的符号限制;
@GIN(x),限制x仅取非负整数。
16
三、用LINGO解决非线性规划问题
17
三、用LINGO解决非线性规划问题
18
三、用LINGO解决非线性规划问题
例4 求解二次规划问题:
直接使用LINGO最大化过程:
max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1 + x2 <= 100; x1 <= 2*x2; @gin(x1);@gin(x2);
12
三、用LINGO解决非线性规划问题
例2 求解二次规划问题:
MODEL: MIN=x^2+y^2-2*x-4*y; !目标函数; x+y<=1; !x,y为决策变量; y<=0.5; !第二、三行均为约束条件; end
运筹学实例分析及lingo求解讲解

运筹学实例分析及lingo 求解一、线性规划某公司有6个仓库,库存货物总数分别为60、55、51、43、41、52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38。
各供货仓库到8个客户处的单位货物运输价见表试确定各仓库到各客户处的货物调运数量,使总的运输费用最小。
解:设ijx 表示从第i 个仓库到第j 个客户的货物运量。
ij c表示从第i 个仓库到第j 个客户的单位货物运价,i a 表示第i 个仓库的最大供货量,j d 表示第j 个客户的订货量。
目标函数是使总运输费用最少,约束条件有三个:1、各仓库运出的货物总量不超过其库存数2、各客户收到的货物总量等于其订货数量3、非负约束数学模型为:∑∑===6181)(min i j ijij x c x f⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≥===≤∑∑==08,,2,1,6,2,1,,..6181ij j i ij i j ij x j d x i a x t s 编程如下:model : Sets :Wh/w1..w6/:ai; Vd/v1..v8/:dj;links(wh,vd):c,x;endsetsData:ai=60,55,51,43,41,52;dj=35,37,22,32,41,32,43,38;c=6,2,6,7,4,2,5,94,9,5,3,8,5,8,25,2,1,9,7,4,3,37,6,7,3,9,2,7,12,3,9,5,7,2,6,55,5,2,2,8,1,4,3;EnddataMin=@sum(links(i,j):c(i,j)*x(i,j));@for(wh(i):@sum(vd(j):x(i,j))<=ai(i));@for(vd(j):@sum(wh(i):x(i,j))=dj(j));endGlobal optimal solution found.Objective value: 664.0000Total solver iterations: 0Variable Value Reduced Cost AI( W1) 60.00000 0.000000 AI( W2) 55.00000 0.000000 AI( W3) 51.00000 0.000000 AI( W4) 43.00000 0.000000 AI( W5) 41.00000 0.000000 AI( W6) 52.00000 0.000000 DJ( V1) 35.00000 0.000000 DJ( V2) 37.00000 0.000000 DJ( V3) 22.00000 0.000000 DJ( V4) 32.00000 0.000000 DJ( V5) 41.00000 0.000000 DJ( V6) 32.00000 0.000000 DJ( V7) 43.00000 0.000000 DJ( V8) 38.00000 0.000000 C( W1, V1) 6.000000 0.000000 C( W1, V2) 2.000000 0.000000 C( W1, V3) 6.000000 0.000000 C( W1, V4) 7.000000 0.000000 C( W1, V5) 4.000000 0.000000 C( W1, V6) 2.000000 0.000000 C( W1, V7) 5.000000 0.000000C( W2, V1) 4.000000 0.000000 C( W2, V2) 9.000000 0.000000 C( W2, V3) 5.000000 0.000000 C( W2, V4) 3.000000 0.000000 C( W2, V5) 8.000000 0.000000 C( W2, V6) 5.000000 0.000000 C( W2, V7) 8.000000 0.000000 C( W2, V8) 2.000000 0.000000 C( W3, V1) 5.000000 0.000000 C( W3, V2) 2.000000 0.000000 C( W3, V3) 1.000000 0.000000 C( W3, V4) 9.000000 0.000000 C( W3, V5) 7.000000 0.000000 C( W3, V6) 4.000000 0.000000 C( W3, V7) 3.000000 0.000000 C( W3, V8) 3.000000 0.000000 C( W4, V1) 7.000000 0.000000 C( W4, V2) 6.000000 0.000000 C( W4, V3) 7.000000 0.000000 C( W4, V4) 3.000000 0.000000 C( W4, V5) 9.000000 0.000000 C( W4, V6) 2.000000 0.000000 C( W4, V7) 7.000000 0.000000 C( W4, V8) 1.000000 0.000000 C( W5, V1) 2.000000 0.000000 C( W5, V2) 3.000000 0.000000 C( W5, V3) 9.000000 0.000000 C( W5, V4) 5.000000 0.000000 C( W5, V5) 7.000000 0.000000 C( W5, V6) 2.000000 0.000000 C( W5, V7) 6.000000 0.000000 C( W5, V8) 5.000000 0.000000 C( W6, V1) 5.000000 0.000000 C( W6, V2) 5.000000 0.000000 C( W6, V3) 2.000000 0.000000 C( W6, V4) 2.000000 0.000000 C( W6, V5) 8.000000 0.000000 C( W6, V6) 1.000000 0.000000 C( W6, V7) 4.000000 0.000000 C( W6, V8) 3.000000 0.000000 X( W1, V1) 0.000000 5.000000 X( W1, V2) 19.00000 0.000000 X( W1, V3) 0.000000 5.000000X( W1, V5) 41.00000 0.000000 X( W1, V6) 0.000000 2.000000 X( W1, V7) 0.000000 2.000000 X( W1, V8) 0.000000 10.00000 X( W2, V1) 1.000000 0.000000 X( W2, V2) 0.000000 4.000000 X( W2, V3) 0.000000 1.000000 X( W2, V4) 32.00000 0.000000 X( W2, V5) 0.000000 1.000000 X( W2, V6) 0.000000 2.000000 X( W2, V7) 0.000000 2.000000 X( W2, V8) 0.000000 0.000000 X( W3, V1) 0.000000 4.000000 X( W3, V2) 11.00000 0.000000 X( W3, V3) 0.000000 0.000000 X( W3, V4) 0.000000 9.000000 X( W3, V5) 0.000000 3.000000 X( W3, V6) 0.000000 4.000000 X( W3, V7) 40.00000 0.000000 X( W3, V8) 0.000000 4.000000 X( W4, V1) 0.000000 4.000000 X( W4, V2) 0.000000 2.000000 X( W4, V3) 0.000000 4.000000 X( W4, V4) 0.000000 1.000000 X( W4, V5) 0.000000 3.000000 X( W4, V6) 5.000000 0.000000 X( W4, V7) 0.000000 2.000000 X( W4, V8) 38.00000 0.000000 X( W5, V1) 34.00000 0.000000 X( W5, V2) 7.000000 0.000000 X( W5, V3) 0.000000 7.000000 X( W5, V4) 0.000000 4.000000 X( W5, V5) 0.000000 2.000000 X( W5, V6) 0.000000 1.000000 X( W5, V7) 0.000000 2.000000 X( W5, V8) 0.000000 5.000000 X( W6, V1) 0.000000 3.000000 X( W6, V2) 0.000000 2.000000 X( W6, V3) 22.00000 0.000000 X( W6, V4) 0.000000 1.000000 X( W6, V5) 0.000000 3.000000 X( W6, V6) 27.00000 0.000000 X( W6, V7) 3.000000 0.000000Row Slack or Surplus Dual Price 1 664.0000 -1.000000 2 0.000000 3.000000 3 22.00000 0.000000 4 0.000000 3.000000 5 0.000000 1.000000 6 0.000000 2.000000 7 0.000000 2.000000 8 0.000000 -4.000000 9 0.000000 -5.000000 10 0.000000 -4.000000 11 0.000000 -3.000000 12 0.000000 -7.000000 13 0.000000 -3.000000 14 0.000000 -6.000000 15 0.000000 -2.000000由以上结果可以清楚的看到由各仓库到各客户处的货物调运数量,由此得出的符合条件的最佳运货方案,而使运费最低,最低为664。
数学建模精讲_西南交通大学中国大学mooc课后章节答案期末考试题库2023年

数学建模精讲_西南交通大学中国大学mooc课后章节答案期末考试题库2023年1.Lingo软件是常用的优化问题的求解软件。
参考答案:正确2.0-1规划是整数规划。
参考答案:正确3.求解整数规划一定能得到最优解。
参考答案:错误4.整数规划是指规划问题中的全部变量限制为整数。
参考答案:错误5.所有决策变量均要求为整数的整数规划称为纯整数规划。
参考答案:正确6.整数规划与线性规划不同之处在于增加了整数约束。
参考答案:正确7.分枝定界法是整数规划的常见算法。
参考答案:正确8.原线性规划有最优解,当自变量限制为整数后,其整数规划也一定有最优解。
参考答案:错误9.整数规划最优解常可以按照实数最优解简单取整而获得。
参考答案:错误10.与线性规划连续的可行域不同,整数规划的可行域是离散的。
参考答案:正确11.整数规划由于限制变量是整数,增加了求解难度,但整数解是有限个,所以有时候可以采用枚举法。
参考答案:正确12.非线性规划已经有一般的适合所有问题的成熟的解法。
参考答案:错误13.非线性规划的局部最优解和全局最优解等价。
参考答案:错误14.多目标规划的目标函数多于1个。
参考答案:正确15.非线性规划是指规划模型的目标函数或者约束条件中至少有一个为非线性表达式。
参考答案:正确16.多目标规划的解法包括分枝定界法,单纯形法。
参考答案:错误17.根据地球上任意两点的经纬度就可以计算这两点间的距离。
参考答案:正确18.如果可能,把非线性规划转换为线性规划是非常好的一个思路,原因是线性规划有比较成熟的算法。
参考答案:正确19.Lingo软件求解非线性规划的结果都是全部最优解。
参考答案:错误20.求解多目标规划的线性加权和法,在确定权系数之前,一般要对目标函数值做统一量纲处理,其目的是避免出现大数吃小数、权系数失去其作用的问题。
参考答案:正确21.哥尼斯堡七桥问题由欧拉证明了是可以走通的。
参考答案:错误22.“健康中国2030”规划纲要其中一项主要指标是将我国人均预期寿命提升至79岁左右。
实验二、利用Lingo求解整数规划及非线性规划问题

建立数学模型
根据问题要求,建立相应的数 学模型,包括变量、约束条件 和目标函数等。
设置求解参数
根据问题类型和规模,设置合 适的求解参数,如求解方法、 迭代次数等。
分析结果
对求解结果进行分析,验证模 型的正确性和可行性。
05 整数规划问题求解实例
问题描述
问题背景
本实验将通过一个具体的整数规划问题,展示如 何利用LINGO软件进行求解。该问题涉及到生产 计划优化,目标是最大化利润,同时满足一系列 约束条件。
非线性规划问题在数学、经济、工程等领域有广泛应用,是 优化理论的重要分支。
非线性规划问题的分类
01
按照目标函数的性质,非线性规划问题可以分为凸规
划和凹规划。
02
按照约束条件的性质,非线性规划问题可以分为无约
束、有界约束和等式约束三种类型。
03
按照决策变量的个数,非线性规划问题可以分为单变
量和多变量规划。
定义约束条件
使用LINGO的FROM命令定义约束条件,例 如FROM ... >= ... (P1,P2,...,Pn)。
LINGO求解过程及果分析
求解过程
在LINGO中输入模型,选择求解器类型(整数求解器或线性求解器),设置参数,运行求解过程。
结果分析
查看求解结果,包括最优解、最优值、松弛解等信息。对结果进行解释和评估,分析其对实际问题的 指导意义。
07 实验总结与展望
实验收获与体会
掌握整数规划和非线性规划的基本概念和求解方法
通过实验,我深入了解了整数规划和非线性规划的基本概念和求解方法,包括数学模型 建立、约束条件处理、目标函数处理等。
熟练使用LINGO软件
通过实验,我掌握了LINGO软件的基本操作和参数设置,能够利用LINGO软件求解整 数规划和非线性规划问题。
运筹学lingo实验报告(一)

运筹学lingo实验报告(一)运筹学lingo实验报告介绍•运筹学是一门研究在给定资源约束下优化决策的学科,广泛应用于管理、工程、金融等领域。
•LINGO是一种常用的运筹学建模和求解软件,具有丰富的功能和高效的求解算法。
实验目的•了解运筹学的基本原理和应用。
•掌握LINGO软件的使用方法。
•运用LINGO进行优化建模和求解实际问题。
实验内容1.使用LINGO进行线性规划的建模和求解。
2.使用LINGO进行整数规划的建模和求解。
3.使用LINGO进行非线性规划的建模和求解。
4.使用LINGO进行多目标规划的建模和求解。
实验步骤1. 线性规划•确定决策变量、目标函数和约束条件。
•使用LINGO进行建模,设定目标函数和约束条件。
•运行LINGO求解线性规划问题。
2. 整数规划•在线性规划的基础上,将决策变量的取值限制为整数。
•使用LINGO进行整数规划的建模和求解。
3. 非线性规划•确定决策变量、目标函数和约束条件。
•使用LINGO进行非线性规划的建模和求解。
4. 多目标规划•确定多个目标函数和相应的权重。
•使用LINGO进行多目标规划的建模和求解。
实验结果•列举各个实验的结果,包括最优解、最优目标函数值等。
结论•运筹学lingo实验是一种有效的学习运筹学和应用LINGO的方法。
•通过本实验能够提高对运筹学概念和方法的理解,并掌握运用LINGO进行优化建模和求解的技能。
讨论与建议•实验过程中是否遇到困难或问题,可以进行讨论和解决。
•提出对于实验内容或方法的建议和改进方案。
参考资料•提供参考书目、文献、教材、网站等资料,以便学生深入学习和研究。
致谢•对与实验指导、帮助或支持的人员表示感谢,如老师、助教或同学等。
以上为运筹学lingo实验报告的基本框架,根据实际情况进行适当调整和补充。
实验报告应简洁明了,清晰表达实验目的、内容、步骤、结果和结论,同时可以加入必要的讨论和建议,以及参考资料和致谢等信息。
Lingo精选题目及参考答案

Lingo 精选题目及答案答题要求:将Lingo 程序复制到Word 文档中,并且附上最终结果。
1、简单线性规划求解(目标函数)2134m axx x z += .(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x2、整数规划求解219040Maxx x z +=⎪⎩⎪⎨⎧≥≤+≤+0,702075679212121x x x x x x 3、0-1规划求解Max 432215.18.04.0x x x x f +++=10106234321≤+++x x x x10,,,4321或=x x x x4、非线性规划求解||4||3||2||m in4321x x x x z +++=. ⎪⎪⎩⎪⎪⎨⎧-=+--=-+-=+--2132130432143214321x x x x x x x x x x x x 5、集合综合应用产生一个集合5052--=x x y ,(10,...,2,1=x ),求y 前6个数的和S 1,后6个数的和S 2,第2~8个数中的最小值S 3,最大值S 4。
6、综合题要求列出具体的目标函数和约束条件,然后附上Lingo 程序和最终结果。
指派问题有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:问指派哪个人去完成哪项工作,可使总的消耗时间为最小分配问题某两个煤厂A1,A2每月进煤数量分别为60t和100t,联合供应3个居民区B1,B2,B3。
3个居民区每月对煤的需求量依次分别为50t,70t,40t,煤厂A1离3个居民区B1,B2,B3的距离依次分别为10km,5km,6km,煤厂A2离3个居民区B1,B2,B3的距离分别为4km,8km,12km。
问如何分配供煤量使得运输量(即t·km)达到最小1、model:max=4*x1+3*x2;2*x1+x2<10;x1+x2<8;x2<7;end2、model:max=40*x1+90*x2;9*x1+7*x2<56;7*x1+20*x2<70;@gin(x1);@gin(x2);end3、model:max=x1^2+*x2+*x3+*x4;3*x1+2*x2+6*x3+10*x4<10;@bin(x1); @bin(x2);@bin(x3); @bin(x4);end4、model:max=@abs(x1)+2*@abs(x2)+3*@abs(x3)+4*@abs(x4);x1-x2-x3+x4=0;x1-x2+x3-3*x4=1;x1-x2-2*x3+3*x4=-1/2;end5、model:sets:jihe/1..10/:y;ss/1..4/:S;endsets!由于y和s中部分有负数,所以要先去掉这个约束;@for(jihe:@free(y));@for(ss(i):@free(S));!产生元素;@for (jihe(x):y(x)=x^2-5*x-50); S(1)=@sum (jihe(i)|i#le#6:y(i)); S(2)=@sum (jihe(i)|i#ge#5:y(i));S(3)=@min (jihe(i)|i#ge#2 #and# i#le#8:y(i)); S(4)=@max (jihe(i)|i#ge#2 #and# i#le#8:y(i)); end、设:第i 个工人做第j 项工作用时ij t ,标志变量ij f 定义如下:⎩⎨⎧=其他件工作个工人去做第指派第01j i f ijmin∑∑==⨯4141i j ij ijt f.141=∑=i ijf()4,3,2,1=j 每份工作都有一人做∑==411j ijf()4,3,2,1=i 每人都只做一项工作model : sets :work/A B C D/; worker/jia yi bing ding/; time(worker,work):t,f; endsets!目标函数可以用[obj]标志出,也可以省略; [obj] min =@sum (time(i,j):t(i,j)*f(i,j)); data :!可以直接复制表格,但是在最后要有分号; t=; e nddata!每份工作都有一人做;@for (work(j):@sum (time(i,j):f(i,j))=1); !每人都只做一项工作;@for (worker(i):@sum (time(i,j):f(i,j))=1); !让f 取0-1值,此条件可以省略; !@for(time(i,j):@bin(f(i,j))); end设:煤厂进煤量i s ,居民区需求量为i d ,煤厂i 距居民区j 的距离为ij L ,煤厂i 供给居民区j的煤量为ij g那么可以列出如下优化方程式∑∑==⨯=312 1minj iij ijL g ()3,2,121= =∑=jdgijij()2,1 31=≤∑=isgjiijmodel:sets:supply/1,2/:s;demand/1,2,3/:d;link(supply,demand):road,sd; endsetsdata:road=10 5 64 8 12;d=50 70 40;s=60 100;enddata[obj] min=@sum(link(i,j):road(i,j)*sd(i,j));@for(demand(i):@sum(supply(j):sd(j,i))=d(i)); @for(supply(i):@sum(demand(j):sd(i,j))<s(i)); end1.线性规划模型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、模型的建立
设飞行方向角调整量为 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的函数.