Esempio n. 1
0
def principal(argv):
    INSTANCIAS = read_data_XLSX()
    workbook = xlsxwriter.Workbook('Results_Tardiness.xlsx')
    for inst in INSTANCIAS:

        ## Parámetros de la instancia
        tp = inst.tiempos_procesamiento
        dd = inst.due_dates

        ## Obtener secuencia de Grasp_Makespan
        ALPHA = 0.5
        num_iteraciones = 30
        secuencia, secuencia_bl = GRASP_Tardiness(tp, dd, ALPHA,
                                                  num_iteraciones)

        ## Matrices de tiempos de inicio y fin
        makespan, make_mat_i, make_mat_f = fo.calcular_makespan_blocking_secuencia(
            secuencia_bl, tp)
        tardanza, due_date_sec = fo.calcular_tardanza_blocking_secuencia(
            secuencia_bl, tp, dd)

        ## Imprimir archivo
        nombre_hoja = "Inst" + str(INSTANCIAS.index(inst) + 1)
        imprimir_XLSX(workbook, nombre_hoja, secuencia, secuencia_bl, makespan,
                      make_mat_i, make_mat_f, tardanza, due_date_sec, tp, dd)

    workbook.close()
Esempio n. 2
0
def principal(argv):
    INSTANCIAS = read_data_XLSX()

    num_alphas = 5
    ALPHAS = [round(i * (1 / num_alphas), 3) for i in range(num_alphas + 1)]
    print(ALPHAS)

    for a in ALPHAS:
        workbook = xlsxwriter.Workbook('Results_Tardiness ALPHA(' + str(a) +
                                       ').xlsx')
        ti = time.time()
        for inst in INSTANCIAS:
            ## Parámetros de la instancia
            tp = inst.tiempos_procesamiento
            dd = inst.due_dates
            num_trabajos = len(tp)
            num_maquinas = len(tp[0])

            ## Obtener secuencia de Grasp_Makespan
            ALPHA = a
            t_max = 0.01 * num_trabajos * num_maquinas
            repeticiones = 1
            minimo = 10000000000000
            print("AlPHA: ", a, "; Inst:", INSTANCIAS.index(inst))
            for _ in range(repeticiones):
                t1 = time.time()
                s, s_bl = GRASP_Tardiness(tp, dd, ALPHA, t_max)
                f = fo.calcular_tardanza_blocking_secuencia(s_bl, tp, dd)
                print(f)
                if (f < minimo):
                    minimo = f
                    secuencia = s
                    secuencia_bl = s_bl
                    tiempo_funcion = time.time() - t1

            print("----------------------------")

            ## Indicadores
            makespan = fo.calcular_makespan_blocking_secuencia(secuencia, tp)
            tardanza = fo.calcular_tardanza_blocking_secuencia(
                secuencia, tp, dd)
            makespan_bl, mat_t = fo.mat_calcular_makespan_blocking_secuencia(
                secuencia_bl, tp)
            tardanza_bl, dd_sec = fo.dd_calcular_tardanza_blocking_secuencia(
                secuencia_bl, tp, dd)

            ## Imprimir archivo
            nombre_hoja = "Inst" + str(INSTANCIAS.index(inst) + 1)
            imprimir_XLSX(workbook, nombre_hoja, secuencia, secuencia_bl,
                          makespan, tardanza, makespan_bl, tardanza_bl,
                          tiempo_funcion, mat_t, dd_sec)

        tt = time.time() - ti
        worksheet = workbook.add_worksheet("TIEMPO TOTAL")
        worksheet.merge_range(1, 1, 1, 3, "Tiempo total de ejecución")
        worksheet.merge_range(1, 4, 1, 5, round(tt, 2))
        workbook.close()
        workbook.close()
