对 GLPK 中的二进制变量求和
Sum the binary variables in GLPK
我是 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;
总是产生错误。
谢谢。
这只是语法问题。约束应如下所示:
s.t. c1: sum{i in I, j in I}(Y[i,j]) = 6;
约束名称后的第一个括号表示约束应用于每个 [I, I]
。您想要的是修复问题中所有 Y
的总和,因此您需要约束只对您的问题应用一次(因此删除这些括号)。
在求和语法中,不要将要求和的变量放在括号中,它们属于它们之后。在括号内您可以定义总和的范围。
我是 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;
总是产生错误。
谢谢。
这只是语法问题。约束应如下所示:
s.t. c1: sum{i in I, j in I}(Y[i,j]) = 6;
约束名称后的第一个括号表示约束应用于每个 [I, I]
。您想要的是修复问题中所有 Y
的总和,因此您需要约束只对您的问题应用一次(因此删除这些括号)。
在求和语法中,不要将要求和的变量放在括号中,它们属于它们之后。在括号内您可以定义总和的范围。