java - 两个决策变量的 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 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);
推荐阅读
- java - 在 sbt 中添加类路径位置
- rundeck - 安装 EC2-steps-plugin 时遇到问题
- javascript - 在 JSP 中看不到 Json 数据结果
- c++ - 从 .tsv 文件读入
- node.js - 从 Angular 和 Nodejs 请求 API 时出错
- python - 从python中的多行Excel工作表生成项目和子项目字段
- javascript - 为什么将 console.log() 放置在呈现视图的函数中时会重复打印一个变量?
- c# - 使用 JSON JavaScriptSerializer 在序列化或反序列化期间出现错误
- reactjs - React js CRUD - 添加数据时如何自动更新表而不刷新
- javascript - 在时间段之间获得整个三个月