GAMS: Как я могу сформулировать ограничение $ x_ {a, i, v + 1, l} - x_ {a, i, v, l} \ leq y_ {a, i, v, l} $?

У меня возникли проблемы с формулировкой ограничения в GAMS.

Мое ограничение таково:

x_ {a, i, v + 1, l} - x_ {a, i, v, l} \ leq y_ {a, i, v, l}

и сумма (v, y_ {a, i, v, l}) \ leq 1.

Я пытался сформулировать это несколько раз, но думаю (ну, я знаю), что делаю это неправильно.

Я написал это в гаммах как:

con15 (a, i, v, l) $ (ord (v) lt 17) .. x (a, i, v, l) $ (ord (v) eq ord (v) +1) - x (a, i, v, l) = l = u (a, i, v, l);

con16 (a, i, l) .. sum (v, u (a, i, v, l)) = l = 1;

немного дополнительной информации:

i «сотрудники» / i1 * i11 /

l «дни» / l1 * l31 /

a «проекты, зависящие от полетной программы» / a1 /

v «час» / v1 * v18 /

В ограничении con15 я говорю, что он должен работать только для ord (v), меньшего или равного 17, потому что у нас есть v1 до v18.

Также x и y двоичны.

Когда я запускаю GAMS, я получаю нормальную компиляцию и решение. Проблема в том, что решение нарушает мои ограничения con16 и con15.

Я использую ord и $ right?

Лучший хаски


person Husky653    schedule 27.05.2017    source источник


Ответы (2)


Во-первых, я думаю, что вы можете использовать card (), чтобы сделать ваше уравнение более общим. Это сообщает вам количество элементов в наборе.

Кроме того, «lt» означает строго ниже, чем. Если вы хотите включить равенство, вы должны написать «le».

Я бы попробовал это:

con15 (a, i, v, l) $ (ord (v) lt card (v)) .. x (a, i, v + 1, l) - x (a, i, v, l) = l = u (a, i, v, l);

con16 (a, i, l) .. sum (v, u (a, i, v, l)) = l = 1;

Надеюсь, это поможет.

Сальва.

person Salva    schedule 29.05.2017

Недавно я столкнулся с подобной проблемой в одном из моих собственных проектов, я новичок в GAMS, но, надеюсь, это может помочь:

Оказывается, упорядоченные наборы и добавление значений не очень хорошо ладят: попробуйте переформулировать вашу проблему в уравнении с v-1 вместо v + 1. Упорядоченные наборы начинают отсчет (и вычисление) с определенной начальной точки и считают (и вычисляют) до определенной конечной точки: добавление +1 к точке, которая еще не рассчитана, вызывало проблемы в моей модели и может сделать то же самое для вашей. Удачи!

person ima    schedule 30.05.2017