Esempio n. 3
0
def GRASP(argv):

    ## TP[t][m]: tiempo de procesamiento del trabajo t en la máquina m.
    TP1 = [
        [45, 13, 26, 24],
        [25, 76, 14, 73],
        [56, 76, 20, 24],
        [39, 51, 7, 6],
        [61, 23, 43, 85],
    ]

    TP2 = [
        [3, 3, 2],
        [2, 1, 3],
        [4, 1, 3],
    ]

    TP3 = [[1, 13, 6, 2], [10, 12, 18, 18], [17, 9, 13, 4], [12, 17, 2, 6],
           [11, 3, 5, 16]]
    due_date3 = [20, 75, 45, 34, 41]

    ## Etapa de construcción de solución
    ALPHA = 0.6
    secuencia, makespan = construccion_GRASP(TP3, ALPHA)
    print("Secuencia construcción GRASP: ", secuencia, "; Makespan: ",
          makespan, "; Tardanza: ",
          fo.calcular_tardanza_blocking_secuencia(secuencia, TP3, due_date3))

    ## Tardanza mínima
    ALPHA_tard = 0.5
    num_iteraciones_tard = 5
    min_tard = GRASP_Tardiness(TP3, due_date3, ALPHA_tard,
                               num_iteraciones_tard)
    print("Tardanza mínima: ", min_tard)

    ## Etapa de busqueda local
    num_iteraciones = 30
    secuencia_bl, makespan_bl = busqueda_local_GRASP(secuencia, TP3, due_date3,
                                                     num_iteraciones, min_tard)
    print(
        "Secuencia busqueda local GRASP: ", secuencia_bl, "; Makespan: ",
        makespan_bl, "; Tardanza: ",
        fo.calcular_tardanza_blocking_secuencia(secuencia_bl, TP3, due_date3))
Esempio n. 4
0
def principal(argv):
    INSTANCIAS = read_data_XLSX()

    for inst in INSTANCIAS:
        ## Crear Archuvo de impresión
        workbook = xlsxwriter.Workbook('Results_Tardiness Inst(' +
                                       str(INSTANCIAS.index(inst) + 1) +
                                       ').xlsx')

        ## Parámetros de la instancia
        tp = inst.tiempos_procesamiento
        dd = inst.due_dates
        num_trabajos = len(tp)
        num_maquinas = len(tp[0])

        ## Obtener secuencia de Grasp_Makespan
        ALPHA = 0.5
        t_max = 0.01 * num_trabajos * num_maquinas
        repeticiones = 10
        print("Inst:", INSTANCIAS.index(inst))
        for rep in range(repeticiones):
            t1 = time.time()
            secuencia, secuencia_bl = GRASP_Tardiness(tp, dd, ALPHA, t_max)
            tiempo_funcion = time.time() - t1

            ## Indicadores
            makespan = fo.calcular_makespan_blocking_secuencia(secuencia, tp)
            tardanza = fo.calcular_tardanza_blocking_secuencia(
                secuencia, tp, dd)
            makespan_bl = fo.calcular_makespan_blocking_secuencia(
                secuencia_bl, tp)
            tardanza_bl = fo.calcular_tardanza_blocking_secuencia(
                secuencia_bl, tp, dd)

            ## Imprimir archivo
            nombre_hoja = "Inst" + str(INSTANCIAS.index(inst) +
                                       1) + "(REP" + str(rep + 1) + ")"
            imprimir_XLSX(workbook, nombre_hoja, secuencia, secuencia_bl,
                          makespan, tardanza, makespan_bl, tardanza_bl,
                          tiempo_funcion)

        workbook.close()
Esempio n. 5
0
def GRASP_Makespan_MO(tp, dd, ALPHA, t_max, ALPHA_tard, t_max_tard):

    # ## Etapa de construcción de solución
    # secuencia, makespan = construccion_GRASP(tp, ALPHA)
    # print("Secuencia construcción GRASP: ", secuencia, "; Makespan: ", makespan, "; Tardanza: ", fo.calcular_tardanza_blocking_secuencia(secuencia, tp, dd))

    ## Tardanza mínima
    secuencia, min_tard = GRASP_Tardiness(tp, dd, ALPHA_tard, t_max_tard)
    print("Secuencia construcción GRASP: ", secuencia, "; Makespan: ",
          fo.calcular_makespan_blocking_secuencia(secuencia, tp),
          "; Tardanza: ", min_tard)

    ## Etapa de busqueda local
    secuencia_bl, makespan_bl = busqueda_local_GRASP(secuencia, tp, dd, t_max,
                                                     min_tard)
    print("Secuencia busqueda local GRASP: ", secuencia_bl, "; Makespan: ",
          makespan_bl, "; Tardanza: ",
          fo.calcular_tardanza_blocking_secuencia(secuencia_bl, tp, dd))

    return (secuencia, secuencia_bl, min_tard)


#fed