1.什么是集
集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于 LINGO 求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。
LINGO中的集分为两种,原始集和派生集,原始集由一些基本的对象组成,派生集是由一个或多个原始集定义的。
2.定义集的方式
集部分以关键词“sets:”开始,以“endsets”结束,一个模型可以没有集部分或只有一个简单的集部分。
定义原始集:
包含三个内容:集的名字,集的成员,集的属性。其语法为:setname[/member_list/][:attribute_list];其中setname是集的名字,member_list是集成员列表,attribute_list是集成员的属性列表。对于集成员列表,涉及到罗列方式的问题:若是显式罗列,必须逐个列出成员,中间以逗号或空格隔开,允许混合使用;若是隐式罗列,可采用相应语法:setname/member1..memberN/[: attribute_list];member1是第一个成员名,memberN是最末一个成员名,LINGO将自动产生中间的所有成员名,示例程序如下:
sets:
warehouses/wh1..wh6/:capacity;
vendors/v1..v8/:demand;
endsets
定义派生集:
包含四个内容:集的名字,父集的名字,集的成员,集的属性。其语法为:setname(parent_set_list)[/member_list/][:attribute_list];其中parent_set_list是已定义的集的列表,多个时可用逗号隔开