java - Cplex Java 将 expr(sum) 添加到目标函数

标签 java cplex

我有以下目标函数:

最小化所有 k (1..n) 的总和 (trueck[k] - time[k])。

我尝试这样设置:

IloLinearNumExpr obj = cplex.linearNumExpr();

for(int k=0; k<grossK.length; k++){
    obj.addTerm(1.0, cplex.sum(trueck[k], cplex.negative(time[k])));
}

cplex.addMinimize(obj);

第4行的eclipse错误消息是:

“类型 IloLinearNumExpr 中的方法 addTerm(double, IloNumVar) 不适用于参数 (double, IloNumExpr)”

我猜“addTerm”方法是错误的,但我找不到解决方案。 提前致谢。

最佳答案

不要在addTerm内使用cplex.sum。您只需在目标函数中分离出这两项,因为它们都是通过 k 求和的。

最小化所有 k (1..n) 的总和 (trueck[k] - time[k])

与 Min *sum_over_k* (trueck[k]) - *sum_over_k* (time[k]) 相同

这样addTerm就可以处理了。 (下面的代码未经测试,但它让您了解应该尝试什么。)

IloLinearNumExpr obj = cplex.linearNumExpr();

for(int k=0; k<grossK.length; k++){
    obj.addTerm(1.0, trueck[k]);
    obj.addTerm(-1.0, time[k]);
}

cplex.addMinimize(obj);

希望有帮助。

关于java - Cplex Java 将 expr(sum) 添加到目标函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17960904/

相关文章:

python - 如何在 DOCPLEX (Python) 上使用连续变量进行 IF-THEN 约束?

java - Java 中使用 Flatbuffers 进行字符串去重

java - 找不到虚拟机错误 : Eclipse

java - 使用 JavaFX 2.1 编译运行

java - 调用 IBM ILOG CPLEX 时出现 EXCEPTION_ACCESS_VIOLATION

user-interface - Mac上的CPLEX Optimization Studio GUI

java - jbpm 6 - 示例 Web 应用程序 "rewards-basic"错误

Java - 都是实例对象吗?所有对象都是实例吗?

python - 在 OS X Lion 上强制 Python 为 32 位

java - CPLEX Java - 获取 IloNumExpr 和数字之间的最小值