资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,Lingo软件在最优化问题中的应用,一、Lingo的快速入门。,二、如何在lingo中求解如下的LP问题;,例:如下就是求最优解的问题。,min 2*x1+3*x2,s.t x1+x2=350,x1=100,2*x1+x2=0,则须在模型窗口输入如下代码:,MODEL:,min=2*x1+3*x2;,x1+x2=350;,x1=100;,2*x1+x2=600;,END,三、Lingo中集的使用;,集是Lingo建模语言的基础,是程序设计最强有力的基本构件。借助与集,能够将 一系列相似的约束用一个单一的、简明的 复合公式表示,从而快速方便地表达较大规模的模型。,Lingo有两种类型的集:原始集和派生集。,在Lingo模型中使用集之前,必须事先定义。,集以关键字“sets:”开始,以“endsets”结束。,1、原始集的定义,用下面的语法定义一个原始集:,setname/member_list:attribute_list;,(1)若要一列出集成员:则用显式罗列成员,中间用空格或逗号隔开,也可混合使用。如:,set:,students/Mike Peter,Rose,Carl/:sex,age;,endsets,(2)若不必列出每个集成员,常采用省略形式:即用隐式罗列成员,语法如下:,setname/member1.memberN/:attribute_list;,例如:,隐式成员列表格式,示例,所产生的集成员,1.n,1.5,1,2,3,4,5,StringM.StringN,Car2.car14,Car2,Car3,Car4,.Car14,DayM.DayN,Mon.Fri,Mon,Tue,Wed,Thu,Fri,(3)集成员不放在集定义中,而在随后的数据部分来定义,例:数据部分定义集成员示例。,!集部分;,sets:,students:sex,age;,endsets,!数据部分;,data:,students,sex,age=John 1 16,Jill 0 14,Rose 0 17,Mike 1 13;,enddata,2、派生集的定义,定义一个派生集,用如下语法:,setname(parent_set_list)/member_list/:attribute_list;,其中parent_set_list是已定义集的列表,多个时必须用逗号隔开。如:,set:,product/A B/;,machine/M N/;,week/1.2/;,allowed(product,machine,week):x;,endsets,这里allowed定义为product,machine,week的派生集,其组成成员如下:,(A,M,1),(A,M,2),(A,N,1),(A,N,2),(B,M,1),(B,M,2),(B,N,1),(B,N,2),三、模型的数据部分;,数据部分以关键字“data:”开始,以关键字enddata结束。在这里,可以指定集成员、集的属性。其语法如下:,data:,object_list=value_list;,enddata,object_list通常为集名、属性名,它们用逗号或空格隔开。,value_list是对应于object_list中对象的值,中间用逗号或空格隔开。看如下实例:,例1,sets:,set1/A,B,C/:X,Y;,endsets,data,X=1,2,3;,Y=4,5,6;,enddata,四、Lingo,软件使用的注意事项,。,(1),LINGO中不区分大小写字母,变量(和行名)可以使用不超过32个字符表示,且必须以字母开头。,(2)在命令方式下(Command Window中),必须先输入MODEL:表示开始输入模型。LINGO中模型以“MODEL:”开始,以“END”结束。对简单的模型,这两个语句也可以省略。,(3)LINGO中的语句的顺序是不重要的,因为LINGO总是根据“MAX=”或,“MIN=”语句寻找目标函数,而其它语句都是约束条件(当然注释语句和,TITLE除外),。,(4)LINGO模型是由一系列语句组成,每个语句以分号“;”结。,(5)LINGO中以感叹号“!”开始的是说明语句(说明语句也需要以分号,“;”结束)。,谢谢!,
展开阅读全文