两个决策变量的Java Cplex产品

时间:2018-08-22 21:03:12

标签: java cplex

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

例如。

决策变量-> x [i]

决策变量-> y [j]

-> x [i] * y [j]

这种乘法应该是可能的,因为它仍然是线性的吧?

1 个答案:

答案 0 :(得分:1)

感谢

@TimChippingtonDerrick(https://stackoverflow.com/users/2108433/timchippingtonderrick

@rkersh(https://stackoverflow.com/users/1718477/rkersh

我找到了解决问题的方法。

首先,这样的目标函数不是线性的。这就是为什么

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

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

对于第二部分,通过Cplex QPex1.java

提供的示例

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

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);