我将变量 linObj
声明为 IloNumExpr
,并且我有 4 个循环(循环元素 i、j、k 和 l),每次我向该变量添加 a其他两个变量的总和,例如:
linObj = cplex.sum(linObj, cplex.sum(s[i][j][j][k],s[i][j][l][k])
当循环关闭时,我将 linObj
声明为目标函数。
现在,我遇到了一个名为 ilog.cplex.MultiObjectiveException
的错误。
最佳答案
除了这个异常(exception),您可能会在循环中执行类似的操作:
linObj = cplex.sum(linObj, cplex.sum(s[i][j][j][k],s[i][j][l][k]);
cplex.addMinimize(linObj);
从而获得多个目标。
仅在循环后调用 cplex.addMinimize(linObj);
,您应该只能获得一个目标。
此外,您应该考虑将代码更改为:
IloLinearNumExpr linObj = cplex.linearNumExpr();
/*loops*/
linObj.addTerm(1, cplex.sum(s[i][j][j][k],s[i][j][l][k]);
/*after loops*/
cplex.addMinimize(linObj);
希望这有帮助
关于java - CPLEX 目标函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26115036/