mobility
mobility copied to clipboard
Restructuration globale du code
Je crée une nouvelle issue globale pour suivre la restructuration du code qui devrait permettre de répondre aux issues actuellement ouvertes. Je suis reparti de la branche carpool et ait ajouté toutes les modifications des autres branches pour avoir la version la plus à jour du code.
La modification la plus importante à ce stade est la création de groupes de classes par mode de transport:
- Une classe de type ModeParameters, pour stocker toutes les hypothèses nécessaires.
- Une classe de type PathTravelCosts ou PublicTransportTravelCosts, pour faire les calculs de distances, temps, coûts généralisé.
- Une classe chapeau de type TransportMode, qui stocke une instance de ModeParameters et TravelCosts.
Cela permet de bien séparer les hypothèses entre modes, et d'avoir un endroit unique où fixer des hypothèses par défaut. Cela permet aussi de créer facilement des modes dérivés, comme le covoiturage (basé sur le mode voiture mais avec une classe CarpoolTravelCosts spécifique), ou un mode "multimodal" qui contient les coûts de tous les modes :
class MultiModalMode(TransportMode):
def __init__(
self,
transport_zones: TransportZones,
modes: Optional[List[TransportMode]] = None
):
if modes is None:
car_mode = CarMode(transport_zones)
modes = [
WalkMode(transport_zones),
BicycleMode(transport_zones),
PublicTransportMode(transport_zones),
car_mode,
CarpoolMode(car_mode, CarpoolParameters(number_persons=2)),
CarpoolMode(car_mode, CarpoolParameters(number_persons=3)),
CarpoolMode(car_mode, CarpoolParameters(number_persons=4))
]
travel_costs = MultiModalTravelCosts(transport_zones, modes)
super().__init__(travel_costs, ModeParameters("multimodal"))
Cela devrait aussi faciliter l'application de "leviers", puisqu'il suffira de créer autant de versions de ModeParameters que l'on a de variantes du modèle.
Autre petits changements :
- Début de regroupement des fichiers python/R par "fonction".
- Ajout d'un dossier "experiments" pour stocker des scripts en cours de développement, pas encore terminés ni intégrés à l'architecture générale de Mobility.
- Amélioration du nom de certaines classes : TravelCosts -> PathTravelCosts (pour bien faire la différence avec PublicTransportTravelCosts).
@Mind-the-Cap