SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MSInsertionControl Class Reference

Inserts vehicles into the network when their departure time is reached. More...

#include <MSInsertionControl.h>

Data Structures

struct  Flow
 

Public Member Functions

void add (SUMOVehicle *veh)
 Adds a single vehicle for departure. More...
 
void add (SUMOVehicleParameter *pars)
 Adds parameter for a vehicle flow for departure. More...
 
void clearPendingVehicles (std::string &route)
 clears out all pending vehicles from a route, "" for all routes More...
 
void descheduleDeparture (SUMOVehicle *veh)
 stops trying to emit the given vehicle More...
 
unsigned int emitVehicles (SUMOTime time)
 Emits vehicles that want to depart at the given time. More...
 
int getPendingFlowCount () const
 Returns the number of flows that are still active. More...
 
unsigned int getWaitingVehicleNo () const
 Returns the number of waiting vehicles. More...
 
 MSInsertionControl (MSVehicleControl &vc, SUMOTime maxDepartDelay, bool checkEdgesOnce)
 Constructor. More...
 
 ~MSInsertionControl ()
 Destructor. More...
 

Private Member Functions

unsigned int checkFlows (SUMOTime time, MSVehicleContainer::VehicleVector &refusedEmits)
 Checks for all vehicles coming from flows whether they can be emitted. More...
 
void checkFlowWait (SUMOVehicle *veh)
 Checks whether any flow is blocked due to this vehicle and clears the block. More...
 
void checkPrevious (SUMOTime time)
 Adds all vehicles that should have been emitted earlier to the refuse container. More...
 
 MSInsertionControl (const MSInsertionControl &)
 Invalidated copy constructor. More...
 
MSInsertionControloperator= (const MSInsertionControl &)
 Invalidated assignment operator. More...
 
unsigned int tryInsert (SUMOTime time, SUMOVehicle *veh, MSVehicleContainer::VehicleVector &refusedEmits)
 Tries to emit the vehicle. More...
 

Private Attributes

std::set< SUMOVehicle * > myAbortedEmits
 Set of vehicles which shall not be inserted anymore. More...
 
MSVehicleContainer myAllVeh
 All loaded vehicles sorted by their departure time. More...
 
bool myCheckEdgesOnce
 Whether an edge on which a vehicle could not depart should be ignored in the same step. More...
 
std::vector< FlowmyFlows
 Container for periodical vehicle parameters. More...
 
SUMOTime myMaxDepartDelay
 The maximum waiting time; vehicles waiting longer are deleted (-1: no deletion) More...
 
MSVehicleContainer::VehicleVector myRefusedEmits1
 Buffers for vehicles that could not be inserted. More...
 
MSVehicleContainer::VehicleVector myRefusedEmits2
 
MSVehicleControlmyVehicleControl
 The assigned vehicle control (needed for vehicle re-insertion and deletion) More...
 

Detailed Description

Inserts vehicles into the network when their departure time is reached.

Holds a list of vehicles which may be filled by vehicles read by SUMORouteLoaders. Tries to emit vehicles departing at a time into the network as soon this time is reached and keeps them as long the insertion fails.

If a vehicle is emitted, the control about it is given to the lanes.

Vehicles are not controlled (created, deleted) by this class.

Todo:
Whe a vehicle is deleted due to waiting too long or because of vaporizing, ths is not reported anywhere

Definition at line 66 of file MSInsertionControl.h.

Constructor & Destructor Documentation

MSInsertionControl::MSInsertionControl ( MSVehicleControl vc,
SUMOTime  maxDepartDelay,
bool  checkEdgesOnce 
)

Constructor.

Parameters
[in]vcThe assigned vehicle control (needed for vehicle re-insertion and deletion)
[in]maxDepartDelayVehicles waiting for insertion longer than this time are deleted (-1: no deletion)
[in]checkEdgesOnceWhether an edge on which a vehicle could not depart should be ignored in the same step

Definition at line 51 of file MSInsertionControl.cpp.

MSInsertionControl::~MSInsertionControl ( )

Destructor.

Definition at line 58 of file MSInsertionControl.cpp.

References myFlows.

MSInsertionControl::MSInsertionControl ( const MSInsertionControl )
private

Invalidated copy constructor.

Member Function Documentation

void MSInsertionControl::add ( SUMOVehicle veh)

Adds a single vehicle for departure.

The vehicle is added to "myAllVeh".

Parameters
[in]vehThe vehicle to add for later insertion

Definition at line 66 of file MSInsertionControl.cpp.

References MSVehicleContainer::add(), and myAllVeh.

Referenced by MSRouteHandler::closeFlow(), MSRouteHandler::closeVehicle(), MSStateHandler::myStartElement(), MSPerson::MSPersonStage_Driving::proceed(), and TraCIServerAPI_Vehicle::processSet().

void MSInsertionControl::checkFlowWait ( SUMOVehicle veh)
private

Checks whether any flow is blocked due to this vehicle and clears the block.

Parameters
[in]vehThe vehicle to check for

Definition at line 179 of file MSInsertionControl.cpp.

References myFlows.

Referenced by tryInsert().

void MSInsertionControl::checkPrevious ( SUMOTime  time)
private

Adds all vehicles that should have been emitted earlier to the refuse container.

Parameters
[in]timeThe current simulation time
Todo:
recheck

Definition at line 190 of file MSInsertionControl.cpp.

References MSVehicleContainer::isEmpty(), myAllVeh, myRefusedEmits1, myRefusedEmits2, MSVehicleContainer::pop(), MSVehicleContainer::top(), and MSVehicleContainer::topTime().

Referenced by emitVehicles().

