Dynamical system model
Loading...
Searching...
No Matches
dsf::mobility::Agent Class Reference

The Agent class represents an agent in the network. More...

#include <Agent.hpp>

Public Member Functions

 Agent (std::time_t const &spawnTime, std::optional< Id > itineraryId=std::nullopt, std::optional< Id > srcNodeId=std::nullopt)
 Construct a new Agent object.
 
 Agent (std::time_t const &spawnTime, std::vector< Id > const &trip, std::optional< Id > srcNodeId=std::nullopt)
 Construct a new Agent object.
 
void setSrcNodeId (Id srcNodeId)
 
void setStreetId (std::optional< Id > streetId=std::nullopt)
 Set the street occupied by the agent.
 
auto setNextStreetId (Id nextStreetId)
 Set the id of the next street.
 
void setSpeed (double speed)
 Set the agent's speed.
 
void setFreeTime (std::time_t const &freeTime)
 Set the agent's free time.
 
void incrementDistance (double distance)
 Increment the agent's distance by a given value.
 
void setMaxDistance (double const maxDistance)
 Update the agent's itinerary.
 
void setMaxTime (std::time_t const maxTime)
 Set the agent's maximum time.
 
void updateItinerary ()
 
void reset (std::time_t const &spawnTime)
 Reset the agent.
 
std::time_t const & spawnTime () const noexcept
 Get the agent's spawn time.
 
std::time_t const & freeTime () const noexcept
 Get the agent's free time.
 
Id id () const noexcept
 Get the agent's id.
 
Id itineraryId () const
 Get the agent's itinerary.
 
auto maxDistance () const
 Get the agent's maximum distance.
 
auto maxTime () const
 Get the agent's maximum time.
 
std::vector< Id > const & trip () const noexcept
 Get the agent's trip.
 
std::optional< Id > streetId () const noexcept
 Get the id of the street currently occupied by the agent.
 
std::optional< Id > srcNodeId () const noexcept
 Get the id of the source node of the agent.
 
std::optional< Id > nextStreetId () const noexcept
 Get the id of the next street.
 
double speed () const noexcept
 Get the agent's speed.
 
double distance () const noexcept
 Get the agent's travelled distance.
 
bool isRandom () const noexcept
 Return true if the agent is a random agent.
 
bool hasArrived (std::optional< std::time_t > const &currentTime) const noexcept
 Check if a random agent has arrived at its destination.
 

Detailed Description

The Agent class represents an agent in the network.

Constructor & Destructor Documentation

◆ Agent() [1/2]

dsf::mobility::Agent::Agent ( std::time_t const & spawnTime,
std::optional< Id > itineraryId = std::nullopt,
std::optional< Id > srcNodeId = std::nullopt )

Construct a new Agent object.

Parameters
spawnTimeThe agent's spawn time
itineraryIdOptional, The agent's destination node. If not provided, the agent is a random agent
srcNodeIdOptional, The id of the source node of the agent

◆ Agent() [2/2]

dsf::mobility::Agent::Agent ( std::time_t const & spawnTime,
std::vector< Id > const & trip,
std::optional< Id > srcNodeId = std::nullopt )

Construct a new Agent object.

Parameters
spawnTimeThe agent's spawn time
itineraryIdsThe agent's itinerary
srcNodeIdOptional, The id of the source node of the agent

Member Function Documentation

◆ distance()

double dsf::mobility::Agent::distance ( ) const
inlinenoexcept

Get the agent's travelled distance.

Returns
The agent's travelled distance

◆ freeTime()

std::time_t const & dsf::mobility::Agent::freeTime ( ) const
inlinenoexcept

Get the agent's free time.

Returns
The agent's free time

◆ hasArrived()

bool dsf::mobility::Agent::hasArrived ( std::optional< std::time_t > const & currentTime) const
inlinenoexcept

Check if a random agent has arrived at its destination.

