在GLPK中求和二进制变量

时间:2015-06-29 18:47:56

标签: sum constraints ampl glpk mathprog

我是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.有人能告诉我如何以正确的方式进行操作吗?因为s.t. c1{i in I, j in I}: sum{Y[i,j]} = 6;总是会产生错误。

谢谢。

1 个答案:

答案 0 :(得分:3)

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

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

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