summaryrefslogtreecommitdiff
path: root/ero1/src/demo/demo_stats.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_stats.py
add: added projectsHEADmain
Diffstat (limited to 'ero1/src/demo/demo_stats.py')
-rw-r--r--ero1/src/demo/demo_stats.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/ero1/src/demo/demo_stats.py b/ero1/src/demo/demo_stats.py
new file mode 100644
index 0000000..d8dc78c
--- /dev/null
+++ b/ero1/src/demo/demo_stats.py
@@ -0,0 +1,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 \ No newline at end of file