我遇到了在cplex java中为旅行商问题设置了地下消除约束的问题。 TSP是为一组客户找到最便宜的路线n,而每个客户应该只访问一次。
一位朋友给了我这些cplex代码行,用于正常TSP中的subour消除,这应该是正确的:
forall (i in Nodes) Drive [i][i]==0;
forall (i in Nodes, j in 2..n:(i!=j)) y[i]-y[j] + n*Drive[i][j] <= (n-1);
我把它转移到下面的cplex java代码中:
for(int i0=0; i0<n; i0++){
for(int q=0; q<n; q++){
model.addEq(w[i0][i0][q], 0);
}
}
for(int i=1; i<n; i++){
for(int j=2; j<n; j++){
for(int y=0; y<n; y++){
model.addLe(model.sum((grossQ[i-1]-grossQ[j-1]), model.prod(n, drive[i][j][y])), (n - 1));
}
}
}
我正在使用基于位置的模型和决策变量drive [i] [j] [q],其中q表明访问客户的位置。 数组grossQ = [2..n]
代码没有显示任何错误,但解决方案仍然有一个subour。有人知道它有什么不对吗?
我不太确定,如果这是足够的信息。所以让我知道,如果它太混乱了。