我试图在java中使用Cplex建模目标函数。我的目标函数是概率和成本表达式的乘积,即:Obj = sum(Pr(i)* Cost(i))。
我这样建模:
IloLinearNumExpr objective = cplex.linearNumExpr();
for (int i=0; i<M; i++){
objective.addTerm(Pc[i],SupplierCost[i]);
}
但我有错误消息“IloLinearNumExpr类型中的方法addTerm(double,IloNumVar)不适用于参数(double,IloLinearNumExpr)”。
有什么问题?
谢谢!
答案 0 :(得分:0)
IloLinearNumExpr.addTerm仅适用于double和IloNumVar。通过错误消息,您的SupplierCost[i]
是IloNumExpr,而不是IloNumVar。您可以使用IloCplex.prod
方法创建新的IloNumExpr并使用IloNumExpr.add方法将生成的IloNumExpr添加到目标中,从而将Pc [i] * Supplier [i]添加到目标。
IloLinearNumExpr objective = cplex.linearNumExpr();
for (int i=0; i<M; i++){
objective.add(cplex.prod(Pc[i],SupplierCost[i]));
}