|
1 |
| -from functions_bicing import comparar_all_operadores, mejor_initial_state, encontrar_parametros_SA ,comparar_resultados_HC_SA |
2 |
| -from math import exp |
| 1 | +from functions_bicing import comparar_all_operadores, mejor_initial_state, encontrar_parametros_SA ,comparar_resultados_HC_SA, tiempos_experimento_con_aumento, augmento_furgonetas |
| 2 | +import random |
3 | 3 |
|
4 | 4 | # Función de ejecución de experimentos
|
5 |
| -def experimento1(opt: int, semilla: int) -> None: |
| 5 | +def experimento1(opt: int, lista_semillas: list, iteraciones_por_semilla: int) -> None: |
6 | 6 | # Experimento 1: Comparación de operadores
|
7 | 7 | comparar_all_operadores(opt=opt, \
|
8 |
| - semilla_rng=semilla, \ |
9 |
| - iteraciones=15) |
| 8 | + lista_semillas=lista_semillas, \ |
| 9 | + iteraciones_por_semilla=iteraciones_por_semilla) |
10 | 10 |
|
11 |
| - |
12 |
| -def experimento2(operadores_resultado_exp1: dict, semilla_rng: int, iteraciones: int) -> None: |
| 11 | +def experimento2(operadores_resultado_exp1: dict, lista_semillas: list, iteraciones_estrategias_aleatorias: int) -> None: |
13 | 12 | # Experimento 2: Comparación de initial_state
|
14 |
| - mejor_initial_state(iteraciones=iteraciones, \ |
15 |
| - semilla_rng=semilla_rng, \ |
| 13 | + mejor_initial_state(iteraciones_estrategias_aleatorias=iteraciones_estrategias_aleatorias, \ |
| 14 | + lista_semillas=lista_semillas, \ |
16 | 15 | operadores_activos=operadores_resultado_exp1)
|
17 | 16 |
|
18 |
| -def experimento3(operadores_resultado_exp1: dict, opt_resultado_exp2: int, valores_k: list, valores_lam: list, limite: int) -> None: |
| 17 | +def experimento3(iteraciones_por_semilla: int, lista_semillas: list, operadores_resultado_exp1: dict, opt_resultado_exp2: int, valores_k: list, valores_lam: list, limite: int) -> None: |
19 | 18 | # Experimento 3: Comparación de SA
|
20 |
| - encontrar_parametros_SA(opt=opt_resultado_exp2, \ |
| 19 | + encontrar_parametros_SA(lista_semillas=lista_semillas, \ |
| 20 | + opt=opt_resultado_exp2, \ |
21 | 21 | operadores_activos=operadores_resultado_exp1, \
|
22 | 22 | valores_k=valores_k, \
|
23 | 23 | valores_lam=valores_lam, \
|
24 | 24 | limit=limite, \
|
25 |
| - iteraciones_por_valor=10) |
26 |
| - |
27 |
| -def experimento4() -> None: |
| 25 | + iteraciones_por_semilla=iteraciones_por_semilla) |
| 26 | + |
| 27 | +def experimento4(operadores_resultado_exp1: dict, \ |
| 28 | + opt_resultado_exp2: int, \ |
| 29 | + incremento_estaciones: int, \ |
| 30 | + incremento_furgonetas: int, \ |
| 31 | + incremento_bicicletas: int, \ |
| 32 | + lista_semillas: list, \ |
| 33 | + n_incrementos: int) -> None: |
28 | 34 | # Experimento 4: Comparación de HC
|
29 |
| - comparar_resultados_HC_SA(opt=2, HC=True, SA=False, iterations=100) |
30 |
| - |
31 |
| -def experimento5() -> None: |
| 35 | + tiempos_experimento_con_aumento(opt=opt_resultado_exp2, \ |
| 36 | + operadores_activos=operadores_resultado_exp1, \ |
| 37 | + incremento_estaciones=incremento_estaciones, \ |
| 38 | + incremento_furgonetas=incremento_furgonetas, \ |
| 39 | + incremento_bicicletas=incremento_bicicletas, \ |
| 40 | + lista_semillas=lista_semillas, |
| 41 | + n_incrementos=n_incrementos) |
| 42 | + |
| 43 | +def experimento5(operadores_resultado_exp1: dict, opt_resultado_exp2: int, k, lam ,limite, lista_semillas: list, iteraciones_por_replica: int) -> None: |
32 | 44 | # Experimento 5: Comparación de HC y SA
|
33 |
| - |
34 |
| - def exp_schedule(k: float=k, lam: float=lam, limit: int=limit): |
35 |
| - return lambda t: (k * exp(-lam * t)) if t < limit else 0 |
36 |
| - |
37 |
| - comparar_resultados_HC_SA(opt=2, HC=True, SA=True, iterations=50, schedule_sa=exp_schedule()) |
38 |
| - |
39 |
| -def experimento6() -> None: |
40 |
| - # Experimento 6: Comparación de HC y SA |
41 |
| - |
42 |
| - def exp_schedule(k: float=k, lam: float=lam, limit: int=limit): |
43 |
| - return lambda t: (k * exp(-lam * t)) if t < limit else 0 |
44 |
| - |
45 |
| - comparar_resultados_HC_SA(opt=2, HC=True, SA=True, iterations=50, schedule_sa=exp_schedule()) |
| 45 | + comparar_resultados_HC_SA(opt=opt_resultado_exp2, \ |
| 46 | + HC=True, \ |
| 47 | + SA=True, \ |
| 48 | + lista_semillas=lista_semillas, \ |
| 49 | + k=k, \ |
| 50 | + lam=lam, \ |
| 51 | + limit=limite, \ |
| 52 | + operadores_activos=operadores_resultado_exp1, \ |
| 53 | + iteraciones_por_replica=iteraciones_por_replica, \ |
| 54 | + coste_transporte=False) |
| 55 | + |
| 56 | + comparar_resultados_HC_SA(opt=opt_resultado_exp2, \ |
| 57 | + HC=True, \ |
| 58 | + SA=True, \ |
| 59 | + lista_semillas=lista_semillas, \ |
| 60 | + k=k, \ |
| 61 | + lam=lam, \ |
| 62 | + limit=limite, \ |
| 63 | + operadores_activos=operadores_resultado_exp1, \ |
| 64 | + iteraciones_por_replica=iteraciones_por_replica, \ |
| 65 | + coste_transporte=True) |
| 66 | + |
| 67 | +def experimento6(operadores_resultado_exp1: dict, \ |
| 68 | + opt_resultado_exp2: int, \ |
| 69 | + incremento_furgonetas: int, \ |
| 70 | + lista_semillas: list, \ |
| 71 | + n_incrementos: int) -> None: |
| 72 | + # Experimento 6: Comparación de HC augmentando las furgonetas |
| 73 | + augmento_furgonetas(opt=opt_resultado_exp2, \ |
| 74 | + operadores_activos=operadores_resultado_exp1, \ |
| 75 | + incremento_furgonetas=incremento_furgonetas, \ |
| 76 | + lista_semillas=lista_semillas, |
| 77 | + n_incrementos=n_incrementos) |
46 | 78 |
|
47 | 79 | #######################################################################################################################
|
48 | 80 |
|
49 | 81 | # Programa principal
|
50 | 82 | if __name__ == "__main__":
|
| 83 | + # Creación de la lista de semillas |
| 84 | + rng = random.Random(1234) |
| 85 | + n_semillas: int = 10 |
| 86 | + lista_semillas: list = [42] + [rng.randint(0, 1000) for _ in range(n_semillas - 1)] |
| 87 | + print(f"Lista de {n_semillas} semillas para los experimentos: {lista_semillas}") |
51 | 88 |
|
52 | 89 | # ----- Experimento 1 -----
|
53 |
| - #experimento1(opt=1, semilla=1234) |
| 90 | + #experimento1(opt=1, lista_semillas=lista_semillas, iteraciones_por_semilla=10) |
54 | 91 |
|
55 | 92 | operadores_exp1: dict = {'CambiarOrdenDescarga': True, \
|
56 | 93 | 'IntercambiarEstacionDescarga': False, \
|
57 |
| - 'IntercambiarEstacionCarga': False, \ |
| 94 | + 'IntercambiarEstacionCarga': True, \ |
58 | 95 | 'ReasignarFurgonetaInformado': True}
|
59 | 96 |
|
60 | 97 | # ----- Experimento 2 -----
|
61 |
| - #experimento2(operadores_resultado_exp1=operadores_exp1, semilla_rng=1234, iteraciones=100) |
| 98 | + #experimento2(operadores_resultado_exp1=operadores_exp1, lista_semillas=lista_semillas, iteraciones_estrategias_aleatorias=5) |
62 | 99 |
|
63 | 100 | opt_exp2: int = 2
|
64 | 101 |
|
65 | 102 | # ----- Experimento 3 -----
|
66 |
| - valores_k: list = [0.001, 0.01, 0.1, 1, 10, 100] |
67 |
| - valores_lam: list = [0.0001, 0.001, 0.01, 0.1, 0.99] |
68 |
| - limite: int = 15_000 |
| 103 | + valores_k: list = [1, 0.01]#[0.001, 0.01, 0.1, 1, 10, 100] |
| 104 | + valores_lam: list = [0.1, 0.01, 0.001]#[0.0001, 0.001, 0.01, 0.1, 0.99] |
| 105 | + limite: int = 25_000 |
69 | 106 |
|
70 |
| - experimento3(operadores_resultado_exp1=operadores_exp1, opt_resultado_exp2=opt_exp2, valores_k=valores_k, valores_lam=valores_lam, limite=limite) |
| 107 | + #experimento3(iteraciones_por_semilla=1, lista_semillas=lista_semillas, operadores_resultado_exp1=operadores_exp1, opt_resultado_exp2=opt_exp2, valores_k=valores_k, valores_lam=valores_lam, limite=limite) |
71 | 108 |
|
72 |
| - k_exp3: float = 0.1 |
| 109 | + k_exp3: float = 1 |
73 | 110 | lam_exp3: float = 0.1
|
74 |
| - limite_exp3: float = 15000 |
| 111 | + limite_exp3: int = 1000 |
75 | 112 |
|
76 | 113 | # ----- Experimento 4 -----
|
77 |
| - #experimento4(operadores_resultado_exp1=operadores_exp1, opt_resultado_exp2=opt_exp2) |
| 114 | + #experimento4(lista_semillas=lista_semillas, operadores_resultado_exp1=operadores_exp1, opt_resultado_exp2=opt_exp2, incremento_estaciones=25, incremento_furgonetas=5, incremento_bicicletas=1250, n_incrementos=8) |
78 | 115 |
|
79 | 116 | # ----- Experimento 5 -----
|
80 |
| - #experimento5(operadores_resultado_exp1=operadores_exp1, opt_resultado_exp2=opt_exp2) |
| 117 | + experimento5(iteraciones_por_replica=10, lista_semillas=lista_semillas, k=k_exp3, lam=lam_exp3, limite=limite_exp3, operadores_resultado_exp1=operadores_exp1, opt_resultado_exp2=opt_exp2) |
81 | 118 |
|
82 | 119 | # ----- Experimento 6 -----
|
83 |
| - #experimento6(operadores_resultado_exp1=operadores_exp1, opt_resultado_exp2=opt_exp2) |
| 120 | + #experimento6(lista_semillas=lista_semillas, operadores_resultado_exp1=operadores_exp1, opt_resultado_exp2=opt_exp2, incremento_furgonetas=5, n_incrementos=9) |
0 commit comments