Java 两个决策变量的复杂乘积

Java Cplex Product of two Decision Variables

有没有办法在 cplex java 中获取两个不同决策变量的乘积并将其添加到 objective 函数中?

例如

决策变量 -> x[i]

决策变量 -> y[j]

-> x[i]*y[j]

这样的乘法应该是可行的,因为它仍然是线性的对吗?

感谢

@TimChippingtonDerrick (https://whosebug.com/users/2108433/timchippingtonderrick)

@rkersh (https://whosebug.com/users/1718477/rkersh)

我找到了问题的答案。

起初这样的 objective 函数不是线性的。这就是为什么例如

IloLinearNumExpr expressionName = cplex.linearNumExpr(); expressionName.addTerm(x[i],y[j]);

将不起作用,因为线性模型不支持这种乘法。只有带系数的变量才能添加到这样的线性表达式中。

第二部分,通过Cplex提供的例子QPex1.java

我可以编写两个决策变量的乘积并将它们添加到 objective 函数中,如下例所示:

IloNumExpr objective = cplex.numExpr();

for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        objective = cplex.sum(objective,cplex.prod(y[i], z[j][i]));
    }
}
cplex.addMinimize(objective);