lingo软件及其应用(经典).

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

目录1软件平台2lingo编程3应用举例•LINGO软件的主窗口(用户界面),所有其他窗口都在这个窗口之内。•模型窗口(ModelWindow),用于输入LINGO优化模型(即LINGO程序)。•状态行(最左边显示“Ready”,表示“准备就绪”)•当前时间•当前光标的位置打开文件:F3打印文件:F7复制:Ctrl+C取消操作:Ctrl+Z查找:Ctrl+F显示解答:Alt+O匹配括号:Ctrl+P选项设置:Ctrl+I关闭所有窗口:Alt+X在线帮助:F1新建文件:F2保存文件:F4剪切:Ctrl+X粘贴:Ctrl+V恢复操作:Ctrl+Y定位某行:ctrl+T求解模型:Ctrl+S模型图示:Ctrl+K窗口后置:Ctrl+B平铺窗口:Alt+T上下文相关的帮助(5)工具栏(6)LINGO模型的最基本特征:有max=(或min=)每行后面均有一个分号“;”系数与变量间有“*”首行可增添:”model:”,末行增添”end”max=2*x+3*y;4*x+3*y10;3*x+5*y12;Globaloptimalsolutionfound.Objectivevalue:7.454545Totalsolveriterations:2VariableValueReducedCostX1.2727270.000000Y1.6363640.000000RowSlackorSurplusDualPrice17.4545451.00000020.0000000.9090909E-0130.0000000.5454545(7)Lingo的不同保存类型“LG4”表示LINGO格式的模型文件,是一种特殊的二进制格式文件,保存了我们在模型窗口中所能够看到的所有文本和其他对象及其格式信息,只有LINGO能读出它,用其他系统打开这种文件时会出现乱码“LNG”表示LINGO文本文件,以这个格式保存模型时系统将给出警告,因为模型中的格式信息(如字体、颜色等)将会丢失“LDT”表示数据文件“LTF”表示命令脚本文件“LGR”表示报告文件除“LG4”文件外,这里的另外几种格式的文件其实都是普通的文本文件,可以用任何文本编辑器打开和编辑•运行状态窗口Variables(变量数量):变量总数(Total)、非线性变量数(Nonlinear)、整数变量数(Integer)。Constraints(约束数量):约束总数(Total)、非线性约束个数(Nonlinear)。Nonzeros(非零系数数量):总数(Total)、非线性项系数个数(Nonlinear)。GeneratorMemoryUsed(K)(内存使用量)•ElapsedRuntime(hh:mm:ss)(求解花费的时间)(8)状态窗口的参数解释•运行状态窗口求解器(求解程序)状态框当前模型的类型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以I开头表示IP,以PI开头表示PIP)当前解的状态:GlobalOptimum,LocalOptimum,Feasible,Infeasible“(不可行),Unbounded“(无界),Interrupted“(中断),Undetermined“(未确定)解的目标函数值当前约束不满足的总量(不是不满足的约束的个数):实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界命令形式给出的约束)目前为止的迭代次数•运行状态窗口扩展的求解器(求解程序)状态框使用的特殊求解程序:B-and-B(分枝定界算法)Global(全局最优求解程序)Multistart(用多个初始点求解的程序)目前为止找到的可行解的最佳目标函数值目标函数值的界特殊求解程序当前运行步数:分枝数(对B-and-B程序);子问题数(对Global程序);初始点数(对Multistart程序)有效步数2lingo编程2.1LINGO模型构成的4个段(1)集合段(SETSENDSETS)(2)数据段(DATAENDDATA)(3)初始段(INITENDINIT)(4)目标与约束段Lingo的编程优化问题的一种建模语言。使用者可以只用键入一行文字就可以建立起含有大规模变量的目标函数和成千上万条约束LINGO模型的构成:4个段集合段(SETSENDSETS)数据段(DATAENDDATA)初始段(INITENDINIT)目标与约束段2.2集合段(1)集:集是一群相联系的对象(集部分是LINGO模型的一个可选部分,即一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们,集部分以关键字“sets:”开始,以“endsets”结束(2)成员:集的对象(3)属性:集成员可能有一个或多个与之有关联的特征,称为属性(属性值可以预先给定,也可以是未知的,有待于lINGO求解)(4)集的类型集合的类型集合派生集合基本集合稀疏集合稠密集合元素列表法元素过滤法直接列举法隐式列举法setname[/member_list/][:attribute_list];setname(parent_set_list)[/member_list/][:attribute_list];SETS:CITIES/A1,A2,A3,B1,B2/;ROADS(CITIES,CITIES)/A1,B1A1,B2A2,B1A3,B2/:D;ENDSETSSETS:STUDENTS/S1..S8/;PAIRS(STUDENTS,STUDENTS)|&2#GT#&1:BENEFIT,MATCH;ENDSETS说明:集名字必须严格符合标准命名规则:以字母或下划线(_)为首字符,其后由字母(A—Z)、下划线、阿拉伯数字(0,1,…,9)组成的总长度不超过32个字符的字符串,且不区分大小写。如果集成员放在集定义中,那么对它们可采取显式罗列(必须为每个成员输入一个不同的名字,中间用空格或逗号搁开)和隐式罗列(不必罗列出每个集成员。可采用如下语法:setname/member1..memberN/[:attribute_list];这里的member1是集的第一个成员名,memberN是集的最末一个成员名。LINGO将自动产生中间的所有成员名)两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们,如:!集部分;sets:students:sex,age;endsets!数据部分;data:students,sex,age=John116Jill014Rose017Mike113;enddata集合元素的隐式列举类型隐式列举格式示例示例集合的元素数字型1..n1..51,2,3,4,5字符-数字型stringM..stringNCar101..car208Car101,car102,…,car208星期型dayM..dayNMON..FRIMON,TUE,WED,THU,FRI月份型monthM..monthNOCT..JANOCT,NOV,DEC,JAN年份-月份型monthYearM..monthYearNOCT2001..JAN2002OCT2001,NOV2001,DEC2001,JAN20022.3运算符的优先级优先级运算符最高#NOT#—(负号)^*/+-#EQ#相等#NE#不相等#GT#大于#GE#大于或等于#LT##LE##AND##OR#最低(=)=(=)2.4数据段data:变量1=数据列;变量2=数据列;……;Enddata例1sets:set1/A,B,C/:X,Y;endsetsdata:X=1,2,3;!注意属性值的个数必须等于集成员的个数。Y=4,5,6;enddata例2有时只想为一个集的某个属性的部分成员指定值,而让该属性的其余成员的保持未知,以便让LINGO去求出它们的最优值。在数据声明中输入两个相连的逗号表示该位置对应的集成员的属性值未知。两个逗号间可以有空格。sets:years/1..5/:capacity;endsetsdata:capacity=,34,20,,;enddata属性capacity的第2个和第3个值分别为34和20,其余的未知2.5初始段init:变量列=数据列;Endinit说明:(1)初始部分输入的值仅被LINGO求解器当作初始点来用,并且仅仅对非线性模型有用。和数据部分指定变量的值不同,LINGO求解器可以自由改变初始部分初始化的变量的值。(2)初始部分的初始声明规则和数据部分的数据声明规则相同。也就是说,我们可以在声明的左边同时初始化多个集属性,可以把集属性初始化为一个值,可以用问号实现实时数据处理,还可以用逗号指定未知数值。init:X,Y=0,.1;endinitY=@log(X);X^2+Y^2=1;好的初始点会减少模型的求解时间。init:X,Y=,.1;endinitinit:X,Y=?,.1;endinit2.6目标和约束段目标函数约束条件2.7各种函数(1)常用函数@sin(x);@cos(x);@tan(x);@exp(x);@log(x);@abs(x);@smax(x);@smin(x);@sign(x);符号函数(与数学中的符号函数一致)@floor(x);原点方向取整(2)变量界定函数@bnd(L,x,U):限定LxU;@bin(x):限定x取0、1值;@free(x):取消x的非负限制;@gin(x):限定x为整数(generalinterger)(3)集合循环函数@function(setname(index_list)|condition:expression)其中function=for、max、minorsum。(4)txt文件与lingo变量之间的数据连接@file(‘外部文件路径\文件名.txt’):把外部txt文件数据传到lingo;@txt((‘外部文件路径\文件名.txt’):把lingo变量数据传到外部.txt文件.sets:s/1..10/;ss(s,s):x1;endsetsdata:x1=@file(‘C:\DocumentsandSettings\Owner\桌面\t.txt’);enddatasets:ss/1..10/;ww(ss,ss):s;endsetsdata:@text('C:\DocumentsandSettings\Owner\桌面\o.txt')=s;enddata(5)Lingo与excel的数据链接X=@ole(‘路径\文件名.xls’,’范围’):xls数据给了lingo的x;@ole(‘已有的路径\文件名.xls’,’范围’)=x:把lingo中的x给了已有的excel文件。(6)集合处理函数@in(setname,&1,&2,&3):如果setname的元素包含本集合的元素值为1,否则为0。如:sets:stu/zhang,li,zhao/:s;pass/zhang,li/:p;false(stu)|#not#@in(pass,&1):f;endsets@index(setname,set_element):给出set_element在setname中的下标。如:sets:stu/zhang,li,zhao/:s;endsetsa=@index(stu,li);@wrap(I,N):例如wrap(1,7)=1,wrap(2,7)=2,wrap(n*7,7)=7,wrap(8,7)=1与而mod(n×7,7)=0(n为正整数),可见就是正好是倍数时二者有区别。@size(setname):集合大小。@if(logical_condition,true_result,false_resule)3应用举例例1给定一个直角三角形,求包含该三角形的最小正方形sets:object/1..3/:f;endsetsdata:a,b=3,4;enddataf

1 / 125
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功