flight_names = ['MI428', 'UL867', 'QR664', 'TK730', 'UL303']
flight_times = ['T-' + name for name in flight_names]
bays_list = ['A1', 'A2', 'B1', 'B2', 'C1']
times = range(20) # or how many times you have
problem.addVariables(flight_names, bays_list)
problem.addVariables(flight_times, times)
然后你必须强制每个航班必须分配一个特定的时间
time_constraints
:
time_constraints = {'T-MI428':(1,3) , 'T-UL867':(2,7), 'T-QR664':(3,9), 'T-TK730':(15,16), 'T-UL303':(16,17)}
for flight_time in flight_times:
start, end = time_constraints[flight_time]
problem.addConstraint(lambda fl: fl in range(start, end+1), [flight_time])
现在,您必须添加“您不能在同一时间有两个航班在同一个海湾”的限制。为此,您需要生成每一对可能的航班:
for flight_one, time_one in zip(flight_names, flight_times):
for flight_two, time_two in zip(flight_names, flight_times):
if flight_one == flight_two:
continue
problem.addConstraint(
lambda fl_one, t_one, fl_two, t_two: fl_one != fl_two or t_one != t_two,
[flight_one, time_one, flight_two, time_two]
)
满足约束条件
任何一个
或
使用的时间不同。
我无法测试上面的代码,但是这应该给你一个很好的起点。