summaryrefslogtreecommitdiff
path: root/ero1/src/demo/demo_final_report.py
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:07:58 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:07:58 +0200
commit967be9e750221ab2ab783f95df79bb26d290a45e (patch)
tree6802900a5e975f9f68b169f0f503f040056d6952 /ero1/src/demo/demo_final_report.py
add: added projectsHEADmain
Diffstat (limited to 'ero1/src/demo/demo_final_report.py')
-rw-r--r--ero1/src/demo/demo_final_report.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/ero1/src/demo/demo_final_report.py b/ero1/src/demo/demo_final_report.py
new file mode 100644
index 0000000..59badda
--- /dev/null
+++ b/ero1/src/demo/demo_final_report.py
@@ -0,0 +1,110 @@
+from src.demo.print_demo import print_demo
+from src.demo.ask_variable import ask_variable
+from src.helper.color_suburbs import display_suburbs_with_colors
+from src.demo.demo_cost import export_deneigeuse, export_drone, get_edge_length
+from src.demo.demo_stats import stats_deneigeuses, stats_drone
+
+# IMPORT FOR GENERATION
+from src.generation.graph_generation import generate_graph
+from src.generation.suburb_snowplow_generation import generate_quartiers_from_path
+
+# IMPORT FOR DRONE:
+from src.drone.postier_chinoisV2 import final_path, postier_chinois_process_v2, connect_circuits
+from src.drone.postier_chinoisV1 import postier_chinois_process_v1
+from src.drone.postier_chinoisV3 import postier_chinois_process_v3
+
+# IMPORT FOR DENEIGEUSE:
+from src.helper.partitions import partition
+from src.deneigeuses.hangar_to_deneigeuse import path_hangar_to_deneigeuse, path_deneigeuse_to_hangar
+
+# IMPORT FOR YAML & KML
+from src.helper.export_to_kml import export_to_kml
+from src.helper.export_import_yaml import load_paths_from_yaml
+import os
+import time
+
+
+def line():
+ print("----------------------------------")
+
+
+def print_cost_from_list(lst, base_indent=0):
+ """
+ affiche la distance et le temps approximatif de chaque déneigeuses
+ """
+
+ # print_demo(f"Récap avec {len(lst)} déneigeuses:", base_indent)
+ print("")
+ print_demo("Récapitulatif des déneigeuses:", base_indent)
+
+ for i, o in enumerate(lst):
+ print_demo(f"Déneigeuse numéro {i+1} :", base_indent + 1)
+ print_demo(f"Distance = {(o['dist']/1000):.2f} km", base_indent + 2)
+ print_demo(f"Durée approximative = {o['time']['format']}", base_indent + 2)
+
+
+def print_recap_stat_target(stat_deneigeuses, nb_deneigeuse, most_opti=False, base_indent=0):
+ """
+ Affiche dans le terminal sous un format organisé les statistiques
+ avec nb_deneigeuse déneigueses
+ """
+ if (nb_deneigeuse not in stat_deneigeuses):
+ raise ValueError(f'Données pour {nb_deneigeuse} non calculées')
+
+ data = stat_deneigeuses[nb_deneigeuse]
+
+ if most_opti:
+ print_demo(f"Récapitulatif global (solution opti): {data['number']} déneigeuses", base_indent)
+ else:
+ print_demo(f"Récapitulatif global: {data['number']} déneigeuses", base_indent)
+
+ # print_demo(f"nombre de déneigeuses = {data['number']}", base_indent + 1)
+
+ print_demo("Distance parcourue par les déneigeuses :", base_indent + 1)
+ print_demo(f"Maximale = {data['dist']['max']:.2f} km", base_indent + 2)
+ print_demo(f"Minimale = {data['dist']['min']:.2f} km", base_indent + 2)
+ print_demo(f"Totale = {data['dist']['total']:.2f} km", base_indent + 2)
+ print_demo(f"Moyenne = {data['dist']['avg']:.2f} km", base_indent + 2)
+
+ print_demo("Temps réel de parcours pour les déneigeuses:", base_indent + 1)
+ print_demo("Type 1 : ", base_indent+2)
+ print_demo(f"Maximale = {data['time']['real']['t1']['max']:.2f} heures", base_indent + 3)
+ print_demo(f"Moyenne = {data['time']['real']['t1']['avg']:.2f} heures", base_indent + 3)
+ print_demo("Type 2 : ", base_indent+2)
+ print_demo(f"Maximale = {data['time']['real']['t2']['max']:.2f} heures", base_indent + 3)
+ print_demo(f"Moyenne = {data['time']['real']['t2']['avg']:.2f} heures", base_indent + 3)
+
+ print_demo("Coût total :", base_indent + 1)
+ print_demo(f"Type 1 = {data['cost']['t1']:.2f} euros", base_indent + 2)
+ print_demo(f"Type 2 = {data['cost']['t2']:.2f} euros", base_indent + 2)
+
+ print_cost_from_list(data['list'], base_indent)
+
+
+def print_recap_stat_drone(stat_drone, base_indent=0):
+ print("##################")
+ print("# Recap du drone #")
+ print("##################")
+ # dist en km plus bas print_demo(f"distance parcourue par le drone: {stat_drone["dist"]}", base_indent+1)
+ print_demo("Temps écoulé :", base_indent)
+ print_demo(f"Durée de l'exécution du programme : {stat_drone['time']['format']}", base_indent+1)
+ print_demo(f"Durée réelle du parcours :", base_indent+1)
+ print_demo(f"{stat_drone['time']['real']:.2f} minutes", base_indent+2)
+ print_demo(f"{(stat_drone['time']['real'] / 60):.2f} heures", base_indent+2)
+ print_demo(f"Distance parcourue : {stat_drone['distKM']:.2f} km", base_indent)
+ print_demo(f"Coût : {stat_drone['cost']:.2f} euros", base_indent)
+
+
+def print_all_stat(stat_list, base_indent):
+ print("#########################")
+ print("# Recap des déneigeuses #")
+ print("#########################")
+ # line()
+
+ best = True
+ for elem in stat_list:
+ print("")
+ line()
+ print("")
+ print_recap_stat_target(stat_list, elem, best, base_indent)
+ best = False