java - 在 CPLEX Java API 中对目标函数进行建模
问题描述
我正在尝试使用 java 在 Cplex 中对目标函数sum(i in Sites,j in Sites, k in Routings)(c[i][j] * x[i][j][k]*TruckKmCost)进行建模。
IloLinearNumExpr expr = cplex.linearNumExpr();
for (int i = 1; i <= nbFarmer; i++) {
for (int j = 1; j <= nbFarmer; j++) {
for (int k = 1; k <= nbRouting; k++) {
expr.addTerm(truckKmCost, c[i][j],x[i][j][k]);
}
}
}
这是我的尝试,但 addTerm 方法只接受 (double, IloNumVar),我无法将 c[i][j] 转换为 IloNumVar,因为我需要它作为 int,所以我可以将我的 int 值添加到它。
必须有一个非常简单的解决方案,也许有人可以帮助我,我现在有点难过。
非常感谢!
解决方案
您没有指定c[i][j]
是变量还是数字。根据这一点,您的问题有两种不同的解决方案:
- 如果 case
c[i][j]
是一个数字,则只需编写expr.addTerm(truckKmCost * c[i][j], x[i][j][k])
,即将两个数字合并为一个参数addTerm
。 - 如果
c[i][j]
是变量,那么您的目标不是线性的,而是二次的。在这种情况下,您不能使用IloLinearNumExpr
但必须使用IloQuadNumExpr
.addTerm()
此类的 将两个变量作为参数。
推荐阅读
- r - R包“DistributionUtils”安装错误
- javascript - keyup 事件仅从第一个输入中获取值,其中多个在具有相同名称和 id 的表中可用
- azure-powershell - 在 Win Server 2012 R2 上远程升级 PowerShell 版本
- spring - Post Request 的 API 版本控制的错误 Header 不来handleNoHandlerFoundException?
- php - errno: 150 "外键约束格式不正确")
- npm - 如何解决 Azure Pipeline 错误:Npm failed with return code: 1, npm install task。SyntaxError:在附近解析时 JSON 输入意外结束
- reactjs - 条件导航栏?
- three.js - three.js mousepick(raycaster)不适用于加载的模型
- ruby-on-rails - 方法 sort_by 已弃用 - 可能的解决方案?
- matplotlib - 如何用西里尔文的 TEX 代码渲染 Matplotlib 绘图