Java 我必须使用什么cplex函数来编写这个变量?

Java 我必须使用什么cplex函数来编写这个变量?,java,cplex,Java,Cplex,我有一个用Java(cplex)编写的拨号骑乘问题。 现在我正试着写放松。 在这个问题中有一个二进制变量xijk,如果汽车k从i到j,则为1,否则为0。 如果我想知道每个弧上的总流量,我必须写: xij=和k∈K xijk。 如何使用cplex正确书写 enter code here IloIntVar[][][] x = new IloIntVar[P][P][]; for (int i = 0; i < P; i++) {

我有一个用Java(cplex)编写的拨号骑乘问题。 现在我正试着写放松。 在这个问题中有一个二进制变量xijk,如果汽车k从i到j,则为1,否则为0。 如果我想知道每个弧上的总流量,我必须写: xij=和k∈K xijk。 如何使用cplex正确书写

enter code here IloIntVar[][][] x = new IloIntVar[P][P][];
                       for (int i = 0; i < P; i++) {
                           for (int j = 0; j < P; j++) {
                               x[i][j] = cplex.boolVarArray(V);
                               for (int k = 0; k < V; k++) {
                                   x[i][j][k].setName("x." + i + "." + j + "." + k);
                               }
                           }
                       }
在此处输入代码IloIntVar[][]x=new IloIntVar[P][P][];
对于(int i=0;i
如何做取决于您是想在另一个约束中使用和,还是只想在结果中得到这个和

如果要在另一个约束中使用sum,请使用
cplex.sum(x[i][j])
。其计算结果为
x[i][j]
中所有变量之和的表达式

如果要在解决方案中计算此和的值(在调用
cplex.solve()
之后),请执行如下循环:

double sum = 0.0;
for (double d : cplex.getValues(x[i][j])) sum += d;

我不知道你为什么在问题中提到“放松”。但是,如果要创建模型的松弛,则可能需要查看
IloCplex.conversion()

的参考文档,具体操作取决于您是希望在另一个约束中使用该和,还是只希望在结果中获得该和

如果要在另一个约束中使用sum,请使用
cplex.sum(x[i][j])
。其计算结果为
x[i][j]
中所有变量之和的表达式

如果要在解决方案中计算此和的值(在调用
cplex.solve()
之后),请执行如下循环:

double sum = 0.0;
for (double d : cplex.getValues(x[i][j])) sum += d;
我不知道你为什么在问题中提到“放松”。但是,如果要创建模型的松弛,则可能需要查看
IloCplex.conversion()
的参考文档