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