Parameters
currentTimeThe current simulation time
Returns
True if the agent has arrived (exceeded max distance or time), false otherwise

◆ id()

Id dsf::mobility::Agent::id ( ) const
inlinenoexcept

Get the agent's id.

Returns
The agent's id

◆ incrementDistance()

void dsf::mobility::Agent::incrementDistance ( double distance)

Increment the agent's distance by a given value.

Parameters
distanceThe value to increment the agent's distance byù
Exceptions
std::invalid_argument,ifdistance is negative

◆ isRandom()

bool dsf::mobility::Agent::isRandom ( ) const
inlinenoexcept

Return true if the agent is a random agent.

Returns
True if the agent is a random agent, false otherwise

◆ itineraryId()

Id dsf::mobility::Agent::itineraryId ( ) const

Get the agent's itinerary.

Returns
The agent's itinerary
Exceptions
std::logic_errorif the agent is a random agent

◆ maxDistance()

auto dsf::mobility::Agent::maxDistance ( ) const
inline

Get the agent's maximum distance.

Returns
The agent's maximum distance, or throw std::logic_error if not set

◆ maxTime()

auto dsf::mobility::Agent::maxTime ( ) const
inline

Get the agent's maximum time.

Returns
The agent's maximum time, or throw std::logic_error if not set

◆ nextStreetId()

std::optional< Id > dsf::mobility::Agent::nextStreetId ( ) const
inlinenoexcept

Get the id of the next street.

Returns
The id of the next street

◆ reset()

void dsf::mobility::Agent::reset ( std::time_t const & spawnTime)

Reset the agent.

Reset the following values:

  • street id = std::nullopt
  • delay = 0
  • speed = 0
  • distance = 0
  • time = 0
  • itinerary index = 0

◆ setFreeTime()

void dsf::mobility::Agent::setFreeTime ( std::time_t const & freeTime)

Set the agent's free time.

Parameters
freeTimeThe agent's free time

◆ setMaxDistance()

void dsf::mobility::Agent::setMaxDistance ( double const maxDistance)
inline

Update the agent's itinerary.

If possible, the agent's itinerary is updated by removing the first element from the itinerary's vector.

◆ setMaxTime()

void dsf::mobility::Agent::setMaxTime ( std::time_t const maxTime)
inline

Set the agent's maximum time.

Parameters
maxTimeThe agent's maximum time

◆ setNextStreetId()

auto dsf::mobility::Agent::setNextStreetId ( Id nextStreetId)
inline

Set the id of the next street.

Parameters
nextStreetIdThe id of the next street

◆ setSpeed()

void dsf::mobility::Agent::setSpeed ( double speed)

Set the agent's speed.

Parameters
speed,Theagent's speed
Exceptions
std::invalid_argument,ifspeed is negative

◆ setStreetId()

void dsf::mobility::Agent::setStreetId ( std::optional< Id > streetId = std::nullopt)

Set the street occupied by the agent.

Parameters
streetIdThe id of the street currently occupied by the agent

◆ spawnTime()

std::time_t const & dsf::mobility::Agent::spawnTime ( ) const
inlinenoexcept

Get the agent's spawn time.

Returns
The agent's spawn time

◆ speed()

double dsf::mobility::Agent::speed ( ) const
inlinenoexcept

Get the agent's speed.

Returns
The agent's speed

◆ srcNodeId()

std::optional< Id > dsf::mobility::Agent::srcNodeId ( ) const
inlinenoexcept

Get the id of the source node of the agent.

Returns
The id of the source node of the agent

◆ streetId()

std::optional< Id > dsf::mobility::Agent::streetId ( ) const
inlinenoexcept

Get the id of the street currently occupied by the agent.

Returns
The id of the street currently occupied by the agent

◆ trip()

std::vector< Id > const & dsf::mobility::Agent::trip ( ) const
inlinenoexcept

Get the agent's trip.

Returns
The agent's trip

The documentation for this class was generated from the following files: