在使用lingo集合语言编程中,我们经常使用到for和sum这两个函数,本文以实测示例对这两个函数的使用方法进行介绍
1 sum函数
使用语法:
@sum(集合(下标):集合表达式) |
冒号之前定义要参与求和的下标,之后定义与前述下标相关的集合表达式
代码示例
2 for函数
使用方法:
@for(集合(下标)[|逻辑表达式] : 集合表达式); |
冒号之前定义要参与求和的下标,之后定义与前述下标相关的集合表达式;逻辑表达式定义了存在于下标之间的约束关系
@for(CXC:@BIN(X)); 经集合X中所有元素设置为二进制变量,CXC为集合X为集合的实例
3 一个示意性的演示程序
model: sets: node/1..3/:x; arc(node,node):d; endsets data: x = 1,2,4; d = 1 1 1 2 2 2 3 3 3 ; enddata min = @sum(arc(i,j) : x(i) * d(i,j));!单独使用sum函数; @for(node(i) | i #ne# 2: x(i) < 10);!单独使用for函数,无效约束,只为说明for函数的使用方法; @for(node(i) : @sum(node(j) : x(i) * d(i,j)) < 10000000);!for与sum结合使用,无效约束,只为说明for函数和sum函数结合使用的方法; end