Формулировка ограничений в ILOG Cplex Java API - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь сформулировать модель VRPTW в Java, та же самая, что и в OPL, работает нормально, но у меня продолжает возникать проблема с одним ограничением:

a [i] [k] + t [i] [j] - a [j] [k] + M * x [i] [j] [k] = M

Я получаю сообщение об ошибке: метод addTerm (double, IloNumVar) в типе IloLinearNumExpr не применим для аргументов (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);

Любые идеи приветствуются. Спасибо!

1 Ответ

0 голосов
/ 03 сентября 2018

Вы должны использовать setConstant.

expr8.setConstant(t[i][j]);

привет

...