在Julia中使用指示符约束

在Julia中使用指示符约束,julia,julia-jump,Julia,Julia Jump,跳转为创建指标约束提供了一种特殊的语法。那么,哪一种更好,线性化指标约束,然后编写代码还是使用此功能 为了约束约束x+y{x+y,答案取决于问题和解算器。您应该尝试这两种方法,并对它们进行计时,以找出哪种方法对您的问题更有效 一些解算器(如Gurobi)对指标有特殊支持,在这种情况下,直接使用指标可能更快。如果您使用的解算器对指标没有特殊支持,我们将指标约束转换为SOS-I约束() big-M类型线性化的质量将取决于使用领域知识选择一个好的big-M。JuMP不会自动进行big-M重新格式化。对

跳转为创建指标约束提供了一种特殊的语法。那么,哪一种更好,线性化指标约束,然后编写代码还是使用此功能


为了约束约束x+y{x+y,答案取决于问题和解算器。您应该尝试这两种方法,并对它们进行计时,以找出哪种方法对您的问题更有效

一些解算器(如Gurobi)对指标有特殊支持,在这种情况下,直接使用指标可能更快。如果您使用的解算器对指标没有特殊支持,我们将指标约束转换为SOS-I约束()


big-M类型线性化的质量将取决于使用领域知识选择一个好的big-M。JuMP不会自动进行big-M重新格式化。

对不起,我不认为“自己尝试并解决它”是一个有效的答案。这并不能真正为未来的观众(或OP)提供任何信息答案是“视情况而定”,因此鼓励人们尝试这一方法正是他们应该做的。我编辑了这篇文章以提供更多细节。但答案仍然是“视情况而定”,我鼓励未来的读者尝试多种配方。建模是一门艺术,而不是一门科学。
@variable(model, x)
@variable(model, y)
@variable(model, z, Bin)
@constraint(model, z => {x + y <= 2})