Lingo_集合小结

版权声明:by goog https://blog.csdn.net/qq_39481214/article/details/81812998

Lingo_集合小结

这里写图片描述
现在,我们归纳一下基本集合和派生集合的定义语法。基本集合的定义格式为(以下语 法中凡是在方括号“[ ]”中的内容,表示是可选的项,即该项可以有也可以没有):
setname [/member_list/] [: attribute_list];
其中 setname 为定义的集合名,member_list 为元素列表,attribute_list 为属性列 表。元素列表可以采用显式列举法(即直接将所有元素全部列出,元素之间用逗号或空格分 开),也可以采用隐式列举法。

隐式列举法可以有几种不同格式:
这里写图片描述
上面的语法还告诉我们元素列表和属性列表都是可选的。当属性列表不在集合定义中出 现时,这样的集合往往只是为了将来在程序中作为一个循环变量来使用;而当元素列表不在 集合定义中出现时,则必须在程序的数据段以赋值语句的方式直接给出元素列表。
例如:

model:
SETS:
    QUARTERS:DEM,RP,OP,INV; !注意没有给出元素列表;
ENDSETS
DATA:
    QUARTERS DEM=1 40 2 60 3 75 4 25; !注意LINGO按列赋值的特点;
ENDDATA
end

派生集合的一般定义格式为:
setname(parent_set_list) [/member_list/] [: attribute_list];

其中与基本集合的定义相比较只是多了一个 parent_set_list(父集合列表)。父集合列 表中的集合(如 set1,set2,…,等)称为派生集合 setname 的父集合,它们本身也可以 是派生集合。当元素列表(member_list)不在集合定义中出现时,还可以在程序的数据段 以赋值语句的方式给出元素列表;若在程序的数据段也不以赋值语句的方式给出元素列表, 则认为父集合中所有元素的组合(笛卡儿积)都是 setname 的元素。当元素列表在集合定义 中出现时,又有“元素列表法”和“元素过滤法”两种不同方式.

猜你喜欢

转载自blog.csdn.net/qq_39481214/article/details/81812998