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

时间:2013-07-31 03:07:14

标签: 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”错了但我找不到解决方案。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

请勿在{{1​​}}内使用cplex.sum。您只需要在Objective函数中分离出两个术语,因为它们都是通过 k求和。

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

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

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

addTerm

希望有所帮助。

答案 1 :(得分:0)

addTerm方法期待系数和变量。它不期望复杂的表达式(例如A sum)或特定的数值作为第二个参数。您可能想要传递的内容存在逻辑问题,因此您可能需要考虑更新您的问题,并详细说明如果不能为您解决问题,您希望完成哪些工作。换句话说,您尝试输入的术语与您正在使用的线性表达式不兼容。