Dynamical system model
|
The Street class represents a street in the network. More...
#include <Street.hpp>
Public Member Functions | |
Street (Id id, const Street &) | |
Construct a new Street object starting from an existing 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(), std::optional< int > capacity=std::nullopt, int transportCapacity=1) | |
Construct a new Street object. | |
void | setQueue (dsm::queue< Size > queue, size_t index) |
Set the street's queue. | |
std::vector< Id > const & | movingAgents () const |
Get the street's waiting agents. | |
const dsm::queue< Size > & | queue (size_t index) const |
Get the street's queue. | |
const std::vector< dsm::queue< Size > > & | 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 or in , if normalized. | |
bool | isFull () const final |
Check if the street is full. | |
int | nMovingAgents () const override |
int | nExitingAgents () const final |
Get the number of agents on all queues. | |
std::vector< Direction > const & | laneMapping () const |
void | addAgent (Id agentId) override |
void | enqueue (Id agentId, size_t index) |
Add an agent to the street's queue. | |
virtual std::optional< Id > | dequeue (size_t index) |
Remove an agent from the street's queue. | |
virtual bool | isSpire () const |
Check if the street is a spire. | |
virtual bool | isStochastic () const |
Public Member Functions inherited from dsm::Road | |
Road (Id id, const Road &) | |
Construct a new Road object starting from an existing 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(), std::optional< int > capacity=std::nullopt, int transportCapacity=1) | |
Construct a new Road object. | |
void | setMaxSpeed (double speed) |
Set the maximum speed, in meters per second (default is 50 km/h) | |
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. | |
std::string | name () const |
Get the name. | |
Public Member Functions inherited from dsm::Edge | |
Edge (Id id, std::pair< Id, Id > nodePair, int capacity=1, int transportCapacity=1, double angle=0.0) | |
Construct a new Edge object. | |
void | setCapacity (int capacity) |
void | setTransportCapacity (int capacity) |
void | setAngle (std::pair< double, double > srcNodeCoordinates, std::pair< double, double > dstNodeCoordinates) |
Id | id () const |
Get the edge's id. | |
Id | u () const |
Get the edge's source node id. | |
Id | v () const |
Get the edge's destination node id. | |
std::pair< Id, Id > const & | nodePair () const |
Get the edge's node pair. | |
int | capacity () const |
Get the edge's capacity, in number of agents. | |
int | transportCapacity () const |
Get the edge's transport capacity, in number of agents. | |
double | angle () const |
Get the edge's angle, in radians, between the source and destination nodes. | |
double | deltaAngle (double const previousEdgeAngle) const |
Static Public Member Functions | |
static void | setMeanVehicleLength (double meanVehicleLength) |
Set the mean vehicle length. | |
Static Public Member Functions inherited from dsm::Road | |
static void | setMeanVehicleLength (double meanVehicleLength) |
Set the mean vehicle length, in meters (default is 5) | |
static double | meanVehicleLength () |
Get the mean vehicle length. | |
Additional Inherited Members | |
Protected Attributes inherited from dsm::Road | |
double | m_length |
double | m_maxSpeed |
int | m_nLanes |
std::string | m_name |
Protected Attributes inherited from dsm::Edge | |
Id | m_id |
std::pair< Id, Id > | m_nodePair |
int | m_capacity |
int | m_transportCapacity |
double | m_angle |
Static Protected Attributes inherited from dsm::Road | |
static double | m_meanVehicleLength |
The Street class represents a street in the network.
dsm::Street::Street | ( | Id | id, |
const Street & | ) |
dsm::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(), | ||
std::optional< int > | capacity = std::nullopt, | ||
int | transportCapacity = 1 ) |
Construct a new Street object.
id | The street's id |
nodePair | The street's node pair |
length | The street's length, in meters (default is the mean vehicle length) |
nLanes | The street's number of lanes (default is 1) |
maxSpeed | The street's speed limit, in m/s (default is 50 km/h) |
name | The street's name (default is an empty string) |
capacity | The street's capacity (default is the maximum number of vehicles that can fit in the street) |
transportCapacity | The street's transport capacity (default is 1) |
|
overridevirtual |
Implements dsm::Road.
|
finalvirtual |
Get the street's density in or in , if normalized.
normalized | If true, the street's density is normalized by the street's capacity |
Implements dsm::Road.
|
virtual |
Remove an agent from the street's queue.
Reimplemented in dsm::SpireStreet, and dsm::StochasticSpireStreet.
void dsm::Street::enqueue | ( | Id | agentId, |
size_t | index ) |
Add an agent to the street's queue.
agentId | The id of the agent to add to the street's queue |
std::runtime_error | If the street's queue is full |
|
inline |
Get the street's queues.
|
inlinefinalvirtual |
Check if the street is full.
Implements dsm::Edge.
|
inlinevirtual |
Check if the street is a spire.
Reimplemented in dsm::SpireStreet, and dsm::StochasticSpireStreet.
std::vector< Id > const & dsm::Street::movingAgents | ( | ) | const |
Get the street's waiting agents.
|
finalvirtual |
Get the number of agents on the street.
Implements dsm::Road.
|
finalvirtual |
Get the number of agents on all queues.
Implements dsm::Road.
|
inlineoverridevirtual |
Implements dsm::Road.
|
inline |
Get the street's queue.
|
static |
Set the mean vehicle length.
meanVehicleLength | The mean vehicle length |
std::invalid_argument | If the mean vehicle length is negative |
|
inline |
Set the street's queue.
queue | The street's queue |