Как я могу получить код для «Обеспечение непрерывной работы оборудования и простоев» - PullRequest
0 голосов
/ 29 января 2019

Я использую CPLEX с OPL, и у меня возникают проблемы при указании ограничения, которое мне нужно в моей модели.

Оборудование 'A' имеет ограничение по времени безотказной работы, равное 2 часам.У него также есть время простоя для обслуживания, по крайней мере, 1 час.

Каждый раз, когда 't' и общее время t равно 10 (дискретно)Например,

              t1 t2 t3 t4 t5 t6 t7 t8 t9 t10  ....
    Equip'A'  0  1  1  0  0  0  1  1  0   1  .... 
          * downtime is possible to exceed its own maintain time.

В этой ситуации, как я могу обеспечить непрерывный процесс безотказной работы.как не '0 1 0 1', я имею в виду '0 1 1 0 1 1 0' => '1', что означает, что операция должна быть смежной (для обеспечения непрерывной работы).

Каждый раз, когда я запускаю этопроблема, ответ всегда будет заключаться в каждую '1', например '0 1 0 1 0 0 0 1 0 0 1'.

Я надеюсь, что смогу найти идею или математический способ решения этой проблемы.

1 Ответ

0 голосов
/ 29 января 2019

Глядя на последовательные триплеты, шаблоны 1 1 1 (три часа безотказной работы) и 0 1 0 (один час безотказной работы) недопустимы.

Это можно выразить с помощью линейных неравенств (с продолжением t)от 1 до 8):

A[t] + A[t+1] + A[t+2] <= 2 and
A[t+1] <= A[t] + A[t+2]

Для покрытия угловых случаев (начиная с 1 0 или до 0 1) вам дополнительно потребуется:

A[1] <= A[2] and
A[10] <= A[9]
...