Source code for flow.controllers.base_routing_controller

"""Contains the base routing controller class."""

from abc import ABCMeta, abstractmethod


[docs]class BaseRouter(metaclass=ABCMeta): """Base class for routing controllers. These controllers are used to dynamically change the routes of vehicles after initialization. Usage ----- >>> from flow.core.params import VehicleParams >>> from flow.controllers import ContinuousRouter >>> vehicles = VehicleParams() >>> vehicles.add("human", routing_controller=(ContinuousRouter, {})) Note: You can replace "ContinuousRouter" with any routing controller you want. Parameters ---------- veh_id : str ID of the vehicle this controller is used for router_params : dict Dictionary of router params """ def __init__(self, veh_id, router_params): """Instantiate the base class for routing controllers.""" self.veh_id = veh_id self.router_params = router_params
[docs] @abstractmethod def choose_route(self, env): """Return the routing method implemented by the controller. Parameters ---------- env : flow.envs.Env see flow/envs/base.py Returns ------- list or None The sequence of edges the vehicle should adopt. If a None value is returned, the vehicle performs no routing action in the current time step. """ pass