Условное суммирование в CPLEX с использованием OPL

Я пытаюсь написать в OPL эту сумму:

введите здесь описание изображения

Я сделал это, но это не совсем то, что мне нужно.

forall (n in cont, t in tempo, o in portos)
  sum(i in colunap, j in linhap)b[i][j][n][t] + v[n][t] == 1; 

У меня должно быть что-то вроде, но opl не принимает это:

forall (n in cont[o], t in tempo[o], o in portos)
  sum(i in colunap[o], j in linhap[o])b[i][j][n][t] + v[n][t] == 1; 

person C. Junqueira    schedule 28.06.2018    source источник
comment
Если cont и tempo зависят от o, то вместо forall (n в cont[o], t в tempo[o], o в portos) лучше написать forall ( o в portos,n в cont[o], t в tempo [о])   -  person Alex Fleischer    schedule 28.06.2018
comment
Спасибо за Ваш ответ! Но как мне объявить параметры как матрицы и векторы? Я пробовал: int H[o in 1..P-1] = ...; и диапазон linhap=1..H[o]; но OPL не принимает... Извините, я только начинаю изучать OPL   -  person C. Junqueira    schedule 29.06.2018


Ответы (1)


Это должно работать:

int P=3;
int H[1..P-1] = [1 , 2]; 
range linhap=1..max(o in 1..P-1) H[o];
person Alex Fleischer    schedule 29.06.2018