Java Cplex 两个决策变量的乘积

标签 java cplex

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

例如。

决策变量 -> x[i]

决策变量 -> y[j]

-> x[i]*y[j]

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

最佳答案

感谢

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

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

我找到了问题的答案。

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

IloLinearNumExpr 表达式名称 = cplex.linearNumExpr(); 表达式名称.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);

关于Java Cplex 两个决策变量的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975091/

相关文章:

c++ - 让 Cplex 示例运行 : Undefined references

c++ - 如何在 C++ 中修改现有的 cplex 模型

java - DropSolve Cplex 在 T 时间后终止

java - 在 Java 中将 CPLEX 的 IloNumVar 变量转换为 double

python - CPLEX:如何以编程方式检查用户运行的是社区版还是完整版?

java - 数据检索 - Oracle 中 CLOB 列的性能

java - 当窗口大小增加或减小时放大内容

Java - 类字段/方法 getInt

java - volatile 数组和多线程排序

java - 如何制作可调整大小的 JDialog?