Это иногда называют минимальной длиной пробега.Есть разные подходы, чтобы справиться с этим.Скажем, у нас есть x(t)
в качестве наших двоичных переменных, указывающих, работает ли машина в момент времени t.Первым делом необходимо ввести двоичную переменную start(t)
, которая указывает, когда начинается запуск.Вот что я имею в виду:
t 1 2 3 4 5 6 7 8
x 0 1 1 1 0 1 1 0
start 0 1 0 0 0 1 0 0
Запуск начинается, когда x(t-1)=0 and x(t)=1
или, более формально:
start(t) = x(t)*(1-x(t-1))
Это нелинейно.Мы можем линеаризовать это, используя:
start(t) <= x(t)
start(t) <= 1-x(t-1)
start(t) >= x(t)-x(t-1)
Часто мы просто используем границу:
start(t) >= x(t)-x(t-1)
Далее нам нужно:
start(t) = 1 ==> x(t)...x(t+K-1) = 1
где K - минимальный пробегдлина.
Это может быть смоделировано как:
x(t+1) >= start(t)
...
x(t+K-1) >= start(t)
(мы уже знаем, что x(t)=1 if start(t)=1
).