min = @sum(links: c * x);
@for(supplys(i): @sum(demands(j): x(i,j))=S(i));
注意到随着 i=1,2,3的 变化,这实际上是 3 个式子。要表示这种多个重复式子,就用到Lingo里的 @for() 函数,首先得告诉它有多少重复的式子,同样只能用声明的(对应的)数组来告诉,这里是 supplys(i), 并用 i 表示重复的索引。
- @for 冒号前写的部分表达的意思是有多少个这样的式子,冒号后写的是式子的内容是什么
因为出现求和,所以@for的内层用@sum
- @sum 冒号前写的部分表达的意思是如何加和,用到的下标是求和符号下的。即上边的 j
整个意思就是,当i=1时,在 x 1 j x_1j x1j中,从j=1加到j=4的值等于 s i s_i si
如果看成二维的话,相当于把第 i 行的所有数相加的和等于
s
i
s_i
si
@for(demands(j): @sum(supplys(i): x(i,j)) = D(j));
写法和上述相同
如果看成二维的话,相当于把第 j 列的所有数相加的和等于 D i D_i Di
只是简单的记录,免得以后忘了