summaryrefslogtreecommitdiff
path: root/ero1/src/demo/demo_stats.py
blob: d8dc78cd7805d0fcf82bf529a528aa408f352735 (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
61
62
63
64
import math
import parameters

def stats_deneigeuses(all_costs):
    '''
    Calcule les statistiques des déneigeuses.
    Parameters:
        all_costs : Liste des coûts des déneigeuses.
    Returns:
        Un dictionnaire contenant les statistiques des déneigeuses.
    '''
    result = {
        "list":all_costs
    }
    result["number"] = len(all_costs)
    result["dist"] = {
        "max": max(d["dist"] for d in all_costs) / 1000,
        "min": min(d["dist"] for d in all_costs) / 1000,
        "total": sum(d["dist"] for d in all_costs) / 1000
    }
    result["dist"]["avg"] = result["dist"]["total"] / result["number"]
    result["time"] = {}
    result["time"]["real"] = {"t1": {}, "t2": {}}
    result["time"]["real"]["t1"]["avg"] = result["dist"]["avg"] / parameters.TYPE_I_SPEED
    result["time"]["real"]["t2"]["avg"] = result["dist"]["avg"] / parameters.TYPE_II_SPEED
    result["time"]["real"]["t1"]["max"] = result["dist"]["max"] / parameters.TYPE_I_SPEED
    result["time"]["real"]["t2"]["max"] = result["dist"]["max"] / parameters.TYPE_II_SPEED


    def coutHoraireTypeI(heures):
        return heures * parameters.TYPE_I_COST_HOUR_UNDER_8 if heures <= 8 else 8 * parameters.TYPE_I_COST_HOUR_UNDER_8 + (heures - 8) * parameters.TYPE_I_COST_HOUR_ABOVE_8
    
    def coutHoraireTypeII(heures):
        return heures * parameters.TYPE_II_COST_HOUR_UNDER_8 if heures <= 8 else 8 * parameters.TYPE_II_COST_HOUR_UNDER_8 + (heures - 8) * parameters.TYPE_II_COST_HOUR_ABOVE_8

    coutTotalTypeI = (
    parameters.TYPE_I_COST_FIXED * (result["number"]) +
    parameters.TYPE_I_COST_KILO * result["dist"]["total"] +
    coutHoraireTypeI(result["time"]["real"]["t1"]["avg"] * result["number"]))
    

    coutTotalTypeII = (
    parameters.TYPE_II_COST_FIXED * result["number"] +
    parameters.TYPE_II_COST_KILO * result["dist"]["total"] +
    coutHoraireTypeII(result["time"]["real"]["t2"]["avg"] * result["number"])
    )
    result["cost"] = {
        "t1":coutTotalTypeI,
        "t2":coutTotalTypeII
    }
    return result

def stats_drone(cost):
    '''
    Calcule les statistiques du drone.
    Parameters:
        cost : Dictionnaire contenant les coûts du drone.
    Returns:
        Un dictionnaire contenant les statistiques du drone.
    '''
    cost["distKM"] = cost["dist"] / 1000
    cost["time"]["real"] = (cost["distKM"] / parameters.SUPER_DRONE_SPEED) * 60
    cost["cost"] = parameters.SUPER_DRONE_COST_FIXED + parameters.SUPER_DRONE_COST_KILO * (cost["dist"] / 1000)
    return cost