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 /****************************************************************************/
16 // The class for modelling container-movements
17 /****************************************************************************/
18 #ifndef MSContainer_h
19 #define MSContainer_h
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include <config.h>
25 
26 #include <string>
27 #include <vector>
28 #include <set>
29 #include <utils/common/SUMOTime.h>
30 #include <utils/common/Command.h>
31 #include <utils/geom/Position.h>
34 
35 
36 // ===========================================================================
37 // class declarations
38 // ===========================================================================
39 class MSNet;
40 class MSEdge;
41 class MSLane;
42 class OutputDevice;
44 class MSStoppingPlace;
45 class SUMOVehicle;
46 class MSVehicleType;
48 class CState;
49 
50 
51 // ===========================================================================
52 // class definitions
53 // ===========================================================================
61 class MSContainer : public MSTransportable {
62 public:
63 
64 
71  public:
73  MSContainerStage_Driving(const MSEdge* destination, MSStoppingPlace* toStop,
74  const double arrivalPos, const std::vector<std::string>& lines);
75 
78 
79  Stage* clone() const;
80 
82  virtual void proceed(MSNet* net, MSTransportable* container, SUMOTime now, Stage* previous);
83 
85  std::string getStageDescription() const;
86  std::string getStageSummary() const;
87 
93  virtual void tripInfoOutput(OutputDevice& os, const MSTransportable* const transportable) const;
94 
100  virtual void routeOutput(OutputDevice& os, const bool withRouteLength) const;
101  };
102 
110 
111  public:
113  MSContainerStage_Tranship(const std::vector<const MSEdge*>& route, MSStoppingPlace* toStop, double speed, double departPos, double arrivalPos);
114 
117 
118  Stage* clone() const;
119 
121  virtual void proceed(MSNet* net, MSTransportable* container, SUMOTime now, Stage* previous);
122 
124  const MSEdge* getEdge() const;
125 
127  const MSEdge* getFromEdge() const;
128 
130  const MSEdge* getToEdge() const;
131 
133  double getEdgePos(SUMOTime now) const;
134 
136  Position getPosition(SUMOTime now) const;
137 
139  double getAngle(SUMOTime now) const;
140 
142  double getDistance() const;
143 
145  SUMOTime getWaitingTime(SUMOTime now) const;
146 
148  double getSpeed() const;
149 
151  ConstMSEdgeVector getEdges() const;
152 
154  std::string getStageDescription() const {
155  return "tranship";
156  }
157  std::string getStageSummary() const;
158 
163  virtual void tripInfoOutput(OutputDevice& os, const MSTransportable* const transportable) const;
164 
169  virtual void routeOutput(OutputDevice& os, const bool withRouteLength) const;
170 
175  virtual void beginEventOutput(const MSTransportable& c, SUMOTime t, OutputDevice& os) const;
176 
181  virtual void endEventOutput(const MSTransportable& c, SUMOTime t, OutputDevice& os) const;
182 
184  bool moveToNextEdge(MSTransportable* container, SUMOTime currentTime, MSEdge* nextInternal = 0);
185 
186 
188  inline double getMaxSpeed() const {
189  return mySpeed;
190  }
191 
192  inline double getDepartPos() const {
193  return myDepartPos;
194  }
195 
196  inline double getArrivalPos() const {
197  return myArrivalPos;
198  }
199 
200  inline const MSEdge* getNextRouteEdge() const {
201  return myRouteStep == myRoute.end() - 1 ? 0 : *(myRouteStep + 1);
202  }
203 
205  return myContainerState;
206  }
207 
208  private:
210  std::vector<const MSEdge*> myRoute;
211 
213  std::vector<const MSEdge*>::iterator myRouteStep;
214 
216  double myDepartPos;
217 
219  double mySpeed;
220 
223 
226 
227  private:
230 
233 
234  };
235 
236 public:
239 
241  virtual ~MSContainer();
242 
243  /* @brief proceeds to the next step of the route,
244  * @return Whether the persons plan continues */
245  virtual bool proceed(MSNet* net, SUMOTime time);
246 
252  virtual void tripInfoOutput(OutputDevice& os) const;
253 
260  virtual void routeOutput(OutputDevice& os, const bool withRouteLength) const;
261 
262 private:
264  MSContainer(const MSContainer&);
265 
268 
269 };
270 
271 
272 #endif
273 
274 /****************************************************************************/
MSVehicleType
The car-following model and parameter.
Definition: MSVehicleType.h:66
MSContainer::MSContainerStage_Tranship::getWaitingTime
SUMOTime getWaitingTime(SUMOTime now) const
Returns the time the container spent waiting.
Definition: MSContainer.cpp:206
MSContainer::MSContainerStage_Driving::clone
Stage * clone() const
Definition: MSContainer.cpp:60
MSContainer::MSContainerStage_Driving::routeOutput
virtual void routeOutput(OutputDevice &os, const bool withRouteLength) const
Called on writing vehroute output.
Definition: MSContainer.cpp:124
MSStoppingPlace
A lane area vehicles can halt at.
Definition: MSStoppingPlace.h:60
MSTransportable::Stage::myArrivalPos
double myArrivalPos
the position at which we want to arrive
Definition: MSTransportable.h:210
SUMOTime.h
MSLane
Representation of a lane in the micro simulation.
Definition: MSLane.h:83
MSContainer::proceed
virtual bool proceed(MSNet *net, SUMOTime time)
Definition: MSContainer.cpp:313
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:64
MSTransportable::Stage_Driving
Definition: MSTransportable.h:436
MSContainer::MSContainerStage_Tranship::getMaxSpeed
double getMaxSpeed() const
accessors to be used by MSCModel_NonInteracting
Definition: MSContainer.h:188
MSNet
The simulated network and simulation perfomer.
Definition: MSNet.h:92
MSContainer::MSContainerStage_Tranship::getDepartPos
double getDepartPos() const
Definition: MSContainer.h:192
MSTransportable::Stage
Definition: MSTransportable.h:74
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:35
SUMOVehicle
Representation of a vehicle.
Definition: SUMOVehicle.h:61
ConstMSEdgeVector
std::vector< const MSEdge * > ConstMSEdgeVector
Definition: MSEdge.h:73
MSContainer::MSContainer
MSContainer(const SUMOVehicleParameter *pars, MSVehicleType *vtype, MSTransportablePlan *plan)
constructor
Definition: MSContainer.cpp:303
MSContainer::MSContainerStage_Tranship::getArrivalPos
double getArrivalPos() const
Definition: MSContainer.h:196
SUMOVehicleParameter
Structure representing possible vehicle parameter.
Definition: SUMOVehicleParameter.h:291
MSContainer::MSContainerStage_Tranship::getSpeed
double getSpeed() const
Returns the speed of the container.
Definition: MSContainer.cpp:211
MSTransportable
Definition: MSTransportable.h:59
MSContainer::MSContainerStage_Tranship::mySpeed
double mySpeed
the speed of the container
Definition: MSContainer.h:219
MSContainer::MSContainerStage_Driving::tripInfoOutput
virtual void tripInfoOutput(OutputDevice &os, const MSTransportable *const transportable) const
Called on writing tripinfo output.
Definition: MSContainer.cpp:107
MSContainer::MSContainerStage_Tranship::myCurrentInternalEdge
MSEdge * myCurrentInternalEdge
The current internal edge this container is on or 0.
Definition: MSContainer.h:225
MSContainer::MSContainerStage_Tranship::getNextRouteEdge
const MSEdge * getNextRouteEdge() const
Definition: MSContainer.h:200
MSContainer::~MSContainer
virtual ~MSContainer()
destructor
Definition: MSContainer.cpp:308
MSContainer::MSContainerStage_Tranship::myContainerState
CState * myContainerState
state that is to be manipulated by MSCModel
Definition: MSContainer.h:222
MSContainer::MSContainerStage_Tranship::myRoute
std::vector< const MSEdge * > myRoute
The route of the container.
Definition: MSContainer.h:210
MSContainer::MSContainerStage_Tranship::proceed
virtual void proceed(MSNet *net, MSTransportable *container, SUMOTime now, Stage *previous)
proceeds to the next step
Definition: MSContainer.cpp:160
CState
Definition: MSCModel_NonInteracting.h:92
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:137
MSContainer::routeOutput
virtual void routeOutput(OutputDevice &os, const bool withRouteLength) const
Called on writing vehroute output.
Definition: MSContainer.cpp:343
MSContainer::MSContainerStage_Tranship::getFromEdge
const MSEdge * getFromEdge() const
Returns first edge of the containers route.
Definition: MSContainer.cpp:181
MSContainer::MSContainerStage_Driving::~MSContainerStage_Driving
~MSContainerStage_Driving()
destructor
Definition: MSContainer.cpp:57
MSContainer
Definition: MSContainer.h:61
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:51
MSContainer::MSContainerStage_Tranship::moveToNextEdge
bool moveToNextEdge(MSTransportable *container, SUMOTime currentTime, MSEdge *nextInternal=0)
move forward and return whether the container arrived
Definition: MSContainer.cpp:270
MSContainer::MSContainerStage_Driving::proceed
virtual void proceed(MSNet *net, MSTransportable *container, SUMOTime now, Stage *previous)
proceeds to the next step
Definition: MSContainer.cpp:65
MSContainer::tripInfoOutput
virtual void tripInfoOutput(OutputDevice &os) const
Called on writing tripinfo output.
Definition: MSContainer.cpp:333
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:39
MSContainer::MSContainerStage_Tranship::myRouteStep
std::vector< const MSEdge * >::iterator myRouteStep
current step
Definition: MSContainer.h:213
MSContainer::MSContainerStage_Driving::getStageDescription
std::string getStageDescription() const
returns the stage description as a string
Definition: MSContainer.cpp:89
MSEdge
A road/street connecting two junctions.
Definition: MSEdge.h:76
MSContainer::MSContainerStage_Tranship::getStageDescription
std::string getStageDescription() const
Returns the current stage description as a string.
Definition: MSContainer.h:154
MSContainer::MSContainerStage_Driving
Definition: MSContainer.h:70
MSContainer::operator=
MSContainer & operator=(const MSContainer &)
Invalidated assignment operator.
MSContainer::MSContainerStage_Tranship::~MSContainerStage_Tranship
~MSContainerStage_Tranship()
destructor
Definition: MSContainer.cpp:151
MSContainer::MSContainerStage_Tranship::tripInfoOutput
virtual void tripInfoOutput(OutputDevice &os, const MSTransportable *const transportable) const
Called on writing tripinfo output.
Definition: MSContainer.cpp:232
MSContainer::MSContainerStage_Tranship::clone
Stage * clone() const
Definition: MSContainer.cpp:155
Position.h
MSContainer::MSContainerStage_Tranship::myDepartPos
double myDepartPos
the depart position
Definition: MSContainer.h:216
MSContainer::MSContainerStage_Tranship::getEdges
ConstMSEdgeVector getEdges() const
the edges of the current stage
Definition: MSContainer.cpp:217
MSTransportable::MSTransportablePlan
std::vector< MSTransportable::Stage * > MSTransportablePlan
the structure holding the plan of a transportable
Definition: MSTransportable.h:588
MSTransportable.h
MSContainer::MSContainerStage_Tranship::routeOutput
virtual void routeOutput(OutputDevice &os, const bool withRouteLength) const
Called on writing vehroute output.
Definition: MSContainer.cpp: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:191
MSContainer::MSContainerStage_Tranship::getDistance
double getDistance() const
get travel distance in this stage
Definition: MSContainer.cpp:222
config.h
MSContainer::MSContainerStage_Tranship::getStageSummary
std::string getStageSummary() const
return string summary of the current stage
Definition: MSContainer.cpp:293
MSContainer::MSContainerStage_Tranship::getContainerState
CState * getContainerState() const
Definition: MSContainer.h:204
Command.h
MSContainer::MSContainerStage_Tranship
Definition: MSContainer.h:108
MSContainer::MSContainerStage_Tranship::getAngle
double getAngle(SUMOTime now) const
Returns the angle of the container.
Definition: MSContainer.cpp:201
MSContainer::MSContainerStage_Tranship::beginEventOutput
virtual void beginEventOutput(const MSTransportable &c, SUMOTime t, OutputDevice &os) const
Called for writing the events output.
Definition: MSContainer.cpp:257
MSContainer::MSContainerStage_Tranship::getToEdge
const MSEdge * getToEdge() const
Returns last edge of the containers route.
Definition: MSContainer.cpp:186
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:48
MSContainer::MSContainerStage_Driving::getStageSummary
std::string getStageSummary() const
return string summary of the current stage
Definition: MSContainer.cpp:95
MSContainer::MSContainerStage_Tranship::getPosition
Position getPosition(SUMOTime now) const
Returns the position of the container.
Definition: MSContainer.cpp:196
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:264
MSContainer::MSContainerStage_Tranship::getEdge
const MSEdge * getEdge() const
Returns the current edge.
Definition: MSContainer.cpp:172