def ordenamentoBRHZ_CIP(Cervejaria, atividade, recursos): for marca, lista_cip in atividade["CIP_maturador"]["tarefas"].items(): for marca_2, lista_filtracao in atividade["filtragem"][ "tarefas"].items(): if (marca == marca_2): print(marca, marca_2) for index, tarefa_cip in enumerate(lista_cip): for index_2, tarefa_filtrar in enumerate(lista_filtracao): if (index == index_2): tarefa_cip += alt(recursos.maturadores) tarefa_cip += tarefa_filtrar * recursos.maturadores tarefa_cip += alt( recursos.bombas_de_cip["Cip_Frio"]) Cervejaria += tarefa_cip >= tarefa_filtrar for marca, lista_cip in atividade["CIP_POS_desalcoolizacao"][ "tarefas"].items(): for marca_2, lista_desalcoolizacao in atividade["desalcoolizar"][ "tarefas"].items(): for index, tarefa_cip in enumerate(lista_cip): for index_2, tarefa_desalcoolizar in enumerate( lista_desalcoolizacao): if (index == index_2): tarefa_cip += alt(recursos.maturadores) tarefa_cip += tarefa_desalcoolizar * recursos.maturadores tarefa_cip += alt(recursos.bombas_de_cip["Cip_Frio"]) Cervejaria += tarefa_cip >= tarefa_desalcoolizar
def ordenamento_FimProcesso(Cervejaria, atividade, recursos): for marca, lista_filtracao in atividade["filtragem"]["tarefas"].items(): if (marca != "BRHZ"): for marca_2, lista_maturacao in atividade["maturar"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_filtrar in enumerate(lista_filtracao): for index_2, tarefa_maturar in enumerate( lista_maturacao): if (index == index_2): tarefa_filtrar += alt(recursos.maturadores) tarefa_filtrar += tarefa_maturar * recursos.maturadores tarefa_filtrar += alt( recursos.linhas["Maturada"]) Cervejaria += tarefa_filtrar >= tarefa_maturar else: for marca_2, listadecantar in atividade["decantar"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_filtrar in enumerate(lista_filtracao): for index_2, tarefa_decantar in enumerate( listadecantar): if (index == index_2): tarefa_filtrar += alt(recursos.maturadores) tarefa_filtrar += tarefa_decantar * recursos.maturadores tarefa_filtrar += alt( recursos.linhas["Maturada"]) Cervejaria += tarefa_filtrar >= tarefa_decantar
def ordenamento_PosFermat(Cervejaria, atividade, recursos): for marca, lista_centrifugacao in atividade["centrifugar"][ "tarefas"].items(): for marca_2, lista_maturacao in atividade["maturar"]["tarefas"].items( ): if (marca == marca_2): for index, tarefa_centrifugar in enumerate( lista_centrifugacao): for index_2, tarefa_maturar in enumerate(lista_maturacao): if (index == index_2): tarefa_maturar += alt(recursos.maturadores) tarefa_maturar += tarefa_centrifugar * recursos.maturadores Cervejaria += tarefa_maturar >= tarefa_centrifugar #------------------------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------------------------ if (_ChecarBrahmaZero(atividade)): for marca, lista_desalcoolizacao in atividade["desalcoolizar"][ "tarefas"].items(): for marca_2, lista_maturacao in atividade["maturar"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_desalcoolizar in enumerate( lista_desalcoolizacao): for index_2, tarefa_maturar in enumerate( lista_maturacao): if (index == index_2): tarefa_desalcoolizar += alt( recursos.maturadores) tarefa_desalcoolizar += tarefa_maturar * recursos.maturadores tarefa_desalcoolizar += recursos.desalcoolizador Cervejaria += tarefa_desalcoolizar >= tarefa_maturar for marca, lista_decantacao in atividade["decantar"]["tarefas"].items( ): for marca_2, lista_desalcoolizacao in atividade["desalcoolizar"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_desalcoolizar in enumerate( lista_desalcoolizacao): for index_2, tarefa_decantar in enumerate( lista_decantacao): if (index == index_2): tarefa_decantar += alt(recursos.maturadores) Cervejaria += tarefa_decantar >= tarefa_desalcoolizar
def addTaskFunc(scen, _task_indx, _art, _usetime, _loc): global cumul_P, task_indxs, use_windows, used_tours used_tour = 0 for search_range in range(7): for tour_number in moegliche_Touren: if len(tour_number.list) <= tour_length: if _loc in tour_number.list[:search_range]: used_tour = tour_number station_no = used_tour.list.index(_loc) if tour_number in used_tours: pass else: used_tours.append(tour_number) break else: search_range += 1 print( "\n TASK Nummer:", _task_indx, "\n usetime: Minute", _usetime, "in Location:", _loc, "(" + str(J[_loc]) + ")", "\n befahren in Route", used_tour.list, "\n Genutzte Art:", _art, "| Dauer:", int(p_i[_art]), "Minuten" "\n Strahlungsrestriktion: Produktionsende zwischen Minute", int(_usetime - t_a_min[_art]), "und", int(_usetime - t_a_max[_art]), "\n Spätestens Losfahren in Minute:", int(_usetime - 30 - int(S_j[j]) - used_tour.duration[station_no])) low_bound = max(-1440, int(_usetime - t_a_min[_art]) - int(p_i[_art])) up_bound = min( int(_usetime - t_a_max[_art]), int(_usetime - 30 - int(S_j[j]) - used_tour.duration[station_no])) jobs[_task_indx] = scen.Task('Task_%d' % _task_indx, int(p_i[_art])) jobs[_task_indx] += alt(scen.resources()) scen += jobs[_task_indx] <= up_bound scen += jobs[_task_indx] > low_bound # scen += jobs[_task_indx]*-2 # resources = ("|".join(map(str, lines))) # jobs[_task_indx] += resources if len(lines) == 1: jobs[_task_indx] += lines[0] elif len(lines) == 2: jobs[_task_indx] += lines[0] | lines[1] elif len(lines) == 3: jobs[_task_indx] += lines[0] | lines[1] | lines[2] elif len(lines) == 4: jobs[_task_indx] += lines[0] | lines[1] | lines[2] | lines[3] task_colors[jobs[_task_indx]] = "#%06x" % random.randint(0, 0xFFFFFF) scen.use_makespan_objective(reversed_orientation=True) cumul_P += int(p_i[_art]) # task_indxs.append(_task_indx) # use_windows[_task_indx] = (up_bound+t_a_max[_art],up_bound+t_a_min[_art]) use_windows.append((up_bound + t_a_max[_art], up_bound + t_a_min[_art]))
def ordenamento_Fermat(Cervejaria, atividade, recursos): propagadores_em_uso = 0 for marca, lista_centrifugacao in atividade["centrifugar"][ "tarefas"].items(): for marca_2, lista_fermentacao in atividade["fermentar_2"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_centrifugar in enumerate( lista_centrifugacao): for index_2, tarefa_fermentar in enumerate( lista_fermentacao): if (index == index_2): if (marca[0] == 'P' and propagadores_em_uso != 2): tarefa_centrifugar += alt( recursos.fermentadores) tarefa_centrifugar += tarefa_fermentar * recursos.fermentadores tarefa_centrifugar += alt( recursos.propagadores["maturacao"]) tarefa_centrifugar += alt(recursos.centrifugas) Cervejaria += tarefa_centrifugar >= tarefa_fermentar propagadores_em_uso += 1 else: tarefa_centrifugar += alt( recursos.fermentadores) tarefa_centrifugar += tarefa_fermentar * recursos.fermentadores tarefa_centrifugar += alt(recursos.maturadores) tarefa_centrifugar += alt(recursos.centrifugas) Cervejaria += tarefa_centrifugar >= tarefa_fermentar
def ordenamento_Fermentacao(Cervejaria, atividade, recursos): for marca, lista_arriamento in atividade["arriar"]["tarefas"].items(): for marca_2, lista_fermentacao in atividade["fermentar_1"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_arriar in enumerate(lista_arriamento): for index_2, tarefa_fermentar in enumerate( lista_fermentacao): if (index == index_2): tarefa_fermentar += alt(recursos.fermentadores) tarefa_fermentar += tarefa_arriar * recursos.fermentadores Cervejaria += tarefa_fermentar >= tarefa_arriar for marca, lista_fermentacao in atividade["fermentar_1"]["tarefas"].items( ): for marca_2, lista_recolhas in atividade["recolha"]["tarefas"].items(): if (marca == marca_2): for index, tarefa_fermentar in enumerate(lista_fermentacao): for index_2, tarefa_recolha in enumerate(lista_recolhas): if (index == index_2): tarefa_recolha += alt(recursos.linhas["Recolha"]) tarefa_recolha += alt(recursos.fermentadores) tarefa_recolha += tarefa_fermentar * recursos.fermentadores Cervejaria += tarefa_recolha >= tarefa_fermentar for marca, lista_recolhas in atividade["recolha"]["tarefas"].items(): for marca_2, lista_fermentacao in atividade["fermentar_2"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_recolha in enumerate(lista_recolhas): for index_2, tarefa_fermentar in enumerate( lista_fermentacao): if (index == index_2): tarefa_fermentar += alt(recursos.fermentadores) tarefa_fermentar += tarefa_recolha * recursos.fermentadores Cervejaria += tarefa_fermentar >= tarefa_recolha
def ordenamento_CIP(Cervejaria, atividade, recursos): for marca, lista_cip in atividade["CIP_fermentador"]["tarefas"].items(): for marca_2, lista_centrifugacao in atividade["centrifugar"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_cip in enumerate(lista_cip): for index_2, tarefa_centrifugar in enumerate( lista_centrifugacao): if (index == index_2): tarefa_cip += alt(recursos.fermentadores) tarefa_cip += tarefa_centrifugar * recursos.fermentadores tarefa_cip += alt( recursos.bombas_de_cip["Cip_Frio"]) Cervejaria += tarefa_cip >= tarefa_centrifugar for marca, lista_cip in atividade["CIPc_centrifuga"]["tarefas"].items(): for marca_2, lista_centrifugacao in atividade["centrifugar"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_cip in enumerate(lista_cip): for index_2, tarefa_centrifugar in enumerate( lista_centrifugacao): if (index == index_2): tarefa_cip += alt(recursos.centrifugas) tarefa_cip += tarefa_centrifugar * recursos.centrifugas tarefa_cip += alt( recursos.bombas_de_cip["Cip_Quente"]) Cervejaria += tarefa_cip >= tarefa_centrifugar for marca, lista_cip in atividade["CIP_maturada"]["tarefas"].items(): for marca_2, lista_filtracao in atividade["filtragem"][ "tarefas"].items(): if (marca == marca_2): for index, tarefa_cip in enumerate(lista_cip): for index_2, tarefa_filtrar in enumerate(lista_filtracao): if (index == index_2): tarefa_cip += alt(recursos.linhas["Maturada"]) tarefa_cip += tarefa_filtrar * recursos.linhas[ "Maturada"] tarefa_cip += recursos.bombas_de_cip["Cip_Quente"][ 1] Cervejaria += tarefa_cip >= tarefa_filtrar for marca, lista_cip in atividade["CIP_recolha"]["tarefas"].items(): for marca_2, lista_recolhas in atividade["recolha"]["tarefas"].items(): if (marca == marca_2): for index, tarefa_cip in enumerate(lista_cip): for index_2, tarefa_recolha in enumerate(lista_recolhas): if (index == index_2): tarefa_cip += alt(recursos.linhas["Recolha"]) tarefa_cip += tarefa_recolha * recursos.linhas[ "Recolha"] tarefa_cip += recursos.bombas_de_cip["Cip_Quente"][ 0] Cervejaria += tarefa_cip >= tarefa_recolha
def recursos_Arriamento(Cervejaria, atividade, recursos): cerveja = _LerJson_Cervejas() lista_propagação = [] propagadores_em_uso = 0 for marca, lista_tarefas in atividade["arriar"]["tarefas"].items(): if (marca in cerveja["producao"]["sala_2"]): if (marca == 'BRHZ'): for tarefa in lista_tarefas: tarefa += recursos.linhas["Dosagem"][1] tarefa += alt(recursos.fermentadores_BRHZ) elif (marca[0] == 'P'): for tarefa in lista_tarefas: lista_propagação.append(tarefa) if (propagadores_em_uso != 2): tarefa += recursos.linhas["Dosagem"][1] tarefa += alt(recursos.propagadores["fermentacao"]) propagadores_em_uso += 1 else: tarefa += recursos.linhas["Dosagem"][1] tarefa += alt(recursos.fermentadores) else: for tarefa in lista_tarefas: tarefa += recursos.linhas["Dosagem"][1] tarefa += alt(recursos.fermentadores) else: if (marca[0] == 'P'): for tarefa in lista_tarefas: lista_propagação.append(tarefa) if (propagadores_em_uso != 2): tarefa += recursos.linhas["Dosagem"] tarefa += alt(recursos.propagadores["fermentacao"]) propagadores_em_uso += 1 else: tarefa += recursos.linhas["Dosagem"] tarefa += alt(recursos.fermentadores) else: for tarefa in lista_tarefas: tarefa += recursos.linhas["Dosagem"] tarefa += alt(recursos.fermentadores) for propagacao in lista_propagação[2:]: Cervejaria += lista_propagação[0] < propagacao Cervejaria += lista_propagação[1] < propagacao
# test artefact for the case that pyschedule is # read from folder import sys sys.path.append('../src') horizon = 5 import getopt opts, _ = getopt.getopt(sys.argv[1:], 't:', ['test']) from pyschedule import Scenario, solvers, plotters, alt S = Scenario('test', horizon=horizon) # define two employees R = S.Resources('R', num=2) T0 = S.Task('T0', completion_time_cost=10) T0 += alt(R) T1 = S.Task('T1', length=2, completion_time_cost=2) T1 += alt(R) T2 = S.Task('T2', length=2, completion_time_cost=1) T2 += alt(R) S += T1 * R[0] <= T0 S += T2 * R[0] <= T0 if solvers.mip.solve(S, msg=0): if ('--test', '') in opts: assert (T0.start_value == 0) assert (T1.start_value == 0) assert (T2.start_value == 2)
for task_id, task_data in tasks_data.items() } # for t in tasks.values(): # print(t.length) # Worker-Task eligibility. for task_id in tasks: eligible_workers = [] for worker_id, task_ids in workers_tasks_eligibility.items(): if task_id in task_ids: eligible_workers.append(resources[worker_id]) if len(eligible_workers) == 0: continue print(f"{task_id}: {eligible_workers}") for worker in eligible_workers: tasks[task_id] += alt(worker) # # three tasks: cook, wash, and clean # cook = S.Task("cook", length=1, delay_cost=1) # wash = S.Task("wash", length=2, delay_cost=1) # clean = S.Task("clean", length=3, delay_cost=2) # every task can be done either by Alice or Bob # cook += Alice | Bob # wash += Alice | Bob # clean += Alice | Bob # Capacity constraints. for r in resources.values(): S += r[0:10] <= 10
for i in range(len(name_list2)): task_list.append( S.Task(name_list2[i].replace(" ", ""), length=1, periods=[ getPeriodFromTime(t) for t in data2['times'][i]['availableTimes'] ])) name_perms = list(combinations(range(len(name_list)), 2)) final = [[S.resources()[x[0]], S.resources()[x[1]]] for x in name_perms] for t in task_list: random.shuffle(resource_list) t += alt(resource_list[:10]), alt(resource_list[10:]) # compute and print a schedule solvers.mip.solve(S, random_seed=random.randint(1, 1000)) soln = S.solution() interviewList = [] for s in range(0, len(soln), 2): # assert names & times match before merging assert (soln[s][0] == soln[s + 1][0]) assert (soln[s][2] == soln[s + 1][2]) interview = {} interview["name"] = str(soln[s][0]) interview['interviewers'] = [str(soln[s][1]), str(soln[s + 1][1])] interview['start_time'] = data['allTimes'][soln[s][2]] interview['duration'] = data['interviewDuration']