Ограничить логику в линейном программировании - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь построить модель линейной оптимизации для производственной единицы.У меня есть переменная решения (двоичная переменная) X (i) (j), где I - час J дня.Ограничение, которое я должен ввести, - это ограничение времени простоя (минимальный период времени, в течение которого производственная единица должна быть отключена между двумя запусками).

Например:

Hours:  1 2 3 4 5 6 7 8 9 10 11 12
On/off: 0 1 0 1 1 0 1 1 1  0  0  1

Я не могу запуститьчаса 4 или 7, потому что промежуток времени между 2 и 4/5 и 7 равен единице.Я могу запустить час 12, так как у меня есть двухчасовой перерыв после часа 9. Как применить это ограничение в линейном программировании / оптимизации?

1 Ответ

1 голос
/ 12 марта 2019

Я думаю, вы спрашиваете способ моделирования: " как минимум два последовательных периода времени простоя ".Простая формулировка состоит в том, чтобы запретить шаблон:

t  t+1 t+2
1   0   1 

Это можно записать в виде линейного неравенства:

x(t) - x(t+1) + x(t+2) <= 1

Один из способов убедить себяэто правильно - просто перечислить шаблоны:

x(t)  x(t+1) x(t+2)  LHS
 0      0      0      0 
 0      0      1      1
 0      1      0     -1
 0      1      1      0
 1      0      0      1
 1      0      1      2  <--- to be excluded 
 1      1      0      0 
 1      1      1      1 

С помощью x(t) - x(t+1) + x(t+2) <= 1 мы в точности исключаем шаблон 101, но разрешаем все остальные.


Аналогично, " по крайней мере два последовательных периода времени готовности "можно обработать, исключив шаблон

t  t+1 t+2
0   1   0 

или

-x(t) + x(t+1) - x(t+2) <= 0

Примечание:Один из способов вывести второе из первого ограничения состоит в том, чтобы заметить, что запрет шаблона 010 аналогичен высказыванию y(t)=1-x(t) и исключению 101 в терминах y(t).Другими словами:

(1-x(t)) - (1-x(t+1)) + (1-x(t+2)) <= 1

Это идентично

-x(t) + x(t+1) - x(t+2) <= 0

В комментариях утверждается, что этот метод не работает.Это основано на существенном недопонимании этого метода.Шаблон 100 (т. Е. x(1)=1,x(2)=0,x(3)=0) недопустим, поскольку

 -x(0)+x(1)-x(2) <= 0

Где x(0) - это состояние до того, как мы начнем наш плановый период.Это исторические данные.Если x(0)=0, то у нас x(1)-x(2)<=0, что запрещает 10. Т.е. этот метод верен (если нет, многие мои модели потерпят неудачу).

...