我如何使用Minizinc中的fugure链接中的代码? A code that take a minimum number
我试试这个: 约束forall(我在护士中,j在患者中j!= 1)(start [i] == min((到[i,j] +((1-y [i,1,j])* H) - sum(你在病人身上)(dist [1,j] * y [i,1,u])),H));
但它没有限制
答案 0 :(得分:2)
此问题很可能是由于对没有特定域的变量(即var int
)使用等号编码的约束引起的。
当我们分解线性库中的约束时,对于Gurobi,CBC或CPLEX,并非所有语句都可以轻松地重写为线性形式。对于element
或min
约束等约束,我们使用等式编码。这意味着我们对整数变量的每个可能值使用0/1变量,并使用这些新变量来表示我们需要的约束。
这里的问题是,如果变量没有边界,这不起作用。我们必须为整数域中的每个值创建一个0/1变量,根据数学,它将是无限的。由于这对解算器不起作用,因此需要相等编码的约束将需要对所使用的变量进行边界。