void MSInsertionControl::clearPendingVehicles ( std::string &  route)

clears out all pending vehicles from a route, "" for all routes

Definition at line 272 of file MSInsertionControl.cpp.

References MSVehicleControl::deleteVehicle(), myRefusedEmits1, myRefusedEmits2, and myVehicleControl.

Referenced by TraCIServerAPI_Simulation::processSet().

void MSInsertionControl::descheduleDeparture ( SUMOVehicle veh)

stops trying to emit the given vehicle

Definition at line 267 of file MSInsertionControl.cpp.

References myAbortedEmits.

Referenced by MSLane::checkFailure(), and MSLane::isInsertionSuccess().

unsigned int MSInsertionControl::emitVehicles ( SUMOTime  time)

Emits vehicles that want to depart at the given time.

All vehicles scheduled for this time are tried to be emitted. This includes those with a depart time as the given time and those that wait for being emitted due they could not be inserted in previous steps.

For each vehicle, tryInsert is called. If this fails, a vehicle keeps within the refused emit containers ("myRefusedEmits1", "myRefusedEmits2") so that it may be emitted within the next steps.

Returns the number of vehicles that could be inserted into the net.

Parameters
[in]timeThe current simulation time
Returns
The number of vehicles that could be inserted into the net

Definition at line 101 of file MSInsertionControl.cpp.

References MSVehicleContainer::anyWaitingFor(), checkFlows(), checkPrevious(), myAllVeh, myFlows, myRefusedEmits1, myRefusedEmits2, MSVehicleContainer::pop(), MSVehicleContainer::top(), and tryInsert().

Referenced by MSNet::simulationStep().

int MSInsertionControl::getPendingFlowCount ( ) const

Returns the number of flows that are still active.

Returns
number of active flows

Definition at line 261 of file MSInsertionControl.cpp.

References myFlows.

Referenced by MSNet::simulationState().

unsigned int MSInsertionControl::getWaitingVehicleNo ( ) const

Returns the number of waiting vehicles.

The sizes of refused emits (sum of vehicles in "myRefusedEmits1" and "myRefusedEmits2") is returned.

Returns
The number of vehicles that could not (yet) be inserted into the net

Definition at line 255 of file MSInsertionControl.cpp.

References myRefusedEmits1, and myRefusedEmits2.

Referenced by MSNet::closeSimulation(), GUINet::getParameterWindow(), and MSNet::writeOutput().

MSInsertionControl& MSInsertionControl::operator= ( const MSInsertionControl )
private

Invalidated assignment operator.

unsigned int MSInsertionControl::tryInsert ( SUMOTime  time,
SUMOVehicle veh,
MSVehicleContainer::VehicleVector refusedEmits 
)
private

Tries to emit the vehicle.

If the insertion fails, it is examined whether the reason was a vaporizing edge. If so, the vehicle is deleted. Otherwise, it is checked whether the time the vehicle had to wait so far is larger than the maximum allowed waiting time. If so, the vehicle is deleted, too. If both does not match, the vehicle is reinserted to "refusedEmits" in order to be emitted in next steps.

Parameters
[in]timeThe current simulation time
[in]vehThe vehicle to emit
[in]refusedEmitsContainer to insert vehicles that could not be emitted into
Returns
The number of emitted vehicles (0 or 1)

Definition at line 146 of file MSInsertionControl.cpp.

References checkFlowWait(), MSVehicleControl::deleteVehicle(), DELTA_T, SUMOVehicleParameter::depart, SUMOVehicle::getEdge(), SUMOVehicle::getParameter(), myAbortedEmits, myCheckEdgesOnce, myMaxDepartDelay, myVehicleControl, and SUMOVehicle::onDepart().

Referenced by checkFlows(), and emitVehicles().

Field Documentation

std::set<SUMOVehicle*> MSInsertionControl::myAbortedEmits
private

Set of vehicles which shall not be inserted anymore.

Definition at line 196 of file MSInsertionControl.h.

Referenced by descheduleDeparture(), and tryInsert().

MSVehicleContainer MSInsertionControl::myAllVeh
private

All loaded vehicles sorted by their departure time.

Definition at line 190 of file MSInsertionControl.h.

Referenced by add(), checkPrevious(), and emitVehicles().

bool MSInsertionControl::myCheckEdgesOnce
private

Whether an edge on which a vehicle could not depart should be ignored in the same step.

Definition at line 217 of file MSInsertionControl.h.

Referenced by tryInsert().

std::vector<Flow> MSInsertionControl::myFlows
private

Container for periodical vehicle parameters.

Definition at line 211 of file MSInsertionControl.h.

Referenced by add(), checkFlows(), checkFlowWait(), emitVehicles(), getPendingFlowCount(), and ~MSInsertionControl().

SUMOTime MSInsertionControl::myMaxDepartDelay
private

The maximum waiting time; vehicles waiting longer are deleted (-1: no deletion)

Definition at line 214 of file MSInsertionControl.h.

Referenced by tryInsert().

MSVehicleContainer::VehicleVector MSInsertionControl::myRefusedEmits1
private

Buffers for vehicles that could not be inserted.

Definition at line 193 of file MSInsertionControl.h.

Referenced by checkPrevious(), clearPendingVehicles(), emitVehicles(), and getWaitingVehicleNo().

MSVehicleContainer::VehicleVector MSInsertionControl::myRefusedEmits2
private
MSVehicleControl& MSInsertionControl::myVehicleControl
private

The assigned vehicle control (needed for vehicle re-insertion and deletion)

Definition at line 187 of file MSInsertionControl.h.

Referenced by clearPendingVehicles(), and tryInsert().


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