Eclipse SUMO - Simulation of Urban MObility
MSContainer.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
15 // The class for modelling container-movements
16 /****************************************************************************/
17 
18 
19 // ===========================================================================
20 // included modules
21 // ===========================================================================
22 #include <config.h>
23 
24 #include <string>
25 #include <vector>
28 #include <utils/common/ToString.h>
29 #include <utils/geom/GeomHelper.h>
30 #include "MSNet.h"
31 #include "MSEdge.h"
32 #include "MSLane.h"
33 #include "MSContainer.h"
35 #include "MSTransportableControl.h"
36 #include "MSInsertionControl.h"
37 #include "MSVehicle.h"
38 #include "MSVehicleControl.h"
40 
41 // ===========================================================================
42 // method definitions
43 // ===========================================================================
44 /* -------------------------------------------------------------------------
45  * MSContainer::MSContainerStage_Driving - methods
46  * ----------------------------------------------------------------------- */
48  MSStoppingPlace* toStop, const double arrivalPos, const std::vector<std::string>& lines) :
49  MSTransportable::Stage_Driving(destination, toStop,
50  SUMOVehicleParameter::interpretEdgePos(
51  arrivalPos, destination->getLength(), SUMO_ATTR_ARRIVALPOS, "container getting transported to " + destination->getID()),
52  lines) {
53 }
54 
55 
57 
60  return new MSContainerStage_Driving(myDestination, myDestinationStop, myArrivalPos, std::vector<std::string>(myLines.begin(), myLines.end()));
61 }
62 
63 void
65  if (previous->getDestinationStop() != nullptr) {
66  // the arrival stop may have an access point
67  myWaitingEdge = &previous->getDestinationStop()->getLane().getEdge();
68  } else {
69  myWaitingEdge = previous->getEdge();
70  }
71  myWaitingPos = previous->getEdgePos(now);
72  myWaitingSince = now;
73  SUMOVehicle* availableVehicle = myWaitingEdge->getWaitingVehicle(container, myWaitingPos);
74  if (availableVehicle != nullptr && availableVehicle->getParameter().departProcedure == DEPART_CONTAINER_TRIGGERED && !availableVehicle->hasDeparted()) {
75  setVehicle(availableVehicle);
76  myVehicle->addContainer(container);
77  net->getInsertionControl().add(myVehicle);
78  myWaitingEdge->removeWaiting(myVehicle);
80  } else {
81  net->getContainerControl().addWaiting(myWaitingEdge, container);
82  myWaitingEdge->addContainer(container);
83  }
84 }
85 
86 
87 std::string
89  return isWaiting4Vehicle() ? "waiting for " + joinToString(myLines, ",") : "transport";
90 }
91 
92 
93 std::string
95  const std::string dest = (getDestinationStop() == nullptr ?
96  " edge '" + getDestination()->getID() + "'" :
97  " stop '" + getDestinationStop()->getID() + "'");
98  return isWaiting4Vehicle() ?
99  "waiting for " + joinToString(myLines, ",") + " then transported to " + dest :
100  "transported to " + dest;
101 }
102 
103 
104 
105 void
108  const SUMOTime departed = myDeparted >= 0 ? myDeparted : now;
109  os.openTag("transport");
110  os.writeAttr("waitingTime", time2string(departed - myWaitingSince));
111  os.writeAttr("vehicle", myVehicleID);
112  os.writeAttr("depart", myDeparted >= 0 ? time2string(myDeparted) : "-1");
113  os.writeAttr("arrival", myArrived >= 0 ? time2string(myArrived) : "-1");
114  os.writeAttr("arrivalPos", toString(myArrivalPos));
115  os.writeAttr("duration", myArrived >= 0 ? time2string(myArrived - myDeparted) :
116  (myDeparted >= 0 ? time2string(now - myDeparted) : "-1"));
117  os.writeAttr("routeLength", myVehicleDistance);
118  os.closeTag();
119 }
120 
121 
122 void
123 MSContainer::MSContainerStage_Driving::routeOutput(OutputDevice& os, const bool withRouteLength) const {
125  os.writeAttr(SUMO_ATTR_LINES, myLines).closeTag();
126  if (withRouteLength) {
127  os.writeAttr("routeLength", myVehicleDistance);
128  }
129 }
130 
131 
132 
133 /* -------------------------------------------------------------------------
134  * MSContainer::MSContainerStage_Tranship - methods
135  * ----------------------------------------------------------------------- */
137  MSStoppingPlace* toStop,
138  double speed,
139  double departPos, double arrivalPos) :
140  MSTransportable::Stage(route.back(), toStop, SUMOVehicleParameter::interpretEdgePos(
141  arrivalPos, route.back()->getLength(), SUMO_ATTR_ARRIVALPOS,
142  "container getting transhipped to " + route.back()->getID()),
143  MOVING_WITHOUT_VEHICLE), myRoute(route),
144  mySpeed(speed), myContainerState(nullptr), myCurrentInternalEdge(nullptr) {
146  departPos, myRoute.front()->getLength(), SUMO_ATTR_DEPARTPOS,
147  "container getting transhipped from " + myRoute.front()->getID());
148 }
149 
151 }
152 
155  return new MSContainerStage_Tranship(myRoute, myDestinationStop, mySpeed, myDepartPos, myArrivalPos);
156 }
157 
158 void
160  myDeparted = now;
161  //MSCModel_NonInteracting moves the container straight from start to end in
162  //a single step and assumes that moveToNextEdge is only called once)
163  //therefor we define that the container is already on its destination edge
164  myRouteStep = myRoute.end() - 1;
165  myDepartPos = previous->getEdgePos(now);
166  myContainerState = MSCModel_NonInteracting::getModel()->add(container, this, now);
167  (*myRouteStep)->addContainer(container);
168 }
169 
170 const MSEdge*
172  if (myCurrentInternalEdge != nullptr) {
173  return myCurrentInternalEdge;
174  } else {
175  return *myRouteStep;
176  }
177 }
178 
179 const MSEdge*
181  return myRoute.front();
182 }
183 
184 const MSEdge*
186  return myRoute.back();
187 }
188 
189 double
191  return myContainerState->getEdgePos(*this, now);
192 }
193 
194 Position
196  return myContainerState->getPosition(*this, now);
197 }
198 
199 double
201  return myContainerState->getAngle(*this, now);
202 }
203 
204 SUMOTime
206  return 0;
207 }
208 
209 double
211  return myContainerState->getSpeed(*this);
212 }
213 
214 
217  return myRoute;
218 }
219 
220 double
222  if (myArrived >= 0) {
223  const SUMOTime duration = myArrived - myDeparted;
224  return mySpeed * STEPS2TIME(duration);
225  } else {
226  return -1;
227  }
228 }
229 
230 void
232  os.openTag("tranship");
233  os.writeAttr("depart", time2string(myDeparted));
234  os.writeAttr("departPos", myDepartPos);
235  os.writeAttr("arrival", time2string(myArrived));
236  os.writeAttr("arrivalPos", myArrivalPos);
237  os.writeAttr("duration", myArrived >= 0 ? time2string(myArrived - myDeparted) : "-1");
238  os.writeAttr("routeLength", getDistance());
239  os.writeAttr("maxSpeed", mySpeed);
240  os.closeTag();
241 }
242 
243 
244 void
246  os.openTag("tranship").writeAttr(SUMO_ATTR_EDGES, myRoute);
247  os.writeAttr(SUMO_ATTR_SPEED, mySpeed);
248  if (withRouteLength) {
249  os.writeAttr("routeLength", mySpeed * (myArrived - myDeparted));
250  }
251  os.closeTag();
252 }
253 
254 
255 void
257  os.openTag("event").writeAttr("time", time2string(t)).writeAttr("type", "departure")
258  .writeAttr("agent", c.getID()).writeAttr("link", myRoute.front()->getID()).closeTag();
259 }
260 
261 
262 void
264  os.openTag("event").writeAttr("time", time2string(t)).writeAttr("type", "arrival")
265  .writeAttr("agent", c.getID()).writeAttr("link", myRoute.back()->getID()).closeTag();
266 }
267 
268 bool
270  ((MSEdge*)getEdge())->removeContainer(container);
271  if (myRouteStep == myRoute.end() - 1) {
272  if (myDestinationStop != nullptr) {
273  myDestinationStop->addTransportable(container); //jakob
274  }
275  if (!container->proceed(MSNet::getInstance(), currentTime)) {
277  }
278  return true;
279  } else {
280  if (nextInternal == nullptr) {
281  ++myRouteStep;
282  myCurrentInternalEdge = nullptr;
283  } else {
284  myCurrentInternalEdge = nextInternal;
285  }
286  ((MSEdge*) getEdge())->addContainer(container);
287  return false;
288  }
289 }
290 
291 std::string
293  const std::string dest = (getDestinationStop() == nullptr ?
294  " edge '" + getDestination()->getID() + "'" :
295  " stop '" + getDestinationStop()->getID() + "'");
296  return "transhipped to " + dest;
297 }
298 
299 /* -------------------------------------------------------------------------
300  * MSContainer - methods
301  * ----------------------------------------------------------------------- */
303  : MSTransportable(pars, vtype, plan) {
304 }
305 
306 
308 }
309 
310 
311 bool
313  Stage* prior = *myStep;
314  prior->setArrived(net, this, time);
315  // must be done before increasing myStep to avoid invalid state for rendering
316  prior->getEdge()->removeContainer(this);
317  myStep++;
318  if (myStep != myPlan->end()) {
319  (*myStep)->proceed(net, this, time, prior);
320  return true;
321  } else {
322  // cleanup
323  if (prior->getDestinationStop() != nullptr) {
324  prior->getDestinationStop()->removeTransportable(this);
325  }
326  return false;
327  }
328 }
329 
330 
331 void
333  os.openTag("containerinfo").writeAttr("id", getID()).writeAttr("depart", time2string(getDesiredDepart()));
334  for (MSTransportablePlan::const_iterator i = myPlan->begin(); i != myPlan->end(); ++i) {
335  (*i)->tripInfoOutput(os, this);
336  }
337  os.closeTag();
338 }
339 
340 
341 void
342 MSContainer::routeOutput(OutputDevice& os, const bool withRouteLength) const {
344  if (myStep == myPlan->end()) {
345  os.writeAttr("arrival", time2string(MSNet::getInstance()->getCurrentTimeStep()));
346  }
347  for (MSTransportablePlan::const_iterator i = myPlan->begin(); i != myPlan->end(); ++i) {
348  (*i)->routeOutput(os, withRouteLength);
349  }
350  os.closeTag();
351  os.lf();
352 }
353 
354 
355 /****************************************************************************/
MSVehicleType
The car-following model and parameter.
Definition: MSVehicleType.h:65
MSStoppingPlace::getLane
const MSLane & getLane() const
Returns the lane this stop is located at.
Definition: MSStoppingPlace.cpp:57
MSContainer::MSContainerStage_Tranship::getWaitingTime
SUMOTime getWaitingTime(SUMOTime now) const
Returns the time the container spent waiting.
Definition: MSContainer.cpp:205
MSContainer::MSContainerStage_Driving::clone
Stage * clone() const
Definition: MSContainer.cpp:59
MSContainer::MSContainerStage_Driving::routeOutput
virtual void routeOutput(OutputDevice &os, const bool withRouteLength) const
Called on writing vehroute output.
Definition: MSContainer.cpp:123
ToString.h
SUMO_ATTR_DEPART
Definition: SUMOXMLDefinitions.h:431
MSStoppingPlace
A lane area vehicles can halt at.
Definition: MSStoppingPlace.h:59
MSTransportable::getDestination
const MSEdge * getDestination() const
Returns the current destination.
Definition: MSTransportable.h:617
MSNet.h
MSContainer::proceed
virtual bool proceed(MSNet *net, SUMOTime time)
Definition: MSContainer.cpp:312
SUMOVehicle::getParameter
virtual const SUMOVehicleParameter & getParameter() const =0
Returns the vehicle's parameter (including departure definition)
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:63
OptionsCont.h
MSTransportable::Stage_Driving
Definition: MSTransportable.h:435
MSCModel_NonInteracting.h
MSNet::getContainerControl
virtual MSTransportableControl & getContainerControl()
Returns the container control.
Definition: MSNet.cpp:818
MSTransportableControl::erase
virtual void erase(MSTransportable *transportable)
removes a single transportable
Definition: MSTransportableControl.cpp:85
MSNet
The simulated network and simulation perfomer.
Definition: MSNet.h:91
MSNet::getInsertionControl
MSInsertionControl & getInsertionControl()
Returns the insertion control.
Definition: MSNet.h:389
MSTransportable::Stage
Definition: MSTransportable.h:73
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:34
SUMOVehicle
Representation of a vehicle.
Definition: SUMOVehicle.h:60
SUMO_ATTR_LINES
Definition: SUMOXMLDefinitions.h:776
ConstMSEdgeVector
std::vector< const MSEdge * > ConstMSEdgeVector
Definition: MSEdge.h:75
MSContainer::MSContainer
MSContainer(const SUMOVehicleParameter *pars, MSVehicleType *vtype, MSTransportablePlan *plan)
constructor
Definition: MSContainer.cpp:302
SUMOVehicleParameter::departProcedure
DepartDefinition departProcedure
Information how the vehicle shall choose the depart time.
Definition: SUMOVehicleParameter.h:485
MSStoppingPlace::removeTransportable
void removeTransportable(MSTransportable *p)
Removes a transportable from this stop.
Definition: MSStoppingPlace.cpp:198
SUMO_ATTR_SPEED
Definition: SUMOXMLDefinitions.h:384
SUMO_ATTR_ARRIVALPOS
Definition: SUMOXMLDefinitions.h:437
SUMO_ATTR_ID
Definition: SUMOXMLDefinitions.h:378
MSTransportable::Stage::setArrived
virtual void setArrived(MSNet *net, MSTransportable *transportable, SUMOTime now)
logs end of the step
Definition: MSTransportable.cpp:113
MSTransportable::Stage::getEdgePos
virtual double getEdgePos(SUMOTime now) const
Definition: MSTransportable.cpp:75
SUMOVehicleParameter
Structure representing possible vehicle parameter.
Definition: SUMOVehicleParameter.h:297
MSEdge.h
MSContainer::MSContainerStage_Tranship::getSpeed
double getSpeed() const
Returns the speed of the container.
Definition: MSContainer.cpp:210
MSTransportable
Definition: MSTransportable.h:58
MSInsertionControl.h
MSTransportable::proceed
virtual bool proceed(MSNet *net, SUMOTime time)=0
SUMO_TAG_CONTAINER
Definition: SUMOXMLDefinitions.h:316
MSContainer::MSContainerStage_Driving::tripInfoOutput
virtual void tripInfoOutput(OutputDevice &os, const MSTransportable *const transportable) const
Called on writing tripinfo output.
Definition: MSContainer.cpp:106
MSVehicle.h
OutputDevice::closeTag
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
Definition: OutputDevice.cpp:253
MSContainer::~MSContainer
virtual ~MSContainer()
destructor
Definition: MSContainer.cpp:307
MSTransportable::Stage::getEdge
virtual const MSEdge * getEdge() const
Returns the current edge.
Definition: MSTransportable.cpp:63
SUMO_ATTR_TO
Definition: SUMOXMLDefinitions.h:640
MSContainer::MSContainerStage_Tranship::myRoute
std::vector< const MSEdge * > myRoute
The route of the container.
Definition: MSContainer.h:209
MSContainer::MSContainerStage_Tranship::proceed
virtual void proceed(MSNet *net, MSTransportable *container, SUMOTime now, Stage *previous)
proceeds to the next step
Definition: MSContainer.cpp:159
OutputDevice::writeAttr
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
Definition: OutputDevice.h:255
MSTransportable::getEdge
const MSEdge * getEdge() const
Returns the current edge.
Definition: MSTransportable.h:627
MSContainer::MSContainerStage_Tranship::MSContainerStage_Tranship
MSContainerStage_Tranship(const std::vector< const MSEdge * > &route, MSStoppingPlace *toStop, double speed, double departPos, double arrivalPos)
constructor
Definition: MSContainer.cpp:136
MSTransportableControl.h
MSContainer::routeOutput
virtual void routeOutput(OutputDevice &os, const bool withRouteLength) const
Called on writing vehroute output.
Definition: MSContainer.cpp:342
MSContainer::MSContainerStage_Tranship::getFromEdge
const MSEdge * getFromEdge() const
Returns first edge of the containers route.
Definition: MSContainer.cpp:180
MSContainer::MSContainerStage_Driving::~MSContainerStage_Driving
~MSContainerStage_Driving()
destructor
Definition: MSContainer.cpp:56
MSCModel_NonInteracting::add
CState * add(MSTransportable *container, MSContainer::MSContainerStage_Tranship *stage, SUMOTime now)
register the given container as a transhiped container
Definition: MSCModel_NonInteracting.cpp:70
MSNet::getCurrentTimeStep
SUMOTime getCurrentTimeStep() const
Returns the current simulation step.
Definition: MSNet.h:283
STEPS2TIME
#define STEPS2TIME(x)
Definition: SUMOTime.h:56
SUMO_ATTR_EDGES
the edges of a route
Definition: SUMOXMLDefinitions.h:427
OutputDevice.h
MSContainer::MSContainerStage_Tranship::moveToNextEdge
bool moveToNextEdge(MSTransportable *container, SUMOTime currentTime, MSEdge *nextInternal=0)
move forward and return whether the container arrived
Definition: MSContainer.cpp:269
MSContainer::MSContainerStage_Driving::proceed
virtual void proceed(MSNet *net, MSTransportable *container, SUMOTime now, Stage *previous)
proceeds to the next step
Definition: MSContainer.cpp:64
MSContainer::tripInfoOutput
virtual void tripInfoOutput(OutputDevice &os) const
Called on writing tripinfo output.
Definition: MSContainer.cpp:332
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:38
time2string
std::string time2string(SUMOTime t)
Definition: SUMOTime.cpp:67
MSTransportable::isWaiting4Vehicle
bool isWaiting4Vehicle() const
Whether the transportable waits for a vehicle.
Definition: MSTransportable.h:721
MSContainer::MSContainerStage_Driving::getStageDescription
std::string getStageDescription() const
returns the stage description as a string
Definition: MSContainer.cpp:88
MSEdge
A road/street connecting two junctions.
Definition: MSEdge.h:78
MSInsertionControl::add
void add(SUMOVehicle *veh)
Adds a single vehicle for departure.
Definition: MSInsertionControl.cpp:70
MSContainer::MSContainerStage_Driving
Definition: MSContainer.h:69
MSContainer.h
MSEdge::removeContainer
virtual void removeContainer(MSTransportable *container) const
Remove container from myContainers.
Definition: MSEdge.h:633
MSContainer::MSContainerStage_Tranship::~MSContainerStage_Tranship
~MSContainerStage_Tranship()
destructor
Definition: MSContainer.cpp:150
SUMO_ATTR_FROM
Definition: SUMOXMLDefinitions.h:639
MSLane::getEdge
MSEdge & getEdge() const
Returns the lane's edge.
Definition: MSLane.h:669
MSContainer::MSContainerStage_Tranship::tripInfoOutput
virtual void tripInfoOutput(OutputDevice &os, const MSTransportable *const transportable) const
Called on writing tripinfo output.
Definition: MSContainer.cpp:231
MSContainer::MSContainerStage_Tranship::clone
Stage * clone() const
Definition: MSContainer.cpp:154
OutputDevice::openTag
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
Definition: OutputDevice.cpp:239
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:47
MSContainer::MSContainerStage_Tranship::myDepartPos
double myDepartPos
the depart position
Definition: MSContainer.h:215
MSContainer::MSContainerStage_Tranship::getEdges
ConstMSEdgeVector getEdges() const
the edges of the current stage
Definition: MSContainer.cpp:216
MSTransportable::MSTransportablePlan
std::vector< MSTransportable::Stage * > MSTransportablePlan
the structure holding the plan of a transportable
Definition: MSTransportable.h:587
MSNet::getInstance
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
Definition: MSNet.cpp:167
SUMOVehicle::hasDeparted
virtual bool hasDeparted() const =0
Returns whether this vehicle has departed.
MSTransportableControl::addWaiting
void addWaiting(const MSEdge *edge, MSTransportable *person)
adds a transportable to the list of transportables waiting for a vehicle on the specified edge
Definition: MSTransportableControl.cpp:145
MSContainer::MSContainerStage_Tranship::routeOutput
virtual void routeOutput(OutputDevice &os, const bool withRouteLength) const
Called on writing vehroute output.
Definition: MSContainer.cpp:245
MSTransportable::getDesiredDepart
SUMOTime getDesiredDepart() const
Returns the desired departure time.
Definition: MSTransportable.cpp:704
OutputDevice::lf
void lf()
writes a line feed if applicable
Definition: OutputDevice.h:233
MSTransportable::getID
const std::string & getID() const
returns the id of the transportable
Definition: MSTransportable.cpp:699
joinToString
std::string joinToString(const std::vector< T > &v, const T_BETWEEN &between, std::streamsize accuracy=gPrecision)
Definition: ToString.h:246
MSContainer::MSContainerStage_Tranship::getEdgePos
double getEdgePos(SUMOTime now) const
Returns the offset from the start of the current edge measured in its natural direction.
Definition: MSContainer.cpp:190
MSContainer::MSContainerStage_Tranship::getDistance
double getDistance() const
get travel distance in this stage
Definition: MSContainer.cpp:221
config.h
MSContainer::MSContainerStage_Tranship::getStageSummary
std::string getStageSummary() const
return string summary of the current stage
Definition: MSContainer.cpp:292
MSTransportable::myStep
MSTransportablePlan::iterator myStep
the iterator over the route
Definition: MSTransportable.h:810
GeomHelper.h
MSTransportable::MOVING_WITHOUT_VEHICLE
Definition: MSTransportable.h:63
MSTransportable::Stage::getDestinationStop
MSStoppingPlace * getDestinationStop() const
returns the destination stop (if any)
Definition: MSTransportable.h:85
MSTransportable::myPlan
MSTransportablePlan * myPlan
the plan of the transportable
Definition: MSTransportable.h:807
SUMO_ATTR_DEPARTPOS
Definition: SUMOXMLDefinitions.h:433
MSContainer::MSContainerStage_Tranship
Definition: MSContainer.h:107
MSContainer::MSContainerStage_Tranship::getAngle
double getAngle(SUMOTime now) const
Returns the angle of the container.
Definition: MSContainer.cpp:200
MSTransportable::getFromEdge
const MSEdge * getFromEdge() const
Returns the departure edge.
Definition: MSTransportable.h:632
MSLane.h
MSContainer::MSContainerStage_Tranship::beginEventOutput
virtual void beginEventOutput(const MSTransportable &c, SUMOTime t, OutputDevice &os) const
Called for writing the events output.
Definition: MSContainer.cpp:256
DEPART_CONTAINER_TRIGGERED
The departure is container triggered.
Definition: SUMOVehicleParameter.h:104
MSContainer::MSContainerStage_Tranship::getToEdge
const MSEdge * getToEdge() const
Returns last edge of the containers route.
Definition: MSContainer.cpp:185
MSStoppingPlace.h
MSVehicleControl.h
Named::getID
const std::string & getID() const
Returns the id.
Definition: Named.h:76
MSContainer::MSContainerStage_Driving::MSContainerStage_Driving
MSContainerStage_Driving(const MSEdge *destination, MSStoppingPlace *toStop, const double arrivalPos, const std::vector< std::string > &lines)
constructor
Definition: MSContainer.cpp:47
SUMOVehicleParameter::interpretEdgePos
static double interpretEdgePos(double pos, double maximumValue, SumoXMLAttr attr, const std::string &id)
Interprets negative edge positions and fits them onto a given edge.
Definition: SUMOVehicleParameter.cpp:537
MSNet::getVehicleControl
MSVehicleControl & getVehicleControl()
Returns the vehicle control.
Definition: MSNet.h:336
MSCModel_NonInteracting::getModel
static MSCModel_NonInteracting * getModel()
Definition: MSCModel_NonInteracting.cpp:61
MSContainer::MSContainerStage_Driving::getStageSummary
std::string getStageSummary() const
return string summary of the current stage
Definition: MSContainer.cpp:94
MSVehicleControl::unregisterOneWaiting
void unregisterOneWaiting(const bool isPerson)
decreases the count of vehicles waiting for a transport to allow recognition of person / container re...
Definition: MSVehicleControl.h:426
MSContainer::MSContainerStage_Tranship::getPosition
Position getPosition(SUMOTime now) const
Returns the position of the container.
Definition: MSContainer.cpp:195
MSContainer::MSContainerStage_Tranship::endEventOutput
virtual void endEventOutput(const MSTransportable &c, SUMOTime t, OutputDevice &os) const
Called for writing the events output (end of an action)
Definition: MSContainer.cpp:263
MSContainer::MSContainerStage_Tranship::getEdge
const MSEdge * getEdge() const
Returns the current edge.
Definition: MSContainer.cpp:171