优化软件LINGO使用入门2013.ppt

上传人:文库蛋蛋多 文档编号:2789813 上传时间:2023-02-24 格式:PPT 页数:44 大小:1.57MB
返回 下载 相关 举报
优化软件LINGO使用入门2013.ppt_第1页
第1页 / 共44页
优化软件LINGO使用入门2013.ppt_第2页
第2页 / 共44页
优化软件LINGO使用入门2013.ppt_第3页
第3页 / 共44页
优化软件LINGO使用入门2013.ppt_第4页
第4页 / 共44页
优化软件LINGO使用入门2013.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《优化软件LINGO使用入门2013.ppt》由会员分享,可在线阅读,更多相关《优化软件LINGO使用入门2013.ppt(44页珍藏版)》请在三一办公上搜索。

1、优化软件LINGO使用入门,Lingo12初步,LINGO入门,初始印象,1,程序结构与调试,4,界面介绍工具栏文件类型运行过程求解器状态窗口求解报告窗口,初始印象,界面介绍,LINGO软件的主窗口(用户界面),所有其他窗口都在这个窗口之内。,模型窗口(Model Window),用于输入LINGO优化模型(即LINGO程序)。,状态行(最左边显示“Ready”,表示“准备就绪”),当前时间,当前光标的位置,工具栏,File|Open(F3)打开文件,File|Print(F7)打印文件,Edit|Copy(Ctrl+C)复制,Edit|Undo(Ctrl+Z)取消操作,Edit|Find(C

2、trl+F)查找,LINGO|Solution(Alt+O)显示解答,Edit|Match Parenthesis(Ctrl+P)匹配括号,LINGO|Options(Ctrl+I)选项设置,Window|Close All(Alt+X)关闭所有窗口,File|New(F2)新建文件,File|Save(F4)保存文件,Edit|Cut(Ctrl+X)剪切,Edit|Paste(Ctrl+V)粘贴,Edit|Redo(Ctrl+Y)恢复操作,Edit|Go To Line(Ctrl+T)定位某行,LINGO|Solve(Ctrl+U)求解模型,LINGO|Picture(Ctrl+K)模型图示

3、,Window|Send to Back(Ctrl+B)窗口后置,Window|Tile(Alt+T)平铺窗口,上下文相关的帮助,Help|Contents(F1)在线帮助,文件类型,.LG4:LINGO格式的模型文件,保存了模型窗口中所能够看到的所有文本和其他对象及其格式信息;.LNG:文本格式的模型文件,不保存模型中的格式信息(如字体、颜色、嵌入对象等);.LDT:LINGO数据文件;.LTF:LINGO命令脚本文件;.LGR:LINGO报告文件;.LTX:LINDO格式的模型文件;.MPS:示MPS(数学规划系统)格式的模型文件。,除“LG4”文件外,另外几种格式的文件都是普通的文本文件

4、,可以用任何文本编辑器打开和编辑。,求解器状态窗口,变量数量,T,N,In,T,N,T,N,Class,Ob,Infe,Ite,Type,Obj,求解花费时间,非零系数数量,内存使用数量,约束数量,模型类型,当前解状态,当前目标函数值,扩展求解器,使用的特殊求解程序,到目前的最佳目标值,特殊求解程序当前运行步数,有效步数,B-and-BGlobalMultistart,LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP,“Global Optimum全局最优”,“Local Optimum局部最优,Feasible,Infeasible“(不可行),Unbounded

5、“(无界),Interrupted“(中断),Undetermined“(未确定),约束不满足的总量,目前为止的迭代次数,目标函数值的界,分枝数(对B-and-B程序);子问题数(对Global程序);初始点数(对Multistart程序),可直接求解的变量不作为决策变量。,更新时间间隔,求解报告窗口,打开lingo软件,将下面代码复制粘贴到模型窗口,并运行后观察结果报告。,初始印象练习,model:title 入门练习;(可有可无)max=2*x1+3*x2;2*x1+x28;(小于即小于等于)4*x1+3*x215;END,傻瓜输入法格式注意事项算术运算符逻辑运算符数学函数,傻瓜输入法,傻

