Eclipse SUMO - Simulation of Urban MObility
MSContainer.h
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 #ifndef MSContainer_h
18 #define MSContainer_h
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include <config.h>
24 
25 #include <string>
26 #include <vector>
27 #include <set>
28 #include <utils/common/SUMOTime.h>
29 #include <utils/common/Command.h>
30 #include <utils/geom/Position.h>
33 
34 
35 // ===========================================================================
36 // class declarations
37 // ===========================================================================
38 class MSNet;
39 class MSEdge;
40 class MSLane;
41 class OutputDevice;
43 class MSStoppingPlace;
44 class SUMOVehicle;
45 class MSVehicleType;
47 class CState;
48 
49 
50 // ===========================================================================
51 // class definitions
52 // ===========================================================================
60 class MSContainer : public MSTransportable {
61 public:
62 
63 
70  public:
72  MSContainerStage_Driving(const MSEdge* destination, MSStoppingPlace* toStop,
73  const double arrivalPos, const std::vector<std::string>& lines);
74 
77 
78  Stage* clone() const;
79 
81  virtual void proceed(MSNet* net, MSTransportable* container, SUMOTime now, Stage* previous);
82 
84  std::string getStageDescription() const;
85  std::string getStageSummary() const;
86 
92  virtual void tripInfoOutput(OutputDevice& os, const MSTransportable* const transportable) const;
93 
99  virtual void routeOutput(OutputDevice& os, const bool withRouteLength) const;
100  };
101 
109 
110  public:
112  MSContainerStage_Tranship(const std::vector<const MSEdge*>& route, MSStoppingPlace* toStop, double speed, double departPos, double arrivalPos);
113 
116 
117  Stage* clone() const;
118 
120  virtual void proceed(MSNet* net, MSTransportable* container, SUMOTime now, Stage* previous);
121 
123  const MSEdge* getEdge() const;
124 
126  const MSEdge* getFromEdge() const;
127 
129  const MSEdge* getToEdge() const;
130 
132  double getEdgePos(SUMOTime now) const;
133 
135  Position getPosition(SUMOTime now) const;
136 
138  double getAngle(SUMOTime now) const;
139 
141  double getDistance() const;
142 
144  SUMOTime getWaitingTime(SUMOTime now) const;
145 
147  double getSpeed() const;
148 
150  ConstMSEdgeVector getEdges() const;
151 
153  std::string getStageDescription() const {
154  return "tranship";
155  }
156  std::string getStageSummary() const;
157 
162  virtual void tripInfoOutput(OutputDevice& os, const MSTransportable* const transportable) const;
163 
168  virtual void routeOutput(OutputDevice& os, const bool withRouteLength) const;
169 
174  virtual void beginEventOutput(const MSTransportable& c, SUMOTime t, OutputDevice& os) const;
175 
180  virtual void endEventOutput(const MSTransportable& c, SUMOTime t, OutputDevice& os) const;
181 
183  bool moveToNextEdge(MSTransportable* container, SUMOTime currentTime, MSEdge* nextInternal = 0);
184 
185 
187  inline double getMaxSpeed() const {
188  return mySpeed;
189  }
190 
191  inline double getDepartPos() const {
192  return myDepartPos;
193  }
194 
195  inline double getArrivalPos() const {
196  return myArrivalPos;
197  }
198 
199  inline const MSEdge* getNextRouteEdge() const {
200  return myRouteStep == myRoute.end() - 1 ? 0 : *(myRouteStep + 1);
201  }
202 
204  return myContainerState;
205  }
206 
207  private:
209  std::vector<const MSEdge*> myRoute;
210 
212  std::vector<const MSEdge*>::iterator myRouteStep;
213 
215  double myDepartPos;
216 
218  double mySpeed;
219 
222 
225 
226  private:
229 
232 
233  };
234 
235 public:
238 
240  virtual ~MSContainer();
241 
242  /* @brief proceeds to the next step of the route,
243  * @return Whether the persons plan continues */
244  virtual bool proceed(MSNet* net, SUMOTime time);
245 
251  virtual void tripInfoOutput(OutputDevice& os) const;
252 
259  virtual void routeOutput(OutputDevice& os, const bool withRouteLength) const;
260 
261 private:
263  MSContainer(const MSContainer&);
264 
267 
268 };
269 
270 
271 #endif
272 
273 /****************************************************************************/
MSVehicleType
The car-following model and parameter.
Definition: MSVehicleType.h:65
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
MSStoppingPlace
A lane area vehicles can halt at.
Definition: MSStoppingPlace.h:59
MSTransportable::Stage::myArrivalPos
double myArrivalPos
the position at which we want to arrive
Definition: MSTransportable.h:209
SUMOTime.h
MSLane
Representation of a lane in the micro simulation.
Definition: MSLane.h:82
MSContainer::proceed
virtual bool proceed(MSNet *net, SUMOTime time)
Definition: MSContainer.cpp:312
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:63
MSTransportable::Stage_Driving
Definition: MSTransportable.h:435
MSContainer::MSContainerStage_Tranship::getMaxSpeed
double getMaxSpeed() const
accessors to be used by MSCModel_NonInteracting
Definition: MSContainer.h:187
MSNet
The simulated network and simulation perfomer.
Definition: MSNet.h:91
MSContainer::MSContainerStage_Tranship::getDepartPos
double getDepartPos() const
Definition: MSContainer.h:191
MSTransportable::Stage
Definition: MSTransportable.h:73
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:34
SUMOVehicle
Representation of a vehicle.
Definition: SUMOVehicle.h:60
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
MSContainer::MSContainerStage_Tranship::getArrivalPos
double getArrivalPos() const
Definition: MSContainer.h:195
SUMOVehicleParameter
Structure representing possible vehicle parameter.
Definition: SUMOVehicleParameter.h:297
MSContainer::MSContainerStage_Tranship::getSpeed
double getSpeed() const
Returns the speed of the container.
Definition: MSContainer.cpp:210
MSTransportable
Definition: MSTransportable.h:58
MSContainer::MSContainerStage_Tranship::mySpeed
double mySpeed
the speed of the container
Definition: MSContainer.h:218
MSContainer::MSContainerStage_Driving::tripInfoOutput
virtual void tripInfoOutput(OutputDevice &os, const MSTransportable *const transportable) const
Called on writing tripinfo output.
Definition: MSContainer.cpp:106
MSContainer::MSContainerStage_Tranship::myCurrentInternalEdge
MSEdge * myCurrentInternalEdge
The current internal edge this container is on or 0.
Definition: MSContainer.h:224
MSContainer::MSContainerStage_Tranship::getNextRouteEdge
const MSEdge * getNextRouteEdge() const
Definition: MSContainer.h:199
MSContainer::~MSContainer
virtual ~MSContainer()
destructor
Definition: MSContainer.cpp:307
MSContainer::MSContainerStage_Tranship::myContainerState
CState * myContainerState
state that is to be manipulated by MSCModel
Definition: MSContainer.h:221
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
CState
Definition: MSCModel_NonInteracting.h:91
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
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
MSContainer
Definition: MSContainer.h:60
MSContainer::MSContainerStage_Tranship::operator=
MSContainerStage_Tranship & operator=(const MSContainerStage_Tranship &)
Invalidated assignment operator.
MSCModel_NonInteracting
The container following model for tranship.
Definition: MSCModel_NonInteracting.h:50
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
MSContainer::MSContainerStage_Tranship::myRouteStep
std::vector< const MSEdge * >::iterator myRouteStep
current step
Definition: MSContainer.h:212
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
MSContainer::MSContainerStage_Tranship::getStageDescription
std::string getStageDescription() const
Returns the current stage description as a string.
Definition: MSContainer.h:153
MSContainer::MSContainerStage_Driving
Definition: MSContainer.h:69
MSContainer::operator=
MSContainer & operator=(const MSContainer &)
Invalidated assignment operator.
MSContainer::MSContainerStage_Tranship::~MSContainerStage_Tranship
~MSContainerStage_Tranship()
destructor
Definition: MSContainer.cpp:150
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
Position.h
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
MSTransportable.h
MSContainer::MSContainerStage_Tranship::routeOutput
virtual void routeOutput(OutputDevice &os, const bool withRouteLength) const
Called on writing vehroute output.
Definition: MSContainer.cpp:245
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
MSContainer::MSContainerStage_Tranship::getContainerState
CState * getContainerState() const
Definition: MSContainer.h:203
Command.h
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
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
MSContainer::MSContainerStage_Tranship::getToEdge
const MSEdge * getToEdge() const
Returns last edge of the containers route.
Definition: MSContainer.cpp:185
PositionVector.h
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
MSContainer::MSContainerStage_Driving::getStageSummary
std::string getStageSummary() const
return string summary of the current stage
Definition: MSContainer.cpp:94
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