Как я могу закодировать подобное ограничение в JUMP?
Предположим i,j,k,m, установлены индексы и связанные с ними заглавные буквы, например J.
x_{i,j,k,m'} + sum((j in J, k in K), y_{j,k,m})<= z_{i,m} for all i in I and for all m and m' in M; m!=m'
как на фото

Решение проблемы
Я понимаю, что вам нужен многомерный цикл ограничений с фильтрацией. Я получаю это к минимальному рабочему примеру:
M=1:10
model = Model(HiGHS.Optimizer)
@variable(model, y[1:lenght(M),1:lenght(M)] >= 0)
z = rand(lenght(M))
Имея эти значения, вы можете иметь ограничение с фильтрацией как:
@constraint(model, [m1 in M, m2 in M], y[m1,m2] >= z[m1]*(m1!== m2))
Обратите внимание, что построение переменной as y[1:lenght(M),1:lenght(M)]создает обычное выражение Matrixwhile y[M,M], которое дает DenseAxisArray.
Комментариев нет:
Отправить комментарий