java - 在 CPLEX Java API 中对目标函数建模

标签 java cplex operations-research

我正在尝试对目标函数进行建模sum(i in Sites,j in Sites, k in Routings)(c[i][j] * x[i][j][k]*TruckKmCost ) 在 Cplex 中使用 java。

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]是变量还是数字。根据这一点,您的问题有两种不同的解决方案:

  1. 如果 c[i][j] 是一个数字,则只需编写 expr.addTerm(truckKmCost * c[i][j], x[i][j][ k]),即将两个数字合并为 addTerm 的一个参数。
  2. 如果 c[i][j] 是一个变量,那么您的目标不是线性的,而是二次的。在这种情况下,您无法使用 IloLinearNumExpr,但必须使用 IloQuadNumExpr。此类的 addTerm() 采用两个变量作为参数。

关于java - 在 CPLEX Java API 中对目标函数建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714069/

相关文章:

java - 使用通配符创建新的通用对象

java - NoSuchMethodError JDBI

java - Jsoup 解析一个表 3 次?

cplex - 将 Excel 文件连接到 CPLEX

Eclipse 中的 Java 分析 - 调用堆栈

java - 即使将 cplex.jar 添加到 lib 后,ilog 包也不存在

c - "Symbols not found for Architecture x86_64"对于在 C 中使用 CPLEX API 的 MEX 文件

precision - CPLEX 中没有输入变化很小的解

linear-programming - AMPL 中的非负偏差变量