我正在尝试用Java制定一个VRPTW模型,OPL中的一个模型也可以,但是我一直受到一个约束的困扰:
a [i] [k] + t [i] [j]-a [j] [k] + M * x [i] [j] [k] = M
我得到错误消息:IloLinearNumExpr类型的方法addTerm(double,IloNumVar)不适用于参数(double)。 似乎只有t [i] [j]是双精度并基于其他两个双精度来计算才是问题:t [i] [j] = d [i] [j] + s [i]; >
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
for(int k = 0; k < v; k++) {
if(i != j) {
IloLinearNumExpr expr8 = cplex.linearNumExpr();
expr8.addTerm(1.0, a[i][k]);
expr8.addTerm(t[i][j]);
expr8.addTerm(-1.0, a[j][k]);
expr8.addTerm(M, x[i][j][k]);
cplex.addLe(expr8, M);
任何想法都欢迎。 谢谢!
答案 0 :(得分:0)
您应该使用setConstant。
expr8.setConstant(t[i][j]);
致谢