我有以下目标函数:
最小化所有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”错了但我找不到解决方案。 提前谢谢。
答案 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)或特定的数值作为第二个参数。您可能想要传递的内容存在逻辑问题,因此您可能需要考虑更新您的问题,并详细说明如果不能为您解决问题,您希望完成哪些工作。换句话说,您尝试输入的术语与您正在使用的线性表达式不兼容。