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()
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()
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))
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()
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