2

我是 GLPK 的新手。这是我的一些代码:

set I := setof{(i,r,p,d) in T} i;
var Y{I,I}, binary;
s.t. c1{i in I, j in I}: sum{Y[i,j]} = 6;

我只想在 Y 中有六个值为 1 的值。谁能告诉我如何以正确的方式做到这一点?因为 stc1{i in I, j in I}: sum{Y[i,j]} = 6;总是产生错误。

谢谢你。

4

1 回答 1

3

这只是一个语法问题。约束应如下所示:

s.t. c1: sum{i in I, j in I}(Y[i,j]) = 6;

约束名称后的第一个括号表示约束应用于每个[I, I]. 您想要的是解决问题中所有Y问题的总和,因此您需要将约束仅应用于您的问题一次(因此删除这些括号)。在 sum-syntax 中,不要将要求和的变量放在括号中,它们属于它们之后。在括号内,您可以定义总和的范围。

于 2015-06-30T08:43:40.153 回答