|
SUMO - Simulation of Urban MObility
|
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... | |
| void | determineCandidates (SUMOTime time) |
| Checks for all vehicles whether they can be emitted. 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 | |
| void | checkCandidates (SUMOTime time, const bool preCheck) |
| Adds all vehicles that should have been emitted earlier to the refuse container. More... | |
| void | checkFlowWait (SUMOVehicle *veh) |
| Checks whether any flow is blocked due to this vehicle and clears the block. More... | |
| MSInsertionControl (const MSInsertionControl &) | |
| Invalidated copy constructor. More... | |
| MSInsertionControl & | operator= (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::set< SUMOVehicle * > | myEmitCandidates |
| Buffer for vehicles that may be inserted in the current step. More... | |
| std::vector< Flow > | myFlows |
| Container for periodical vehicle parameters. More... | |
| SUMOTime | myMaxDepartDelay |
| The maximum waiting time; vehicles waiting longer are deleted (-1: no deletion) More... | |
| MSVehicleContainer::VehicleVector | myPendingEmits |
| Buffers for vehicles that could not be inserted. More... | |
| MSVehicleControl & | myVehicleControl |
| The assigned vehicle control (needed for vehicle re-insertion and deletion) More... | |
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.
Definition at line 67 of file MSInsertionControl.h.
| MSInsertionControl::MSInsertionControl | ( | MSVehicleControl & | vc, |
| SUMOTime | maxDepartDelay, | ||
| bool | checkEdgesOnce | ||
| ) |
Constructor.
| [in] | vc | The assigned vehicle control (needed for vehicle re-insertion and deletion) |
| [in] | maxDepartDelay | Vehicles waiting for insertion longer than this time are deleted (-1: no deletion) |
| [in] | checkEdgesOnce | Whether an edge on which a vehicle could not depart should be ignored in the same step |
Definition at line 55 of file MSInsertionControl.cpp.
| MSInsertionControl::~MSInsertionControl | ( | ) |
|
private |
Invalidated copy constructor.
| void MSInsertionControl::add | ( | SUMOVehicle * | veh | ) |
Adds a single vehicle for departure.
The vehicle is added to "myAllVeh".
| [in] | veh | The vehicle to add for later insertion |
Definition at line 70 of file MSInsertionControl.cpp.
References MSVehicleContainer::add(), and myAllVeh.
Referenced by MSRouteHandler::closeFlow(), MSRouteHandler::closeVehicle(), determineCandidates(), MSStateHandler::myStartElement(), MSPerson::MSPersonStage_Driving::proceed(), and TraCIServerAPI_Vehicle::processSet().
| void MSInsertionControl::add | ( | SUMOVehicleParameter * | pars | ) |
Adds parameter for a vehicle flow for departure.
| [in] | flow | The flow to add for later insertion |
Definition at line 76 of file MSInsertionControl.cpp.
References DEPART_LANE_RANDOM, DEPART_POS_RANDOM, SUMOVehicleParameter::departLaneProcedure, SUMOVehicleParameter::departPosProcedure, MSRoute::distDictionary(), MSNet::getInstance(), RandomDistributor< T >::getVals(), MSNet::getVehicleControl(), MSVehicleControl::hasVTypeDistribution(), MSInsertionControl::Flow::index, MSInsertionControl::Flow::isVolatile, myFlows, MSInsertionControl::Flow::pars, SUMOVehicleParameter::routeid, MSInsertionControl::Flow::vehicle, and SUMOVehicleParameter::vtypeid.
Adds all vehicles that should have been emitted earlier to the refuse container.
| [in] | time | The current simulation time |
Definition at line 179 of file MSInsertionControl.cpp.
References MSVehicleContainer::anyWaitingBefore(), DELTA_T, SUMOVehicle::getDevice(), SUMOVehicle::getEdge(), MSEdge::getLastFailedInsertionTime(), MSEdge::insertVehicle(), myAllVeh, myCheckEdgesOnce, myEmitCandidates, myPendingEmits, MSVehicleContainer::pop(), MSDevice_Routing::skipRouting(), and MSVehicleContainer::top().
Referenced by determineCandidates().
|
private |
Checks whether any flow is blocked due to this vehicle and clears the block.
| [in] | veh | The vehicle to check for |
Definition at line 168 of file MSInsertionControl.cpp.
References myFlows.
Referenced by tryInsert().
| void MSInsertionControl::clearPendingVehicles | ( | std::string & | route | ) |
clears out all pending vehicles from a route, "" for all routes
Definition at line 289 of file MSInsertionControl.cpp.
References MSVehicleControl::deleteVehicle(), myPendingEmits, and myVehicleControl.
Referenced by TraCIServerAPI_Simulation::processSet().
| void MSInsertionControl::descheduleDeparture | ( | SUMOVehicle * | veh | ) |
stops trying to emit the given vehicle
Definition at line 284 of file MSInsertionControl.cpp.
References myAbortedEmits.
Referenced by MSLane::checkFailure(), and MSLane::isInsertionSuccess().
| void MSInsertionControl::determineCandidates | ( | SUMOTime | time | ) |
Checks for all vehicles whether they can be emitted.
| [in] | time | The current simulation time |
Definition at line 204 of file MSInsertionControl.cpp.
References add(), MSVehicleControl::addVehicle(), MSVehicleControl::buildVehicle(), checkCandidates(), MSRoute::checkDist(), MSVehicleControl::deleteVehicle(), DELTA_T, SUMOVehicleParameter::depart, MSRoute::dictionary(), MSNet::getInstance(), MSRouteHandler::getParsingRNG(), MSVehicleControl::getQuota(), MSVehicleControl::getVehicle(), MSNet::getVehicleControl(), MSVehicleControl::getVType(), MSGlobals::gStateLoaded, SUMOVehicleParameter::id, MSDevice_Routing::isEnabled(), myFlows, RandHelper::rand(), SUMOVehicleParameter::repetitionEnd, SUMOVehicleParameter::repetitionNumber, SUMOVehicleParameter::repetitionOffset, SUMOVehicleParameter::repetitionProbability, SUMOVehicleParameter::repetitionsDone, SUMOVehicleParameter::routeid, toString(), TS, and SUMOVehicleParameter::vtypeid.
Referenced by MSNet::simulationStep().
| 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.
| [in] | time | The current simulation time |
Definition at line 106 of file MSInsertionControl.cpp.
References MSDevice_Routing::isEnabled(), myEmitCandidates, myPendingEmits, and tryInsert().
Referenced by MSNet::simulationStep().
| int MSInsertionControl::getPendingFlowCount | ( | ) | const |
Returns the number of flows that are still active.
Definition at line 278 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.
Definition at line 272 of file MSInsertionControl.cpp.
References myPendingEmits.
Referenced by MSNet::closeSimulation(), GUINet::getParameterWindow(), and MSNet::writeOutput().
|
private |
Invalidated assignment operator.
|
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.
| [in] | time | The current simulation time |
| [in] | veh | The vehicle to emit |
| [in] | refusedEmits | Container to insert vehicles that could not be emitted into |
Definition at line 135 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 emitVehicles().
|
private |
Set of vehicles which shall not be inserted anymore.
Definition at line 197 of file MSInsertionControl.h.
Referenced by descheduleDeparture(), and tryInsert().
|
private |
All loaded vehicles sorted by their departure time.
Definition at line 188 of file MSInsertionControl.h.
Referenced by add(), and checkCandidates().
|
private |
Whether an edge on which a vehicle could not depart should be ignored in the same step.
Definition at line 220 of file MSInsertionControl.h.
Referenced by checkCandidates(), and tryInsert().
|
private |
Buffer for vehicles that may be inserted in the current step.
Definition at line 194 of file MSInsertionControl.h.
Referenced by checkCandidates(), and emitVehicles().
|
private |
Container for periodical vehicle parameters.
Definition at line 214 of file MSInsertionControl.h.
Referenced by add(), checkFlowWait(), determineCandidates(), getPendingFlowCount(), and ~MSInsertionControl().
|
private |
The maximum waiting time; vehicles waiting longer are deleted (-1: no deletion)
Definition at line 217 of file MSInsertionControl.h.
Referenced by tryInsert().
|
private |
Buffers for vehicles that could not be inserted.
Definition at line 191 of file MSInsertionControl.h.
Referenced by checkCandidates(), clearPendingVehicles(), emitVehicles(), and getWaitingVehicleNo().
|
private |
The assigned vehicle control (needed for vehicle re-insertion and deletion)
Definition at line 185 of file MSInsertionControl.h.
Referenced by clearPendingVehicles(), and tryInsert().