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
Exemplo n.º 4
0
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
Exemplo n.º 9
0
# 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)
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
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']