我在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 . 有人知道它有什么不对吗?

我不太确定,如果这是足够的信息 . 所以让我知道,如果它太混乱了 .