@@ -72,6 +72,7 @@ namespace dsm {
7272 // / @return Size The node's transport capacity
7373 Size transportCapacity () const { return m_transportCapacity; }
7474
75+ virtual double density () const = 0;
7576 virtual bool isFull () const = 0;
7677
7778 virtual bool isIntersection () const noexcept { return false ; }
@@ -130,7 +131,11 @@ namespace dsm {
130131 // / @brief Add a street to the node street priorities
131132 // / @param streetId The street's id
132133 void addStreetPriority (Id streetId) { m_streetPriorities.emplace (streetId); }
133-
134+ // / @brief Returns the node's density
135+ // / @return double The node's density
136+ double density () const override {
137+ return static_cast <double >(m_agents.size ()) / m_capacity;
138+ }
134139 // / @brief Returns true if the node is full
135140 // / @return bool True if the node is full
136141 bool isFull () const override { return m_agents.size () == this ->m_capacity ; }
@@ -405,7 +410,11 @@ namespace dsm {
405410 // / @brief Get the node's queue
406411 // / @return dsm::queue<Id> The node's queue
407412 const dsm::queue<Id>& agents () const { return m_agents; }
408-
413+ // / @brief Returns the node's density
414+ // / @return double The node's density
415+ double density () const override {
416+ return static_cast <double >(m_agents.size ()) / m_capacity;
417+ }
409418 // / @brief Returns true if the node is full
410419 // / @return bool True if the node is full
411420 bool isFull () const override { return m_agents.size () == this ->m_capacity ; }
0 commit comments