-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexecute_all.sh
More file actions
executable file
·122 lines (103 loc) · 4.96 KB
/
Copy pathexecute_all.sh
File metadata and controls
executable file
·122 lines (103 loc) · 4.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/bash
# Script d'exécution de toutes les méthodes sur tous les niveaux d'instances
# Méthodes: exact, alns, pso, sa
# Niveaux: 01 à 07
# Couleurs pour l'affichage
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Définir les méthodes dans l'ordre souhaité
METHODS=("alns" "sa" "pso" "exact")
# Définir les niveaux
LEVELS=("01" "02" "03" "04" "05" "06" "07")
# Créer un fichier de log avec timestamp
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
LOG_FILE="execution_log_${TIMESTAMP}.txt"
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"
echo -e "${BLUE} Exécution de toutes les méthodes sur tous les niveaux${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"
echo ""
echo "Log file: ${LOG_FILE}"
echo ""
# Initialiser les compteurs
TOTAL_RUNS=0
SUCCESSFUL_RUNS=0
FAILED_RUNS=0
# Fonction pour logger
log_message() {
echo "$1" | tee -a "${LOG_FILE}"
}
# Parcourir toutes les méthodes
for METHOD in "${METHODS[@]}"; do
echo ""
log_message "$(echo -e ${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC})"
log_message "$(echo -e ${GREEN}Méthode: ${METHOD^^}${NC})"
log_message "$(echo -e ${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC})"
# Parcourir tous les niveaux
for LEVEL in "${LEVELS[@]}"; do
INSTANCE_FILE="instances/level${LEVEL}.json"
# Vérifier que le fichier existe
if [ ! -f "${INSTANCE_FILE}" ]; then
log_message "$(echo -e ${RED}⚠ Instance ${INSTANCE_FILE} non trouvée, passage au suivant${NC})"
continue
fi
echo ""
log_message "$(echo -e ${YELLOW}▶ Exécution: ${METHOD} - Level ${LEVEL}${NC})"
log_message "Instance: ${INSTANCE_FILE}"
# Incrémenter le compteur total
((TOTAL_RUNS++))
# Définir les paramètres selon la méthode
if [ "${METHOD}" == "exact" ]; then
# Pour exact, on limite le temps pour les niveaux élevés
TIME_LIMIT=600
python main.py "${INSTANCE_FILE}" -m "${METHOD}" -t ${TIME_LIMIT} --no-plot
elif [ "${METHOD}" == "alns" ]; then
# ALNS avec un temps limite raisonnable
TIME_LIMIT=60
ITERATIONS=2000
python main.py "${INSTANCE_FILE}" -m "${METHOD}" -t ${TIME_LIMIT} -i ${ITERATIONS} --no-plot
elif [ "${METHOD}" == "pso" ]; then
# PSO avec particules et itérations
PARTICLES=50
ITERATIONS=1000
python main.py "${INSTANCE_FILE}" -m "${METHOD}" -p ${PARTICLES} -i ${ITERATIONS} --no-plot
elif [ "${METHOD}" == "sa" ]; then
# SA avec beaucoup d'itérations
ITERATIONS=10000
python main.py "${INSTANCE_FILE}" -m "${METHOD}" -i ${ITERATIONS} --no-plot
fi
# Vérifier le code de sortie
if [ $? -eq 0 ]; then
log_message "$(echo -e ${GREEN}✓ Succès${NC})"
((SUCCESSFUL_RUNS++))
else
log_message "$(echo -e ${RED}✗ Échec${NC})"
((FAILED_RUNS++))
fi
# Ajouter une petite pause entre les exécutions
sleep 1
done
done
# Afficher le résumé final
echo ""
echo ""
log_message "$(echo -e ${BLUE}═══════════════════════════════════════════════════════════${NC})"
log_message "$(echo -e ${BLUE} RÉSUMÉ D'EXÉCUTION${NC})"
log_message "$(echo -e ${BLUE}═══════════════════════════════════════════════════════════${NC})"
log_message "Total d'exécutions : ${TOTAL_RUNS}"
log_message "$(echo -e ${GREEN}Succès : ${SUCCESSFUL_RUNS}${NC})"
log_message "$(echo -e ${RED}Échecs : ${FAILED_RUNS}${NC})"
log_message "Fichier log : ${LOG_FILE}"
log_message "$(echo -e ${BLUE}═══════════════════════════════════════════════════════════${NC})"
echo ""
# Afficher les résultats
echo ""
log_message "$(echo -e ${YELLOW}Les résultats sont sauvegardés dans les dossiers:${NC})"
log_message " - results/alns/"
log_message " - results/sa/"
log_message " - results/pso/"
log_message " - results/exact/"
echo ""
exit 0