summaryrefslogtreecommitdiff
path: root/ero1/src/helper/export_cost.py
blob: d3d9ede12b3bbb6a1c6a5083aab93bb65213bc06 (plain)
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
# - Distance Parcourus 
# - Nombre de déneigeuses
# - Coût en fonction de la déneigeuse choisie
# - Coût du drone
# - Distance parcourus par déneigeuse
# - Temps "réel" passé
# - Temps d'exécution (Indicatif uniquement)

from src.helper.debug_printer import debug_print
import math
import parameters as params

def export_cost(parcours_drone, parcours_deneigeuses, graph, debug_mode, temps_execution_deneigeuse, temps_execution_drone):
    """
    Exporte le coût du parcours.
    Parameters:
        parcours_drone : Les routes à exporter.
        parcours_deneigeuses : Les routes à exporter.
        graph : Le graphe à exporter.
        debug_mode : Indique si le mode debug est activé ou non.
        temps_execution_deneigeuse : Le temps d'exécution des déneigeuses.
        temps_execution_drone : Le temps d'exécution du drone.
    """
    
    debug_print(f"======== EXPORT COST ==========", debug_mode)
    debug_print(f"Exportation du coût du parcours.", debug_mode)


    def get_edge_length(u, v):
        try:
            return graph[u][v][0]['length']
        except KeyError:
            try:
                return graph[v][u][0]['length']
            except KeyError:
                return 0

    distance_parcourue_deneigeuses = math.ceil(sum(sum(get_edge_length(u, v) for u, v in parcours) for parcours in parcours_deneigeuses))
    distance_parcourue_drone = math.ceil(sum(get_edge_length(u, v) for u, v in parcours_drone))
    nombre_de_de_neigeuses = len(parcours_deneigeuses)

    debug_print(f"Distance parcourue - Drone : {distance_parcourue_drone}m", debug_mode)
    debug_print(f"Distance parcourue - Déneigeuses : {distance_parcourue_deneigeuses}m", debug_mode)
    debug_print(f"Nombre de déneigeuses : {nombre_de_de_neigeuses}", debug_mode)
    debug_print(f"Temps d'exécution - Drone : {temps_execution_drone} secondes", debug_mode)

    i = 1
    for parcours in parcours_deneigeuses:
        distance_parcourue_deneigeuse = math.ceil(sum(get_edge_length(u, v) for u, v in parcours))
        debug_print(f"      Distance parcourue - Déneigeuse {i} : {distance_parcourue_deneigeuse}m", debug_mode)
        i += 1
    
    debug_print(f"======== EXPORT COST ==========", debug_mode)

    # Exportation du coût du parcours dans un fichier texte
    with open("temp/export_cost.txt", "w") as f:
        f.write(f"{params.ALGORITHM_NAME}|{distance_parcourue_drone}|{distance_parcourue_deneigeuses}|{nombre_de_de_neigeuses}|{temps_execution_deneigeuse}|{temps_execution_drone}\n")
        for parcours in parcours_deneigeuses:
            distance_parcourue_deneigeuse = math.ceil(sum(get_edge_length(u, v) for u, v in parcours))
            f.write(f"{distance_parcourue_deneigeuse}\n")