Cplex Studio не поддерживает dvar float - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь использовать переменную для записи локальных моментов времени объекта. Поскольку я не мог найти какой-либо способ определения переменной в Cplex, я попытался использовать «dvar float» для определения переменной. Но, Cplex говорит, что алгоритм не поддерживает «dvar float». Я попытался просто определить переменную как float Z [i] [r] [k], а также попытался использовать CP, оба не решили проблему. Могу ли я получить помощь или руководство, пожалуйста?

i = 0..3;
r = 0..1;
j = 0..3;
s = 0..1;
k = 1; 
float U[1..3][1..1] = ...;
float T[i][r][j][s] = ...;
float M[1..3][1..1] = ...; 
dvar boolean X[i][r][j][s][k];
dvar boolean Y[1..N][1..H][k];
dvar float Z[i][r][k];

forall(ci in i:ci!=0, cr in r:cr!=0, cj in j, cs in s: (ci!=cj)||(cr!=cs), ck in k)
  TimeRecord1: 
    Z[cj][cs][ck] == X[ci][cr][cj][cs][ck] * (T[ci][cr][cj][cs] + (U[ci][cr] + (M[ci][cr] - Z[ci][cr][ck])) * Y[ci][cr][ck]);

1 Ответ

0 голосов
/ 16 января 2020

с CP, переменные решения с плавающей точкой не допускаются. То, что вы можете сделать, это использовать изменение переменной для моделирования десятичных переменных решения. У вас есть пример в

CPLEX_Studio1210 \ opl \ examples \ opl \ floatexpr

См. Также CPLEX OPL с использованием переменной решения в качестве float в алгоритме программирования ограничений

в стеке

...