我正在使用带有 Java 的求解器 Gurobi;我阅读了所有 Gurobi 的参考手册,但我仍有一些问题
- 可以优化没有目标函数的模型还是我必须放一个?
- 可以添加像“x=0 if c>a”这样的约束,其中 x 是决策变量并且 c 和 a 是已知的?
有人可以帮助我吗?
谢谢。
我正在使用带有 Java 的求解器 Gurobi;我阅读了所有 Gurobi 的参考手册,但我仍有一些问题
有人可以帮助我吗?
谢谢。
你不需要有一个目标函数,但如果你没有,Gurobi 会考虑任何可行的解决方案和下一个一样好,即使是(对你来说)显然不是你想要的。
在使用 Java(或几乎任何接口)求解 Gurobi 模型时,您可以区分在获得 Gurobi 解决方案之前已知的值和在获得解决方案之前不知道的值。第一种情况包括纯 Java 变量和硬编码常量。后者包括决策变量。在您的示例中,您可以编写类似
if (c > a) { grb.addConstr(x, '=', 0); }
因为 c 和 a 都是 Java 变量,而不是决策变量。如果 c 或 a 是决策变量,您仍然可以对约束进行建模,但您需要添加二进制变量。