6、瓜输入法格式,例 直接用LINGO来解如下二次规划问题:,Model:Title:傻瓜输入法;!小程序可用,大程序不提倡;st1x1+x2100;optmax=98*x1+277*x2-x12-0.3*x1*x2-2*x22;st2x1=2*x2;gin(x1);gin(x2);end,注意事项,“”(或“=”(或“=”)功能相同;LINGO模型以“MODEL:”开始,“END”结束;目标函数为“MAX=”。不需要写“ST”;变量与系数间有乘号运算符“*”;变量名以字母开头,不能超过64个字符;变量名不区分大小写(包括LINGO中的关键字);语句的顺序不重要;行号自动产生或人为定义。目标函数所

7、在行是第一行,第二行起为约束条件,约束行名字被放“”中;行中注有“!”符号的后面部分为注释;,注意事项,在模型的开头可以用“TITLE”对模型命名;变量可以放在约束右端;每行(目标,约束,说明语句)后增加“;”;开头都是函数调用;上下界限定用BND(),不计入模型的约束,也不能给出其松紧判断和敏感性分析;缺省假定所有变量非负;可在模型的“END”语句后用“FREE()”将变量的非负假定取消;对0-1变量说明:BIN();对整型变量说明:GIN();模型由一系列语句组成,适当缩进,增强可读性。,LINGO中的算术运算符有以下5种:+(加法),-(减法或负号),*(乘法),/(除法),(求幂)。,

8、算术运算符,数与数之间的运算,运算结果也是数。,表示是“数与数之间”的大小关系,在LINGO中用来表示优化模型的约束条件。LINGO中关系运算符有3种:(即=,大于等于)在优化模型中约束一般没有严格小于、严格大于关系.,关系运算符,ABS(X):返回X的绝对值。SIN(X):正弦函数,返回X的正弦值(X的单位是弧度)。COS(X):返回X的余弦值(X的单位是弧度)。TAN(X):正切函数,返回X的正切值(X的单位是弧度)。EXP(X):返回eX的值(其中e=2.718281.)。POW(X,Y):指数函数,返回XY的值。SQR(X):平方函数,返回X的平方(即X*X)的值。SQRT(X):开平

9、方函数,返回X的正的平方根的值。LOG(X):返回X的自然对数值。,数学函数,MOD(X,Y):模函数,返回X对Y取模的结果,即X除以Y的余数,这里X和Y应该是整数。SIGN(X):符号函数,返回X的符号值(X=0时返回+1)。SMAX(list):最大值函数,返回一列数(list)的最大值。SMIN(list):最小值函数,返回一列数(list)的最小值。FLOOR(X):返回X的整数部分(向最靠近0的方向取整)。LGM(X):返回X的伽玛(gamma)函数的自然对数值(当X为 整数时LGM(X)=LOG(X-1)!;当X不为整数时,采用线性插值得到结果)。,数学函数,实例1,解 设A1,A

10、2调运到三个粮站的大米分别为x1,x2,x3,x4,x5,x6吨。,题设量可总到下表:,实例1,结合存量限制和需量限制得数学模型:,实例1,程序编写1model:min=12*x1+24*x2+8*x3+30*x4+12*x5+24*x6;x1+x2+x32;x2+x54;x3+x65;end,提示:课件中的程序请先粘贴在记事本中,再转贴于lingo软件中。,实例1,运行结果 Global optimal solution found.Objective value:160.0000 Total solver iterations:0 Variable Value Reduced Cost X

11、1 2.000000 0.000000 X2 0.000000 28.00000 X3 2.000000 0.000000 X4 0.000000 2.000000 X5 4.000000 0.000000 X6 3.000000 0.000000 Row Slack or Surplus Dual Price 1 160.0000-1.000000 2 0.000000 16.00000 3 1.000000 0.000000 4 0.000000-28.00000 5 0.000000-12.00000 6 0.000000-24.00000,数学软件与数学实验第二版 155页 第1题,傻

12、瓜输入法练习,原运输问题变量更换为:,实例1,模型:,实例1,集合段数据段目标与约束段基本集合与派生集合循环函数循环求和函数多维数组过滤条件逻辑运算符,“段”的使用,sets:!集合段;s/1.100/:x;!基本集合,集合名与属性变量;endsets!目标与约束段;sum(s(i):x(i)90;!循环求和函数;,1.怎样表示:,“段”的使用,2.怎样赋值:,sets:ss/1.10/:b;endsetsdata:!数据段;b=1 0 1 2 3 5 2 6 1 2;enddata,“段”的使用,sets:a/1.100/:;b/1.200/:;C(a,b):x;!派生集合;endsetss

13、um(c(i,j):x(i,j)=280;,3.怎样表示:,“段”的使用,sets:a/1.100/:;b/1.200/:;C(a,b):x;endsetsfor(b(j):sum(a(i):x(i,j)150.001);!集合元素的循环函数;,4.怎样表示:,“段”的使用,FOR()(集合元素的循环函数):对集合setname的每个元素独立地生成表达式,表达式由expression_list描述。MAX()(集合属性的最大值函数):返回集合setname上的表达式的最大值。MIN()(集合属性的最小值函数):返回集合setname上的表达式的最小值。PROD()(集合属性的乘积函数):返回集

14、合setname上的表达式的积。SUM()(集合属性的求和函数):返回集合setname上的表达式的和。,集合循环函数,sets:a/1.100/:;b/1.200/:y;C(a,b):x;endsetsfor(b(j):gin(y(j);for(c(i,j):bin(x(i,j);,5.怎样表示:,“段”的使用,6.怎样表示:,sets:a/1.20/:;b/1.30/:;C/1.40/:;d(a,b,c):x;endsetsfor(a(i):for(b(j):sum(c(i,j,k)|k#gt#1#and#k#ne#10:x(i,j,k)=100);!过滤条件;,“段”的使用,在LINGO

15、中,逻辑运算(表达式)通常作为过滤条件使用。逻辑运算符有9种,可以分成两类:#AND#(与),#OR#(或),#NOT#(非):逻辑值之间的运算,它们操作的对象本身已经是逻辑值或逻辑表达式;#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于):是“数与数之间”的比较。,逻辑运算符,运算结果只有“真”(TRUE)和“假”(FALSE)两个值(称为“逻辑值”),LINGO中用数字1代表TRUE,其他值(典型的值是0)都是FALSE。,例 2#gt#3#and#4#gt#2 结果是:真(1)假(0)?,7.怎样表示:,SETS:HANG

16、/1.3/:B;LIE/1.4/:X;XISHU(HANG,LIE):A;ENDSETSDATA:A=1 2 3 1 2 5 1 2 3 1 6-2;B=4 5 7;ENDDATAFOR(HANG(I):SUM(LIE(J):A(I,J)*X(J)B(I);,“段”的使用,程序编写MODEL:TITLE 调运大米的运输问题程序3;!定义集合段;SETS:LIANGKU/1.2/:A;!定义粮库的集合;LIANGZHAN/1.3/:B;!定义粮站的集合;YULIANG(LIANGKU,LIANGZHAN):X,C;!定义运量和距离;ENDSETSDATA:!粮库到粮站的距离;C=12 24 8

17、30 12 24;,实例1,!粮库的限量;A=4 8;!粮站的限量;B=2 4 5;ENDDATAOBJMIN=SUM(YULIANG:C*X);!粮库上限的约束;FOR(LIANGKU(I):LKSUM(LIANGZHAN(J):X(I,J)B(J);END,实例1,数学软件与数学实验第二版 155页 第1题(1),(2),(3),“段”的使用练习,程序结构程序调试,程序结构与调试,程序结构,一般来说,LINGO中建立的优化模型可以由六个部分组成,或称为六“段”(SECTION):,(1)集合段(SETS):以“SETS:”开始,“ENDSETS”结束,定义必要的集合变量(SET)及其元素(

18、MEMBER,含义类似于数组的下标)和属性(ATTRIBUTE,含义类似于数组)。,(2)目标与约束段:目标函数、约束条件等,没有段的开始和结束标记,因此实际上就是除其它五个段(都有明确的段标记)外的LINGO模型。,(3)数据段(DATA):以“DATA:”开始,“ENDDATA”结束,对集合的属性(数组)输入或输出必要的常数数据。格式为:“attribute(属性)=value_list(常数列表);”,(5)计算段:在数据段输入完成之后在正式求解模型之前对原始数据进行处理,语句是顺序执行的,不能更换顺序,在计算段可以使用程序流程控制和子模型。也可进行数据的输出。以“CALC:”开始,“E

19、NDCALC”结束。,(4)初始段(INIT):以“INIT:”开始,“ENDINIT”结束,对集合的属性(数组)定义初值(因为求解算法一般是迭代算法,所以用户如果能给出一个比较好的迭代初值,对提高算法的计算效果是有益的)。格式为:“attribute(属性)=value_list(常数列表);”,程序结构,(6)子模型段:子模型必须包含在主模型之内,即必须位于以“MODEL:”开头、以“END”结束的模块内。同一个主模型中,允许定义多个子模型,其基本语法是:SUBMODEL mymodel:可执行语句(约束+目标函数);ENDSUBMODEL其中mymodel 是该子模型的名字,可执行语句一

20、般是一些约束语句,也可能包含目标函数,但不可以有自身单独的集合段、数据段、初始段和计算段。在计算段中可以用语句“SOLVE(mymodel);”求解这个子模型。,程序结构,我们介绍了前三个段,有兴趣的同学可扩展阅读。,程序调试,很多时候是程序写出来了,但是有很多错误,怎么进行程序的调试呢?可按下面步骤进行:1.直接点击运行,如果出错会弹出错误提示,根据提示做相应的修改;2.可以用“!”把约束变成说明语句,而把这条语句屏蔽掉,缩小寻找出错的范围;3.可以边写程序边运行,保证每行书写都是正确的程序;,经验介绍,一般容易出错的地方有:定义了多个长度一样的集合,而在使用中区分不明确;定义了同名的属性;分号不是英文半角输入;使用的字母没有定义;循环语句中元素下标颠倒或者不明或越界;约束错误变成不可行或无界;关系运算符(如“=”)使用逻辑运算符(如“#EQ#”);使用了非LINGO语言的输入;(比如%引导说明语句)函数调用错误;掉了或多了括号,函数的括号写错了地方等.,程序调试,经验介绍,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号