Моделирование проблемы планирования с ограничением python

У меня есть проблема, когда мне нужно назначить некоторые переменные для использования ресурса, чтобы каждый рабочий всегда выполнял какую-то работу. Допустим, у меня есть список рабочих w = {w1,w2,w3,...}и некоторые ресурсы r = {r1,r2,..}. Затем у меня также есть список диапазонов времени, например 06:00 - 12:00. Каждый workerимеет по крайней мере один диапазон, но рабочий может иметь более одного (не перекрывающихся).

Небольшой пример будет примерно таким:

      w1 00:00 - 12:00 [r1,r2,r3]
w1 12:00 - 13:00 [r4,r6]
w2 00:00 - 12:00 [r1]

И решение может быть w1 00:00 - 12:00 r2, w1 12:00 13:00 r4, w2 00:00 - 12:00 r1.

Пока все хорошо, но тогда я должен добавить некоторые ограничения, например, если w_iиспользует r_j, w_kнельзя использовать r_l. Также у меня есть ограничения, подобные этому, связанные со временем.

Моя первая идея была

      from constraint import *

problem = Problem()

problem.addVariable("w1", ["r1", "r2", "r3", "r4"])
problem.addVariable("w2", ["r1", "r2", "r3"])
problem.addVariable("w3", ["r4", "r5"])
problem.addVariable("w4", ["r7", "r9", "r10"])

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

Обратите внимание, что я использую python-constraint, я бы обычно использовал Prologдля чего-то вроде этого.

0 ответов

Другие вопросы по тегам