4.4 集循环函数
集循环函数遍历整个集进行操作.其语法为
@function(setname[(set_index_list)[|conditional_qualifier]]:expression_list);
@function相应于下面罗列的四个集循环函数之一:@for、@sum、@min和@max;
setname是要遍历的集;
set_index_list是集索引列表,相当于下标;
conditional_qualifier是用来限制集循环函数的范围,当集循环函数遍历集的每个成员时,LINGO都要对conditional_qualifier进行评价,若结果为真,则对该成员执行@function操作,否则跳过,继续执行下一次循环.
expression_list是被应用到每个集成员的表达式列表,当用的是@for函数时,expression_list可以包含多个表达式,其间用逗号隔开.这些表达式将被作为约束加到模型中.当使用其余的三个集循环函数时,expression_list只能有一个表达式.如果省略set_index_list,那么在expression_list中引用的所有属性的类型都是setname集.
1.@for
该函数用来产生对集成员的约束.基于建模语言的标量需要显式输入每个约束,不过@for函数允许只输入一个约束,然后LINGO自动产生每个集成员的约束.
【例1】 产生序列{1,4,9,16,25}
2.@sum
该函数返回遍历指定的集成员的一个表达式的和.
【例2】 求向量[5,1,3,4,6,10]前5个数的和.
3.@min和@max
返回指定的集成员的一个表达式的最小值或最大值.
【例3】 求向量[5,1,3,4,6,10]前5个数的最小值,后3个数的最大值.