…,Car14
DayM..DayN Mon..Fri Mon,Tue,Wed,Thu,Fri
③ 集成员不放在集定义中,而在随后的数据部分来定义。
例 2.2
集部分
)!4!注意无成员定义,仅由集的名称和成员的属性;
数据部分
)!4%01
0&
2&$
3
注意:开头用感叹号(
!
),末尾用分号(
;
)表示注释,可跨多行。
在集部分只 定义了一个集 students,并 未指定成员。在数据部分罗列了集成员
John、Jill、Rose 和 Mike,并对属性 sex 和 age 分别给出了值。
2.2.2 定义派生集
为了定义一个派生集,必须详细声明:
[1]集的名字[2]父集的名字[3]集的成员(可选)[4]集成员的属性(可选)
可用下面的语法定义一个派生集:
setname(parent_set_list)[/member_list/][:attribute_list];
setname 是集的名字。parent_set_list 是已定义的集的列表,多个时必须用逗号隔
开。如果没有指定成员列表,那么 LINGO 会自动创建父集成员的所有组合作为派生集的
成员,相当于由父集形成的完全集。派生集的父集既可以是原始集,也可以是其它的派生
集。
例 2.3
5,)
136
7!此三个集合均没有定义属性;
75,) 17!
LINGO 生成了三个父集的所有组合共八组作为 allowed 集的成员。列表如下:
编号 成员
1 (A,M,1)
1 2 (A,M,2)
2 3 (A,N,1)
3 4 (A,N,2)
4 5 (B,M,1)
5 6 (B,M,2)
6 7 (B,N,1)
7 8 (B,N,2)
成员列表被忽略时,派生集成员由父集成员所有的组合构成,这样的派生集成为稠密
集。如果限制派生集的成员,使它成为父集成员所有组合构成的集合的一个子集,这样的
派生集成为稀疏集。同原始集一样,派生集成员的声明也可以放在数据部分。一个派生集
的成员列表有两种方式生成:①显式罗列;②设置成员资格过滤器。当采用方式①时,必
须显式罗列出所有要包含在派生集中的成员,并且罗列的每个成员必须属于稠密集。使用
前面的例子,显式罗列派生集的成员:
75,) 17366
如果需要生成一个大的、稀疏的集,那么显式罗列就很讨厌。幸运地是许多稀疏集的成员
都满足一些条件以和非成员相区分。我们可以把这些逻辑条件看作过滤器,在 LINGO 生
成派生集的成员时把使逻辑条件为假的成员从稠密集中过滤掉。