|
Dynamical system model
|
A stochastic street is a street with a flow rate parameter. More...
#include <Street.hpp>
Public Member Functions | |
| StochasticStreet (Street &&, double flowRate) | |
| StochasticStreet (Id id, std::pair< Id, Id > nodePair, double length=Road::meanVehicleLength(), double maxSpeed=13.8888888889, int nLanes=1, std::string name=std::string(), geometry::PolyLine geometry={}, double flowRate=1., std::optional< int > capacity=std::nullopt, double transportCapacity=1.) | |
| void | setFlowRate (double const flowRate) |
| Set the flow rate of the street, i.e. the probability that an agent can exit the street. | |
| auto | flowRate () const |
| Get the flow rate of the street. | |
| constexpr bool | isStochastic () const final |
| Check if the street is stochastic. | |
Public Member Functions inherited from dsf::mobility::Street | |
| Street (Id id, std::pair< Id, Id > nodePair, double length=Road::meanVehicleLength(), double maxSpeed=13.8888888889, int nLanes=1, std::string name=std::string(), geometry::PolyLine geometry={}, std::optional< int > capacity=std::nullopt, double transportCapacity=1.) | |
| Construct a new Street object. | |
| Street (Street &&)=default | |
| Street (Street const &)=delete | |
| bool | operator== (Street const &other) const |
| void | setLaneMapping (std::vector< Direction > const &laneMapping) |
| Set the street's lane mapping. | |
| void | setQueue (dsf::queue< std::unique_ptr< Agent > > queue, size_t index) |
| Set the street's queue. | |
| void | enableCounter (std::string name=std::string()) |
| Enable a coil (dsf::Counter sensor) on the street. | |
| void | resetCounter () |
| Reset the counter of the street. | |
| const dsf::queue< std::unique_ptr< Agent > > & | queue (size_t const &index) const |
| Get the street's queue. | |
| std::vector< dsf::queue< std::unique_ptr< Agent > > > const & | exitQueues () const |
| Get the street's queues. | |
| int | nAgents () const final |
| Get the number of agents on the street. | |
| double | density (bool normalized=false) const final |
| Get the street's density in \(m^{-1}\) or in \(a.u.\), if normalized. | |
| bool | isFull () const final |
| Check if the street is full. | |
| auto | counterName () const |
| Get the name of the counter. | |
| auto | counts () const |
| Get the counts of the counter. | |
| dsf::priority_queue< std::unique_ptr< Agent >, std::vector< std::unique_ptr< Agent > >, AgentComparator > & | movingAgents () |
| Get the street's moving agents priority queue. | |
| int | nMovingAgents () const override |
| Get the number of of moving agents, i.e. agents not yet enqueued. | |
| double | nExitingAgents (Direction direction=Direction::ANY, bool normalizeOnNLanes=false) const final |
| Get the number of agents on all queues for a given direction. | |
| std::vector< Direction > const & | laneMapping () const |
| Get the street's lane mapping. | |
| virtual void | addAgent (std::unique_ptr< Agent > pAgent) |
| Add an agent to the street. | |
| void | enqueue (size_t const &queueId) |
| Add an agent to the street's queue. | |
| virtual std::unique_ptr< Agent > | dequeue (size_t index) |
| Remove an agent from the street's queue. | |
| constexpr bool | hasCoil () const |
| Check if the street has a coil (dsf::Counter sensor) on it. | |
Public Member Functions inherited from dsf::mobility::Road | |
| Road (Id id, std::pair< Id, Id > nodePair, double length=m_meanVehicleLength, double maxSpeed=13.8888888889, int nLanes=1, std::string name=std::string(), geometry::PolyLine geometry={}, std::optional< int > capacity=std::nullopt, double transportCapacity=1.) | |
| Construct a new Road object. | |
| void | setMaxSpeed (double speed) |
| Set the maximum speed, in meters per second (default is 50 km/h) | |
| void | setCapacity (int capacity) |
| Set the capacity, in number of agents. | |
| void | setTransportCapacity (double transportCapacity) |
| Set the transport capacity, in number of agents. | |
| void | setPriority (int priority) |
| Set the road's priority. | |
| void | addForbiddenTurn (Id roadId) |
| Add a road id to the forbidden turns. | |
| void | setForbiddenTurns (std::set< Id > const &forbiddenTurns) |
| Replace the road's forbidden turns with the given set. | |
| double | length () const |
| Get the length, in meters. | |
| double | maxSpeed () const |
| Get the maximum speed, in meters per second. | |
| int | nLanes () const |
| Get the number of lanes. | |
| int | capacity () const |
| Get the road's capacity, in number of agents. | |
| double | transportCapacity () const |
| Get the road's transport capacity, in number of agents. | |
| std::string | name () const |
| Get the name. | |
| int | priority () const |
| Get the priority. | |
| std::set< Id > const & | forbiddenTurns () const |
| Get the road's forbidden turns. | |
| Direction | turnDirection (double const &previousStreetAngle) const |
| Get the road's turn direction given the previous road angle. | |
Public Member Functions inherited from dsf::Edge | |
| Edge (Id id, std::pair< Id, Id > nodePair, geometry::PolyLine geometry={}) | |
| Construct a new Edge object. | |
| Edge (Edge &&)=default | |
| Edge (const Edge &)=delete | |
| void | resetId (Id newId) |
| void | setGeometry (geometry::PolyLine geometry) |
| void | setWeight (double const weight) |
| Id | id () const |
| Get the edge's id. | |
| Id | source () const |
| Get the edge's source node id. | |
| Id | target () const |
| Get the edge's target node id. | |
| std::pair< Id, Id > const & | nodePair () const |
| Get the edge's node pair. | |
| geometry::PolyLine const & | geometry () const |
| Get the edge's geometry. | |
| double | angle () const |
| Get the edge's angle, in radians, between the source and target nodes. | |
| double | weight () const |
| Get the edge's weight. | |
| double | deltaAngle (double const previousEdgeAngle) const |
Additional Inherited Members | |
Static Public Member Functions inherited from dsf::mobility::Street | |
| static void | setMeanVehicleLength (double meanVehicleLength) |
| Set the mean vehicle length. | |
Static Public Member Functions inherited from dsf::mobility::Road | |
| static void | setMeanVehicleLength (double meanVehicleLength) |
| Set the mean vehicle length, in meters (default is 5) | |
| static double | meanVehicleLength () |
| Get the mean vehicle length. | |
Protected Member Functions inherited from dsf::Edge | |
| void | m_setAngle (geometry::Point srcNodeCoordinates, geometry::Point dstNodeCoordinates) |
Protected Attributes inherited from dsf::mobility::Road | |
| double | m_length |
| double | m_maxSpeed |
| int | m_nLanes |
| int | m_capacity |
| double | m_transportCapacity |
| std::string | m_name |
| int | m_priority |
| std::set< Id > | m_forbiddenTurns |
Protected Attributes inherited from dsf::Edge | |
| geometry::PolyLine | m_geometry |
| Id | m_id |
| std::pair< Id, Id > | m_nodePair |
| std::optional< double > | m_weight |
| double | m_angle |
Static Protected Attributes inherited from dsf::mobility::Road | |
| static double | m_meanVehicleLength = 5. |
A stochastic street is a street with a flow rate parameter.
The Stochastic Street is used to replace traffic lights with a lower level of detail. The idea is to model the flow of agents in a street as a stochastic process, limiting the number of agents that can exit using a parameter in [0, 1]. Thus, the flow rate parameter represents the ratio between the green time of the traffic light and the total time of the traffic light cycle.
|
inline |
Get the flow rate of the street.
|
inlineconstexprfinalvirtual |
Check if the street is stochastic.
Reimplemented from dsf::mobility::Street.
| void dsf::mobility::StochasticStreet::setFlowRate | ( | double const | flowRate | ) |
Set the flow rate of the street, i.e. the probability that an agent can exit the street.
| flowRate | The flow rate to set |