2.3 模型的集部分

在LINGO中集必须先定义后使用.集部分以关键字“sets:”开始,以“endsets”结束.

2.3.1 定义原始集

定义一个原始集,用下面的语法声明:setname[/member_list/][:attribute_list]

Setname表集的名字,必需的.

Member_list是集成员列表,可以没有.有三种方式:显式罗列、隐式罗列(在定义中)和数据部分来定义.

:attribute_list是属性列表,可以没有.

①显式罗列成员时举例.

【例1】 可以定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和age:

2.3 模型的集部分 - 图1

②隐式罗列成员时举例setname/member1..memberN/[:attribute_list];

这里的member1是集的第一个成员名,memberN是集的最末一个成员名.LINGO将自动产生中间的所有成员名.LINGO也接受一些特定的首成员名和末成员名,用于创建一些特殊的集.列表如下:

2.3 模型的集部分 - 图2

③集成员不放在集定义中,而在随后的数据部分来定义.

【例2】

2.3 模型的集部分 - 图3

2.3 模型的集部分 - 图4

在集部分只定义了一个集students,并未指定成员.在数据部分罗列了集成员John、Jill、Rose和Mike,并对属性sex和age分别给出了值.

2.3.2 定义派生集

可用下面的语法定义一个派生集:

2.3 模型的集部分 - 图5

【例3】

2.3 模型的集部分 - 图6

LINGO生成了三个父集的所有组合,共八组作为allowed集的成员.列表如下:(A,M,1)、(B,M,1)、(A,M,2)、(B,M,2)、(A,N,1)、(B,N,1)、(A,N,2)、(B,N,2)

3 数据部分

数据部分以关键字“data:”开始,以关键字“enddata”结束

2.3 模型的集部分 - 图7

【例1】

2.3 模型的集部分 - 图8

在集set1中定义了两个属性X和Y.A,B,C的X属性值分别是1、2和3,A,B,C的Y属性值分别是4、5和6.

【例2】

2.3 模型的集部分 - 图9

A的X属性值,Y属性值分别是1、4,B的X属性值,Y属性值分别是2、5,C的X属性值,Y属性值分别是3、6.

4 LINGO函数

LINGO有9种类型运算或函数:

1.基本运算符:包括算术运算符、逻辑运算符和关系运算符;

2.数学函数:三角函数和常规的数学函数;

3.金融函数:LINGO提供了两种金融函数;

4.概率函数:LINGO提供了大量概率相关的函数;

5.变量界定函数:这类函数用来定义变量的取值范围;

6.集操作函数:这类函数为对集的操作提供帮助;

7.集循环函数:遍历集的元素,执行一定的操作的函数;

8.数据输入输出函数:这类函数和外部数据源相联系,进行数据的输入输出;

9.辅助函数:各种杂类函数.