运筹优化学习04:Lingo的sum函数和for函数的使用方法介绍

目录

1 sum函数

2 for函数

3 一个示意性的演示程序


在使用lingo集合语言编程中,我们经常使用到for和sum这两个函数,本文以实测示例对这两个函数的使用方法进行介绍

1 sum函数

使用语法:

@sum(集合(下标):集合表达式)

冒号之前定义要参与求和的下标,之后定义与前述下标相关的集合表达式

代码示例

表达方式 示例
数学表达式 min = \sum_{i = 1}^{3}\sum_{j=1}^{3}x(i)*d(i,j)
Lingo编码 min = @sum(arc(i,j) : x(i) * d(i,j));
Latex编码 min = \sum_{i = 1}^{3}\sum_{j=1}^{3}x(i)*d(i,j)

2 for函数

使用方法:

@for(集合(下标)[|逻辑表达式] : 集合表达式);

冒号之前定义要参与求和的下标,之后定义与前述下标相关的集合表达式;逻辑表达式定义了存在于下标之间的约束关系

表达方式 示例
数学表达式 x(i) < 10; i \in \{1,2,3\}
Lingo编码 @for(node(i) : x(i) < 10);
Latex编码 x(i) < 10; i \in \{1,2,3\}

@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

如果喜欢我的分享,可关注以下两个公众帐号

 

你可能感兴趣的:(运筹优化)