- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二讲 集合的使用
1. 集合的使用
集合是一些相关对象的全体.集合中的每一个元素都有一个或多个与之相关的特征, 这特征称为属性.
在求解LINGO模型时,这些属性可以已知或未知.例如,在一个产品集合中,可以将每一个产品的价格作为属性;在一个卡车的模型中,可以将每一辆的运输能力作为属性;在一个雇员模型中,可以将每一个雇员的工资作为属性,也可以将每个雇员的生日作为属性.
LINGO具有基本集合和衍生集合两种类型.基本集合的元素不能被进一步简化.衍生集合可以被定义为使用一个或多个其他集合的集合.换句话说,衍生集合是由已存在的集合作为元素衍生形成的.此外,衍生集合也可以由其他的衍生集合形成.
1.1 模型的集合域
集合可以在LINGO模型的任意位置定义,定义集合的语句被称为集合域.集合域以关键字“SETS:”开始,以关键字“ENDSETS”结束.一个模型中可以没有集合域,也可以有一个或多个集合域,并且集合域可以出现在模型的任意位置,唯一的限制就是必须在模型的约束条件使用集合之前定义集合及属性.
1.1.1 基本集合的定义
基本集合包括如下参数:
集合的名称;
集合包含的元素,即集合中的对象(可选);
集合中元素的所有属性(可选).
语法:
setname[/member_list/][:attribute_list];
集合的名称(setname)是用来标志集合的,它最好具有一定的描述性,以便记忆或区分.命名集合有一定的规则:集合名称必须以字母开头,后面是其他字母或下画线.LINGO集合名称中的字母不区分大小写.
元素列表(member_list)是组成集合的元素的列表.如果集合元素包含在集合的定义中,可以将它们直接或间接列出;如果集合元素不包含在集合的定义中,可以随后在模型的数据域中对其进行定义.
使用间接列表语法:
setname/member1..memberN/[:attribute_list];
member1是集合中的第一个元素,memberN是集合中的最后一个元素.LINGO自动生成member1到memberN之间的元素名称. 请注意, 起始元素名称和末端元素名称的格式必须一致.
所有可能用到的间接集合元素列表的各式:
格式 举例 集合元素 1..N 1..6 1,2,3,4,5,6 stringM..stringN TRUCKS3..TRUCKS27 TRUCKS3,TRUCKS4,…,TRUCKS27 dayM..dayN MON..FRI MON,TUE,WED,THU,FRI monthM..monthN OCT..JAN OCT,NOV,DEC,JAN monthYearM..monthYearN OCT2001..JAN2002 OCT2001,NOV2001,DEC2001,JAN2002
集合的元素可能有一个或多个属性,这些属性在集合定义中的属性表内列出. 一个属性值就是集合中每一个元素表现出来的特性.属性名称必须遵循标准命名规则,并且用逗号隔开.例如:假设仓库有与其位置和装卸码头数量有关的额外属性,这些额外属性可以被加到集合属性表中, 如下所示:
WAREHOUSES/1..6/:CAPACITY,LOCATION,DOCKS;
1.1.2 衍生集合的定义
衍生集合包括如下参数:
1)集合的名称;
2)集合的父集合名称;
3)集合的元素(可选);
4)集合的元素属性(可选).
语法:
setname(parent_set_list)[/member_list/][:attribute_list];
setname是衍生集合的名称. parent_set_list是先前定义的集合列表, 用逗号隔开. 如果没有指明一个衍生集合的元素列表(member_list), LINGO将采用其父集合元素的所有组合作为衍生集合的元素构建新集合.例如下面的集合域:
SETS:
PRODUCT/A B/;
MACHINE/M N/;
WEEK/1..2/;
ALLOWED(PRODUCT, MACHINE, WEEK);
ENDSETS
PRODUCT, MACHINE, WEEK是基本集合, ALLOWED是从PRODUCT, MACHINE和 WEEK派生出来的集合. ALLOWED使用了所有父集合中的元素.
ALLOWED集合元素:
索引 元素 索引 元素 1 (A,M,1) 5 (B,M,1) 2 (A,M,2) 6 (B,M,2) 3 (A,N,1) 7 (B,N,1) 4 (A,N,2) 8 (B,N,2)
元素列表是可选的,当衍生集合只是父集合所有元素组合中的一部分时,才会用到
文档评论(0)