Я использую библиотеку python-constraint , чтобы найти CSP для резервирования отсеков для каждого рейса в аэропорту.Где мне нужно назначить Отсеки: ('A1', 'A2', 'B1', 'B2', 'C1')
до Полеты: ('MI428', 'UL867', 'QR664', 'TK730', 'UL303')
набор переменных.
Существует несколько ограничений при назначении значений второму набору.Вот мой код
from constraint import *
problem = Problem()
flight_names = ['MI428', 'UL867', 'QR664', 'TK730', 'UL303']
bays_list = ['A1', 'A2', 'B1', 'B2', 'C1']
problem.addVariables(flight_names, bays_list)
bay_compat = {'MI428':['A1', 'A2', 'B1'], 'UL867':['B1', 'B2'], 'QR664':['A2', 'B1', 'B2'] , 'TK730':['C1', 'A1'], 'UL303':['B2', 'C1']}
for flight in flight_names:
problem.addConstraint(lambda fl: fl in bay_compat[flight], [flight])
solutions = problem.getSolutions()
print (solutions)
Код выше работает отлично.Я хочу добавить еще одно ограничение, в котором каждый рейс связан с определенным периодом времени, называемым периодом времени между прибытием и отправлением.
Для этого я создал еще один список следующим образом:
time_constraints = {'MI428':(1,3) , 'UL867':(2,7), 'QR664':(3,9), 'TK730':(15,16), 'UL303':(16,17)}
Примечание. Например, здесь (1,3) означает от 1:00 до 3:00 утра
Мне нужен отсекзадание так, чтобы одновременно два рейса не попадали в один и тот же залив.Поэтому я спрашиваю, как я могу добавить это ограничение, используя метод addConstraint()
в python-constraint ??