java - Gurobi:如何添加约束x1*x2*x3

标签 java python linear-programming gurobi

我希望在 Gurobi 中添加约束 n1 = x1 * x2 *x3,其中 x1x2x3 是带有 0 或 1 的变量。不幸的是,找不到解决方案。

有人可以帮助我吗?

最佳答案

您正在尝试对二元变量创建看似非线性的约束。您可以通过记下 n 将其建模为一系列线性约束。当且仅当 x1、x2 和 x3 均为 1 时,值为 1。

// only if part
model.addConstr(n, GRB.LESS_EQUAL, x1);
model.addConstr(n, GRB.LESS_EQUAL, x2);
model.addConstr(n, GRB.LESS_EQUAL, x3);

// if part
GRBLinExpr all_three;
all_three.addTerm(1.0, x1);
all_three.addTerm(1.0, x2);
all_three.addTerm(1.0, x3);
all_three.addConstrant(-2);
model.addConstr(n, GRB.GREATER_EQUAL, all_three);

这增加了约束 n >= x1 + x2 + x3 - 2n <= min(x1, x2, x3) .

关于java - Gurobi:如何添加约束x1*x2*x3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25012778/

相关文章:

python - 使用 Scipy 记录正态随机变量

python - 如何在 matplotlib 中的子图中选取一个点并在相邻子图中突出显示它(点区域的扩展)

python - 有没有办法使用 Google OR Tools for python 设置析取约束?

python - pyomo环境下添加约束

java - 处理来自 BT 芯片的周期性心跳消息

Java USB 事件监听器,用于在 USB 插入时收到通知

python - 为什么在 django 中进行大型查询(或一系列查询)后内存没有释放到系统?

java - Selenium 定位器 - linkText 和 partialLinkText - 同一文本的多个实例

java - 安卓应用架构 : How should the packages be formed?

haskell - 在 Haskell/Linear 编程包中运行其他程序