Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
ROEdge.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2002-2024 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
24// A basic edge for routing applications
25/****************************************************************************/
26#pragma once
27#include <config.h>
28
29#include <string>
30#include <map>
31#include <vector>
32#include <algorithm>
33#include <utils/common/Named.h>
39#include <utils/geom/Boundary.h>
40#ifdef HAVE_FOX
42#endif
44#include "RONode.h"
45#include "ROVehicle.h"
47
48
49// ===========================================================================
50// class declarations
51// ===========================================================================
52class ROLane;
53class ROEdge;
54
55typedef std::vector<ROEdge*> ROEdgeVector;
56typedef std::vector<const ROEdge*> ConstROEdgeVector;
57typedef std::vector<std::pair<const ROEdge*, const ROEdge*> > ROConstEdgePairVector;
58
59
60// ===========================================================================
61// class definitions
62// ===========================================================================
72class ROEdge : public Named, public Parameterised {
73public:
81 ROEdge(const std::string& id, RONode* from, RONode* to, int index, const int priority);
82
83
85 virtual ~ROEdge();
86
87
89
90
99 virtual void addLane(ROLane* lane);
100
101
108 virtual void addSuccessor(ROEdge* s, ROEdge* via = nullptr, std::string dir = "");
109
110
114 inline void setFunction(SumoXMLEdgeFunc func) {
115 myFunction = func;
116 }
117
118
122 inline void setSource(const bool isSource = true) {
123 myAmSource = isSource;
124 }
125
126
130 inline void setSink(const bool isSink = true) {
132 }
133
134
138 inline void setRestrictions(const std::map<SUMOVehicleClass, double>* restrictions) {
139 myRestrictions = restrictions;
140 }
141
142 inline void setTimePenalty(double value) {
143 myTimePenalty = value;
144 }
145
146 inline double getTimePenalty() const {
147 return myTimePenalty;
148 }
149
151 inline bool isNormal() const {
153 }
154
156 inline bool isInternal() const {
158 }
159
161 inline bool isCrossing() const {
163 }
164
166 inline bool isWalkingArea() const {
168 }
169
170 inline bool isTazConnector() const {
172 }
173
174 void setOtherTazConnector(const ROEdge* edge) {
175 myOtherTazConnector = edge;
176 }
177
179 return myOtherTazConnector;
180 }
181
191 void buildTimeLines(const std::string& measure, const bool boundariesOverride);
192
193 void cacheParamRestrictions(const std::vector<std::string>& restrictionKeys);
195
196
197
199
200
206 return myFunction;
207 }
208
209
213 inline bool isSink() const {
214 return myAmSink;
215 }
216
217
221 double getLength() const {
222 return myLength;
223 }
224
228 int getNumericalID() const {
229 return myIndex;
230 }
231
232
236 double getSpeedLimit() const {
237 return mySpeed;
238 }
239
241 // sufficient for the astar air-distance heuristic
242 double getLengthGeometryFactor() const;
243
248 inline double getVClassMaxSpeed(SUMOVehicleClass vclass) const {
249 if (myRestrictions != 0) {
250 std::map<SUMOVehicleClass, double>::const_iterator r = myRestrictions->find(vclass);
251 if (r != myRestrictions->end()) {
252 return r->second;
253 }
254 }
255 return mySpeed;
256 }
257
258
262 int getNumLanes() const {
263 return (int) myLanes.size();
264 }
265
266
273 bool isConnectedTo(const ROEdge& e, const SUMOVehicleClass vClass) const;
274
275
280 inline bool prohibits(const ROVehicle* const vehicle) const {
281 const SUMOVehicleClass vclass = vehicle->getVClass();
282 return (myCombinedPermissions & vclass) != vclass;
283 }
284
287 }
288
293 inline bool restricts(const ROVehicle* const vehicle) const {
294 const std::vector<double>& vTypeRestrictions = vehicle->getType()->paramRestrictions;
295 assert(vTypeRestrictions.size() == myParamRestrictions.size());
296 for (int i = 0; i < (int)vTypeRestrictions.size(); i++) {
297 if (vTypeRestrictions[i] > myParamRestrictions[i]) {
298 return true;
299 }
300 }
301 return false;
302 }
303
304
309 bool allFollowersProhibit(const ROVehicle* const vehicle) const;
311
312
313
315
316
323 void addEffort(double value, double timeBegin, double timeEnd);
324
325
332 void addTravelTime(double value, double timeBegin, double timeEnd);
333
334
342 int getNumSuccessors() const;
343
344
350
355 const ROConstEdgePairVector& getViaSuccessors(SUMOVehicleClass vClass = SVC_IGNORING, bool ignoreTransientPermissions = false) const;
356
357
365 int getNumPredecessors() const;
366
367
373 return myApproachingEdges;
374 }
375
377 const ROEdge* getNormalBefore() const;
378
380 const ROEdge* getNormalAfter() const;
381
389 double getEffort(const ROVehicle* const veh, double time) const;
390
391
397 bool hasLoadedTravelTime(double time) const;
398
399
406 double getTravelTime(const ROVehicle* const veh, double time) const;
407
408
417 static inline double getEffortStatic(const ROEdge* const edge, const ROVehicle* const veh, double time) {
418 return edge->getEffort(veh, time);
419 }
420
421
429 static inline double getTravelTimeStatic(const ROEdge* const edge, const ROVehicle* const veh, double time) {
430 return edge->getTravelTime(veh, time);
431 }
432
433 static inline double getTravelTimeStaticRandomized(const ROEdge* const edge, const ROVehicle* const veh, double time) {
434 return edge->getTravelTime(veh, time) * RandHelper::rand(1., gWeightsRandomFactor);
435 }
436
438 static inline double getTravelTimeAggregated(const ROEdge* const edge, const ROVehicle* const veh, double time) {
439 return edge->getTravelTime(veh, time);
440 }
441
443 static inline double getTravelTimeStaticPriorityFactor(const ROEdge* const edge, const ROVehicle* const veh, double time) {
444 double result = edge->getTravelTime(veh, time);
445 // lower priority should result in higher effort (and the edge with
446 // minimum priority receives a factor of myPriorityFactor
447 const double relativeInversePrio = 1 - ((edge->getPriority() - myMinEdgePriority) / myEdgePriorityRange);
448 result *= 1 + relativeInversePrio * myPriorityFactor;
449 return result;
450 }
451
457 inline double getMinimumTravelTime(const ROVehicle* const veh) const {
458 if (isTazConnector()) {
459 return 0;
460 } else if (veh != 0) {
461 return myLength / MIN2(veh->getType()->maxSpeed, veh->getChosenSpeedFactor() * mySpeed);
462 } else {
463 return myLength / mySpeed;
464 }
465 }
466
467
468 template<PollutantsInterface::EmissionType ET>
469 static double getEmissionEffort(const ROEdge* const edge, const ROVehicle* const veh, double time) {
470 double ret = 0;
471 if (!edge->getStoredEffort(time, ret)) {
472 const SUMOVTypeParameter* const type = veh->getType();
473 const double vMax = MIN2(type->maxSpeed, edge->mySpeed);
475 ret = PollutantsInterface::computeDefault(type->emissionClass, ET, vMax, accel, 0, edge->getTravelTime(veh, time), nullptr); // @todo: give correct slope
476 }
477 return ret;
478 }
479
480
481 static double getNoiseEffort(const ROEdge* const edge, const ROVehicle* const veh, double time);
482
483 static double getStoredEffort(const ROEdge* const edge, const ROVehicle* const /*veh*/, double time) {
484 double ret = 0;
485 edge->getStoredEffort(time, ret);
486 return ret;
487 }
489
490
492 double getDistanceTo(const ROEdge* other, const bool doBoundaryEstimate = false) const;
493
494
496 static const ROEdgeVector& getAllEdges();
497
498 static void setGlobalOptions(const bool interpolate) {
499 myInterpolate = interpolate;
500 }
501
503 myHaveTTWarned = true;
504 }
505
507 static const Position getStopPosition(const SUMOVehicleParameter::Stop& stop);
508
510 int getPriority() const {
511 return myPriority;
512 }
513
514 const RONode* getFromJunction() const {
515 return myFromJunction;
516 }
517
518 const RONode* getToJunction() const {
519 return myToJunction;
520 }
521
526 const std::vector<ROLane*>& getLanes() const {
527 return myLanes;
528 }
529
531 inline const ROEdge* getBidiEdge() const {
532 return myBidiEdge;
533 }
534
536 inline void setBidiEdge(const ROEdge* bidiEdge) {
537 myBidiEdge = bidiEdge;
538 }
539
546
548 // @note If not called before, the flipped routing edge is created
555
562
564 bool hasStoredEffort() const {
565 return myUsingETimeLine;
566 }
567
569 static bool initPriorityFactor(double priorityFactor);
570
571protected:
578 bool getStoredEffort(double time, double& ret) const;
579
580
581
582protected:
586
588 const int myIndex;
589
591 const int myPriority;
592
594 double mySpeed;
595
597 double myLength;
598
605
610
612 static bool myInterpolate;
613
615 static bool myHaveEWarned;
617 static bool myHaveTTWarned;
618
621
623
626
629
631 const std::map<SUMOVehicleClass, double>* myRestrictions;
632
634 std::vector<ROLane*> myLanes;
635
638
641
644
647
650
652 std::vector<double> myParamRestrictions;
653
655
657 static double myPriorityFactor;
659 static double myMinEdgePriority;
661 static double myEdgePriorityRange;
662
664 mutable std::map<SUMOVehicleClass, ROEdgeVector> myClassesSuccessorMap;
665
667 mutable std::map<SUMOVehicleClass, ROConstEdgePairVector> myClassesViaSuccessorMap;
668
674
675#ifdef HAVE_FOX
677 mutable FXMutex myLock;
678#endif
679
680private:
682 ROEdge(const ROEdge& src);
683
685 ROEdge& operator=(const ROEdge& src);
686
687};
std::vector< ROEdge * > ROEdgeVector
std::vector< std::pair< const ROEdge *, const ROEdge * > > ROConstEdgePairVector
Definition ROEdge.h:57
std::vector< const ROEdge * > ConstROEdgeVector
Definition ROEdge.h:56
std::vector< ROEdge * > ROEdgeVector
Definition ROEdge.h:55
long long int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_IGNORING
vehicles ignoring classes
SumoXMLEdgeFunc
Numbers representing special SUMO-XML-attribute values for representing edge functions used in netbui...
@ SUMO_ATTR_ACCEL
@ SUMO_ATTR_SIGMA
double gWeightsRandomFactor
Definition StdDefs.cpp:32
T MIN2(T a, T b)
Definition StdDefs.h:76
A class that stores a 2D geometrical boundary.
Definition Boundary.h:39
The edge type representing backward edges with flipped nodes.
Definition FlippedEdge.h:43
Base class for objects which have an id.
Definition Named.h:54
An upper class for objects with additional parameters.
static double computeDefault(const SUMOEmissionClass c, const EmissionType e, const double v, const double a, const double slope, const double tt, const EnergyParams *param)
Returns the amount of emitted pollutant given the vehicle type and default values for the state (in m...
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37
A basic edge for routing applications.
Definition ROEdge.h:72
bool allFollowersProhibit(const ROVehicle *const vehicle) const
Returns whether this edge succeeding edges prohibit the given vehicle to pass them.
Definition ROEdge.cpp:343
static double myPriorityFactor
Coefficient for factoring edge priority into routing weight.
Definition ROEdge.h:657
RailEdge< ROEdge, ROVehicle > * getRailwayRoutingEdge() const
Definition ROEdge.h:556
double getVClassMaxSpeed(SUMOVehicleClass vclass) const
Returns the lane's maximum speed, given a vehicle's speed limit adaptation.
Definition ROEdge.h:248
bool hasStoredEffort() const
whether effort data was loaded for this edge
Definition ROEdge.h:564
const ROEdge * getBidiEdge() const
return opposite superposable/congruent edge, if it exist and 0 else
Definition ROEdge.h:531
int getNumericalID() const
Returns the index (numeric id) of the edge.
Definition ROEdge.h:228
const ROEdge * getNormalBefore() const
if this edge is an internal edge, return its first normal predecessor, otherwise the edge itself
Definition ROEdge.cpp:271
double getDistanceTo(const ROEdge *other, const bool doBoundaryEstimate=false) const
optimistic distance heuristic for use in routing
Definition ROEdge.cpp:166
void setFunction(SumoXMLEdgeFunc func)
Sets the function of the edge.
Definition ROEdge.h:114
const ROEdge * getNormalAfter() const
if this edge is an internal edge, return its first normal successor, otherwise the edge itself
Definition ROEdge.cpp:283
void addEffort(double value, double timeBegin, double timeEnd)
Adds a weight value.
Definition ROEdge.cpp:142
bool hasLoadedTravelTime(double time) const
Returns whether a travel time for this edge was loaded.
Definition ROEdge.cpp:186
static double getStoredEffort(const ROEdge *const edge, const ROVehicle *const, double time)
Definition ROEdge.h:483
ReversedEdge< ROEdge, ROVehicle > * myReversedRoutingEdge
a reversed version for backward routing
Definition ROEdge.h:670
bool restricts(const ROVehicle *const vehicle) const
Returns whether this edge has restriction parameters forbidding the given vehicle to pass it.
Definition ROEdge.h:293
void buildTimeLines(const std::string &measure, const bool boundariesOverride)
Builds the internal representation of the travel time/effort.
Definition ROEdge.cpp:294
int getNumLanes() const
Returns the number of lanes this edge has.
Definition ROEdge.h:262
std::vector< ROLane * > myLanes
This edge's lanes.
Definition ROEdge.h:634
void setRestrictions(const std::map< SUMOVehicleClass, double > *restrictions)
Sets the vehicle class specific speed limits of the edge.
Definition ROEdge.h:138
static bool initPriorityFactor(double priorityFactor)
initialize priority factor range
Definition ROEdge.cpp:446
int getPriority() const
get edge priority (road class)
Definition ROEdge.h:510
static ROEdgeVector myEdges
Definition ROEdge.h:654
bool myAmSource
Definition ROEdge.h:600
RailEdge< ROEdge, ROVehicle > * myRailwayRoutingEdge
Definition ROEdge.h:673
static double getTravelTimeStaticPriorityFactor(const ROEdge *const edge, const ROVehicle *const veh, double time)
Return traveltime weighted by edge priority (scaled penalty for low-priority edges)
Definition ROEdge.h:443
const RONode * getToJunction() const
Definition ROEdge.h:518
const int myIndex
The index (numeric id) of the edge.
Definition ROEdge.h:588
SumoXMLEdgeFunc myFunction
The function of the edge.
Definition ROEdge.h:628
bool myUsingTTTimeLine
Information whether the time line shall be used instead of the length value.
Definition ROEdge.h:604
void setSource(const bool isSource=true)
Sets whether the edge is a source.
Definition ROEdge.h:122
std::map< SUMOVehicleClass, ROEdgeVector > myClassesSuccessorMap
The successors available for a given vClass.
Definition ROEdge.h:664
bool isNormal() const
return whether this edge is a normal edge
Definition ROEdge.h:151
bool isTazConnector() const
Definition ROEdge.h:170
std::map< SUMOVehicleClass, ROConstEdgePairVector > myClassesViaSuccessorMap
The successors with vias available for a given vClass.
Definition ROEdge.h:667
void setBidiEdge(const ROEdge *bidiEdge)
set opposite superposable/congruent edge
Definition ROEdge.h:536
std::vector< double > myParamRestrictions
cached value of parameters which may restrict access
Definition ROEdge.h:652
const ROEdge * getOtherTazConnector() const
Definition ROEdge.h:178
bool myUsingETimeLine
Information whether the time line shall be used instead of the length value.
Definition ROEdge.h:609
bool prohibits(const ROVehicle *const vehicle) const
Returns whether this edge prohibits the given vehicle to pass it.
Definition ROEdge.h:280
const RONode * getFromJunction() const
Definition ROEdge.h:514
double getSpeedLimit() const
Returns the speed allowed on this edge.
Definition ROEdge.h:236
const ROEdge * myOtherTazConnector
the other taz-connector if this edge isTazConnector, otherwise nullptr
Definition ROEdge.h:640
bool isSink() const
Returns whether the edge acts as a sink.
Definition ROEdge.h:213
virtual void addLane(ROLane *lane)
Adds a lane to the edge while loading.
Definition ROEdge.cpp:98
ValueTimeLine< double > myEfforts
Container storing passing time varying over time for the edge.
Definition ROEdge.h:607
bool isInternal() const
return whether this edge is an internal edge
Definition ROEdge.h:156
virtual ~ROEdge()
Destructor.
Definition ROEdge.cpp:87
void setSink(const bool isSink=true)
Sets whether the edge is a sink.
Definition ROEdge.h:130
static double getTravelTimeAggregated(const ROEdge *const edge, const ROVehicle *const veh, double time)
Alias for getTravelTimeStatic (there is no routing device to provide aggregated travel times)
Definition ROEdge.h:438
ROEdge(const ROEdge &src)
Invalidated copy constructor.
static double getEmissionEffort(const ROEdge *const edge, const ROVehicle *const veh, double time)
Definition ROEdge.h:469
int getNumSuccessors() const
Returns the number of edges this edge is connected to.
Definition ROEdge.cpp:253
double getTimePenalty() const
Definition ROEdge.h:146
const ROEdge * myBidiEdge
the bidirectional rail edge or nullpr
Definition ROEdge.h:643
Boundary myBoundary
The bounding rectangle of end nodes incoming or outgoing edges for taz connectors or of my own start ...
Definition ROEdge.h:646
static double getNoiseEffort(const ROEdge *const edge, const ROVehicle *const veh, double time)
Definition ROEdge.cpp:217
RONode * myFromJunction
the junctions for this edge
Definition ROEdge.h:584
static bool myInterpolate
Information whether to interpolate at interval boundaries.
Definition ROEdge.h:612
const ROConstEdgePairVector & getViaSuccessors(SUMOVehicleClass vClass=SVC_IGNORING, bool ignoreTransientPermissions=false) const
Returns the following edges including vias, restricted by vClass.
Definition ROEdge.cpp:404
ROEdge & operator=(const ROEdge &src)
Invalidated assignment operator.
const ROEdgeVector & getPredecessors() const
Returns the edge at the given position from the list of incoming edges.
Definition ROEdge.h:372
static void disableTimelineWarning()
Definition ROEdge.h:502
SumoXMLEdgeFunc getFunction() const
Returns the function of the edge.
Definition ROEdge.h:205
double getTravelTime(const ROVehicle *const veh, double time) const
Returns the travel time for this edge.
Definition ROEdge.cpp:192
double getMinimumTravelTime(const ROVehicle *const veh) const
Returns a lower bound for the travel time on this edge without using any stored timeLine.
Definition ROEdge.h:457
double myLength
The length of the edge.
Definition ROEdge.h:597
bool myAmSink
whether the edge is a source or a sink
Definition ROEdge.h:600
SVCPermissions getPermissions() const
Definition ROEdge.h:285
void setOtherTazConnector(const ROEdge *edge)
Definition ROEdge.h:174
const ROEdgeVector & getSuccessors(SUMOVehicleClass vClass=SVC_IGNORING) const
Returns the following edges, restricted by vClass.
Definition ROEdge.cpp:368
void addTravelTime(double value, double timeBegin, double timeEnd)
Adds a travel time value.
Definition ROEdge.cpp:149
void cacheParamRestrictions(const std::vector< std::string > &restrictionKeys)
Definition ROEdge.cpp:328
int getNumPredecessors() const
Returns the number of edges connected to this edge.
Definition ROEdge.cpp:262
static double getTravelTimeStaticRandomized(const ROEdge *const edge, const ROVehicle *const veh, double time)
Definition ROEdge.h:433
static double myEdgePriorityRange
the difference between maximum and minimum priority for all edges
Definition ROEdge.h:661
double myTimePenalty
flat penalty when computing traveltime
Definition ROEdge.h:649
const std::map< SUMOVehicleClass, double > * myRestrictions
The vClass speed restrictions for this edge.
Definition ROEdge.h:631
SVCPermissions myCombinedPermissions
The list of allowed vehicle classes combined across lanes.
Definition ROEdge.h:637
FlippedEdge< ROEdge, RONode, ROVehicle > * getFlippedRoutingEdge() const
Returns the flipped routing edge.
Definition ROEdge.h:549
static const Position getStopPosition(const SUMOVehicleParameter::Stop &stop)
return the coordinates of the center of the given stop
Definition ROEdge.cpp:360
static bool myHaveTTWarned
Information whether the edge has reported missing weights.
Definition ROEdge.h:617
double getEffort(const ROVehicle *const veh, double time) const
Returns the effort for this edge.
Definition ROEdge.cpp:156
const std::vector< ROLane * > & getLanes() const
Returns this edge's lanes.
Definition ROEdge.h:526
static double getEffortStatic(const ROEdge *const edge, const ROVehicle *const veh, double time)
Returns the effort for the given edge.
Definition ROEdge.h:417
bool isWalkingArea() const
return whether this edge is walking area
Definition ROEdge.h:166
double getLengthGeometryFactor() const
return a lower bound on shape.length() / myLength that is
Definition ROEdge.cpp:337
double getLength() const
Returns the length of the edge.
Definition ROEdge.h:221
ROEdgeVector myFollowingEdges
List of edges that may be approached from this edge.
Definition ROEdge.h:620
FlippedEdge< ROEdge, RONode, ROVehicle > * myFlippedRoutingEdge
An extended version of the reversed edge for backward routing (used for the arc flag router)
Definition ROEdge.h:672
ROConstEdgePairVector myFollowingViaEdges
Definition ROEdge.h:622
ValueTimeLine< double > myTravelTimes
Container storing passing time varying over time for the edge.
Definition ROEdge.h:602
static void setGlobalOptions(const bool interpolate)
Definition ROEdge.h:498
bool isCrossing() const
return whether this edge is a pedestrian crossing
Definition ROEdge.h:161
static double getTravelTimeStatic(const ROEdge *const edge, const ROVehicle *const veh, double time)
Returns the travel time for the given edge.
Definition ROEdge.h:429
virtual void addSuccessor(ROEdge *s, ROEdge *via=nullptr, std::string dir="")
Adds information about a connected edge.
Definition ROEdge.cpp:113
const int myPriority
The edge priority (road class)
Definition ROEdge.h:591
static double myMinEdgePriority
Minimum priority for all edges.
Definition ROEdge.h:659
bool isConnectedTo(const ROEdge &e, const SUMOVehicleClass vClass) const
returns the information whether this edge is directly connected to the given
Definition ROEdge.cpp:440
static bool myHaveEWarned
Information whether the edge has reported missing weights.
Definition ROEdge.h:615
ReversedEdge< ROEdge, ROVehicle > * getReversedRoutingEdge() const
Definition ROEdge.h:540
static const ROEdgeVector & getAllEdges()
Returns all ROEdges.
Definition ROEdge.cpp:354
RONode * myToJunction
Definition ROEdge.h:585
ROEdgeVector myApproachingEdges
List of edges that approached this edge.
Definition ROEdge.h:625
double mySpeed
The maximum speed allowed on this edge.
Definition ROEdge.h:594
void setTimePenalty(double value)
Definition ROEdge.h:142
A single lane the router may use.
Definition ROLane.h:48
Base class for nodes used by the router.
Definition RONode.h:46
SUMOVehicleClass getVClass() const
Definition RORoutable.h:109
const SUMOVTypeParameter * getType() const
Returns the type of the routable.
Definition RORoutable.h:82
A vehicle as used by router.
Definition ROVehicle.h:50
double getChosenSpeedFactor() const
Returns an upper bound for the speed factor of this vehicle.
Definition ROVehicle.h:109
the edge type representing backward edges
Definition RailEdge.h:38
static double rand(SumoRNG *rng=nullptr)
Returns a random real number in [0, 1)
the edge type representing backward edges
Structure representing possible vehicle parameter.
SUMOEmissionClass emissionClass
The emission class of this vehicle.
std::vector< double > paramRestrictions
cached value of parameters which may restrict access to certain edges
double maxSpeed
The vehicle type's (technical) maximum speed [m/s].
double getCFParam(const SumoXMLAttr attr, const double defaultValue) const
Returns the named value from the map, or the default if it is not contained there.
SUMOVehicleClass vehicleClass
The vehicle's class.
static double getDefaultImperfection(const SUMOVehicleClass vc=SVC_IGNORING)
Returns the default driver's imperfection (sigma or epsilon in Krauss' model) for the given vehicle c...
static double getDefaultAccel(const SUMOVehicleClass vc=SVC_IGNORING)
Returns the default acceleration for the given vehicle class This needs to be a function because the ...
Definition of vehicle stop (position and duration)