GAMS: оператор карты по подмножеству

Я пытаюсь смоделировать проблему кросс-дока. Имеет следующие наборы:

j для исходящих грузовиков,

s для сортировочных станций и

l для исходящих доков.

Кроме того, существует двоичная переменная z (j, s), которая равна единице, если Outbound Truck j назначен сортировочной станции s.

Перед расчетом вы должны назначить исходящие доки сортировочным станциям. Для этого я определил подмножество k (s, l). Мой пример выглядит так:

Sets

j      /J1*J27/
s      /S1*S4/
l      /L1*L30/
;

Sets  k(s,l)

        /S1.(L1,L2,L3,L4,L5,L6)
         S2.(L7,L8,L9,L10,L11,L12)
         S3.(L13,L14,L15,L16,L17,L18,L19,L20)
         S4.(L21,L22,L23,L24,L25,L26,L27,L28,L29,L30)/ 

Моя проблема состоит в том, чтобы смоделировать следующее уравнение:

Это ограничение говорит о том, что вы не можете назначить больше исходящих грузовиков для станций сортировки, чем количество исходящих доков, назначенных этой станции.  L (s) - количество исходящих доков, назначенных сортировочной станции s.

Как мне это смоделировать? Я пробовал вот так:

уравнение (я) .. sum(j, z(j,s)) =l= card(k);

но это не работает, потому что «card (k)» не отражает количество исходящих доков, назначенных для станций сортировки. Итак, мой вопрос: можно ли смоделировать оператора карты по подмножествам?

Или кто-нибудь знает другой возможный способ смоделировать это уравнение?


person Natascha    schedule 28.09.2016    source источник


Ответы (1)


Во-первых, k не входит в подмножество, это многомерное множество.

Нет, использовать карту многомерного набора невозможно.

Похоже, вы хотите подсчитать, сколько доков для исходящей почты имеется для каждой сортировочной станции. Ограничение должно быть сформулировано как:

уравнение (s) .. sum (j, z (j, s)) = l = sum (l $ k (s, l), 1);

person Catyes    schedule 10.10.2016
comment
Благодарим за ваше предложение. Но я нашел другой способ смоделировать это. - person Natascha; 11.10.2016