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