LOT = ['L1', 'L2', 'L3', 'L4', 'L5', 'L6', 'L7', 'L8', 'L9', 'L10'] # Lot集合
Operation = {
'L1': ['O1', '02', '03'],
'L2': ['O1', '02', '03'],
'L3': ['03'],
'L4': ['O1', '02', '03'],
'L5': ['O1', '02', '03'],
'L6': ['O1', '02', '03'],
'L7': ['O1', '02', '03'],
'L8': ['O1', '02', '03'],
'L9': ['O1', '02', '03'],
'L10': ['O1', '02', '03']
}
Machine_of_operation = { # stepID//MachineList//WPH
'O1':
{'M1': 20, 'M2': 25},
'O2':
{'M3': 25, 'M4': 25},
'O3':
{'M5': 1, 'M6': 1},
} # Machine集合
Lot_release_time = {
'L1': 0, 'L2': 1, 'L3': 0, 'L4': 0, 'L5': 1, 'L6': 0, 'L7': 0, 'L8': 0.5, 'L9': 1, 'L10': 0
} # //lot release time//
Machine_release_time = {'M1': 0, 'M2': 0, 'M3': 0, 'M4': 0.5, 'M5': 0, 'M6': 0} # //machine release time//
# 决策变量(2): Lot l 在第o step的start time
s_lom = {}
for l in LOT:
s_lom[l] = {} # 初始化第二层(工位层)
for o in [0] + Operation.get((l, o), []):
s_lom[l][o] = {} # 初始化第三层(工序层)
for m in Machine_of_operation:
# 创建变量并存储到对应层级
s_lom[l][o][m] = solver.NumVar(0, solver.infinity(), f's_{l}_{o}_{m}')
约束1:LOT 到站后才能上机台;
r_l <s_lom,∀l∈L,m∈M (1)
约束2:机台可用后lot才能上机台;
r_m<s_lom,∀l∈L,m∈M(2)
将以上约束转为调用ortools的python代码
最新发布