65 "' has to be given in the definition of flow '" +
id +
"'.");
70 "' has to be given in the definition of flow '" +
id +
"'.");
75 "' has to be given in the definition of flow '" +
id +
"'.");
84 "' are allowed in flow '" +
id +
"'.");
92 "' is needed in flow '" +
id +
"'.");
112 if (ok && vph <= 0) {
114 throw ProcessError(
"Invalid repetition rate in the definition of flow '" +
id +
"'.");
116 if (ok && vph != 0) {
117 ret->repetitionOffset =
TIME2STEPS(3600. / vph);
122 if (ok && (ret->repetitionProbability <= 0 || ret->repetitionProbability > 1)) {
124 throw ProcessError(
"Invalid repetition probability in the definition of flow '" +
id +
"'.");
128 ret->depart = beginDefault;
132 if (ok && ret->depart < 0) {
134 throw ProcessError(
"Negative begin time in the definition of flow '" +
id +
"'.");
136 ret->repetitionEnd = endDefault;
137 if (ret->repetitionEnd < 0) {
142 }
else if (endDefault >=
TIME2STEPS(9223372036854773)) {
144 WRITE_WARNING(
"Undefined end for flow '" +
id +
"', defaulting to 24hour duration.");
145 ret->repetitionEnd = ret->depart +
TIME2STEPS(24 * 3600);
147 if (ok && ret->repetitionEnd < ret->depart) {
149 throw ProcessError(
"Flow '" +
id +
"' ends before its begin time.");
154 if (ret->repetitionNumber == 0) {
155 WRITE_WARNING(
"Flow '" +
id +
"' has 0 vehicles; will skip it.");
157 if (ok && ret->repetitionNumber < 0) {
159 throw ProcessError(
"Negative repetition number in the definition of flow '" +
id +
"'.");
161 if (ok && ret->repetitionOffset < 0) {
162 ret->repetitionOffset = (ret->repetitionEnd - ret->depart) / ret->repetitionNumber;
165 ret->repetitionEnd = ret->depart + ret->repetitionNumber * ret->repetitionOffset;
168 if (ok && ret->repetitionProbability > 0) {
171 if (ok && ret->repetitionOffset <= 0) {
173 throw ProcessError(
"Invalid repetition rate in the definition of flow '" +
id +
"'.");
178 const double repLength = (double)(ret->repetitionEnd - ret->depart);
179 ret->repetitionNumber = (int)ceil(repLength / ret->repetitionOffset);
193 const bool optionalID,
const bool skipDepart,
const bool isPerson) {
195 std::string id, errorMsg;
429 if (lcmS ==
"JE2013") {
430 WRITE_WARNING(
"Lane change model 'JE2013' is deprecated. Using default model instead.");
436 WRITE_ERROR(
"Unknown lane change model '" + lcmS +
"' when parsing vType '" + vtype->
id +
"'");
446 WRITE_ERROR(
"Unknown car following model '" + cfmS +
"' when parsing vType '" + vtype->
id +
"'");
480 WRITE_ERROR(
"Unknown lateral alignment '" + alignS +
"' when parsing vType '" + vtype->
id +
"'");
498 const bool fromVType) {
500 CFAttrMap::const_iterator cf_it = allowedAttrs.find(element);
501 if (cf_it == allowedAttrs.end()) {
503 WRITE_ERROR(
"Unknown car following model " +
toString(element) +
" when parsing vType '" + into.
id +
"'");
505 WRITE_ERROR(
"Unknown car following model when parsing vType '" + into.
id +
"'");
515 for (std::set<SumoXMLAttr>::const_iterator it = cf_it->second.begin(); it != cf_it->second.end(); ++it) {
520 +
" in car following model '" +
toString(into.
cfModel) +
"' lower than simulation step size may cause collisions");
534 std::set<SumoXMLAttr> kraussParams;
544 std::set<SumoXMLAttr> allParams(kraussParams);
546 std::set<SumoXMLAttr> kraussXParams(kraussParams);
553 allParams.insert(kraussXParams.begin(), kraussXParams.end());
555 std::set<SumoXMLAttr> smartSKParams;
567 allParams.insert(smartSKParams.begin(), smartSKParams.end());
569 std::set<SumoXMLAttr> daniel1Params;
581 allParams.insert(daniel1Params.begin(), daniel1Params.end());
583 std::set<SumoXMLAttr> pwagParams;
592 allParams.insert(pwagParams.begin(), pwagParams.end());
594 std::set<SumoXMLAttr> idmParams;
602 allParams.insert(idmParams.begin(), idmParams.end());
604 std::set<SumoXMLAttr> idmmParams;
613 allParams.insert(idmmParams.begin(), idmmParams.end());
615 std::set<SumoXMLAttr> bkernerParams;
623 allParams.insert(bkernerParams.begin(), bkernerParams.end());
625 std::set<SumoXMLAttr> wiedemannParams;
632 allParams.insert(wiedemannParams.begin(), wiedemannParams.end());
634 std::set<SumoXMLAttr> railParams;
637 allParams.insert(railParams.begin(), railParams.end());
649 std::set<SumoXMLAttr> lc2013Params;
657 std::set<SumoXMLAttr> sl2015Params = lc2013Params;
666 std::set<SumoXMLAttr> noParams;
675 for (std::set<SumoXMLAttr>::const_iterator it = allowed.begin(); it != allowed.end(); it++) {
711 const std::string&
id) {
721 if (realName != vclassS) {
722 WRITE_WARNING(
"The vehicle class '" + vclassS +
"' for " + attrs.
getObjectType() +
" '" +
id +
"' is deprecated, use '" + realName +
"' instead.");
739 if (realName != vclassS) {
740 WRITE_WARNING(
"The shape '" + vclassS +
"' for " + attrs.
getObjectType() +
" '" +
id +
"' is deprecated, use '" + realName +
"' instead.");
SUMOVehicleClass getVehicleClassID(const std::string &name)
Returns the class id of the abstract class given by its name.
const int VTYPEPARS_MAXSPEED_SET
const int VEHPARS_TO_TAZ_SET
const int VTYPEPARS_MINGAP_SET
static StringBijection< SumoXMLTag > CarFollowModels
car following models
SumoXMLTag
Numbers representing SUMO-XML - element names.
SumoXMLTag cfModel
The enum-representation of the car-following model to use.
RGBColor color
The vehicle's color, TraCI may change this.
const int VTYPEPARS_LATALIGNMENT_SET
static SUMOVTypeParameter * beginVTypeParsing(const SUMOSAXAttributes &attrs, const std::string &file, const SumoXMLTag defaultCFModel)
Starts to parse a vehicle type.
const int VEHPARS_FORCE_REROUTE
static std::string getConfigurationRelative(const std::string &configPath, const std::string &path)
Returns the second path as a relative path to the first file.
static bool parseArrivalPosLat(const std::string &val, const std::string &element, const std::string &id, double &pos, ArrivalPosLatDefinition &apd, std::string &error)
Validates a given arrivalPosLat value.
double impatience
The vehicle's impatience (willingness to obstruct others)
std::string vtypeid
The vehicle's type id.
static std::set< SumoXMLAttr > allowedJMAttrs
static SUMOVehicleShape parseGuiShape(const SUMOSAXAttributes &attrs, const std::string &id)
Parses the vehicle class.
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
StringBijection< SUMOVehicleShape > SumoVehicleShapeStrings(sumoVehicleShapeStringInitializer, SVS_UNKNOWN, false)
ArrivalLaneDefinition arrivalLaneProcedure
Information how the vehicle shall choose the lane to arrive on.
SUMOVehicleShape shape
This class' shape.
Structure representing possible vehicle parameter.
const int VTYPEPARS_MINGAP_LAT_SET
DepartLaneDefinition departLaneProcedure
Information how the vehicle shall choose the lane to depart from.
double defaultProbability
The probability when being added to a distribution without an explicit probability.
std::vector< double > & getParameter()
Returns the parameters of this distribution.
static SUMOVehicleParameter * parseVehicleAttributes(const SUMOSAXAttributes &attrs, const bool optionalID=false, const bool skipDepart=false, const bool isPerson=false)
Parses a vehicle's attributes.
static double rand(std::mt19937 *rng=0)
Returns a random real number in [0, 1)
static void parseVTypeEmbedded(SUMOVTypeParameter &into, const SumoXMLTag element, const SUMOSAXAttributes &attrs, const bool fromVType=false)
Parses an element embedded in vtype definition.
int containerCapacity
The container capacity of the vehicle.
const int VTYPEPARS_BOARDING_DURATION
ArrivalPosLatDefinition arrivalPosLatProcedure
Information how the vehicle shall choose the lateral arrival position.
weights: time range begin
double arrivalPosLat
(optional) The lateral position the vehicle shall arrive on
static LCAttrMap allowedLCModelAttrs
const int VEHPARS_ARRIVALLANE_SET
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
ArrivalSpeedDefinition arrivalSpeedProcedure
Information how the vehicle's end speed shall be chosen.
const int VTYPEPARS_CAR_FOLLOW_MODEL
const int VTYPEPARS_OSGFILE_SET
const int VTYPEPARS_MAXSPEED_LAT_SET
const int VTYPEPARS_PROBABILITY_SET
static double parseWalkPos(SumoXMLAttr attr, const std::string &id, double maxPos, const std::string &val, std::mt19937 *rng=0)
parse departPos or arrivalPos for a walk
#define WRITE_WARNING(msg)
void parse(const std::string &description)
Overwrite by parsable distribution description.
static SUMOVehicleClass parseVehicleClass(const SUMOSAXAttributes &attrs, const std::string &id)
Parses the vehicle class.
static void parseLCParams(SUMOVTypeParameter &into, LaneChangeModel model, const SUMOSAXAttributes &attrs)
Parses lane change model attributes.
const std::string & getObjectType() const
return the objecttype to which these attributes belong
double height
This class' height.
std::string toTaz
The vehicle's destination zone (district)
const int VTYPEPARS_LANE_CHANGE_MODEL_SET
const int VEHPARS_ARRIVALSPEED_SET
static double interpretEdgePos(double pos, double maximumValue, SumoXMLAttr attr, const std::string &id)
Interprets negative edge positions and fits them onto a given edge.
double departSpeed
(optional) The initial speed of the vehicle
static const CFAttrMap & getAllowedCFModelAttrs()
DepartSpeedDefinition departSpeedProcedure
Information how the vehicle's initial speed shall be chosen.
double maxSpeed
The vehicle type's maximum speed [m/s].
double width
This class' width.
SUMOTime boardingDuration
The time a person needs to board the vehicle.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
std::string routeid
The vehicle's route id.
DepartPosDefinition departPosProcedure
Information how the vehicle shall choose the departure position.
Encapsulated SAX-Attributes.
static SUMOVehicleParameter * parseFlowAttributes(const SUMOSAXAttributes &attrs, const SUMOTime beginDefault, const SUMOTime endDefault)
Parses a flow's attributes.
const int VEHPARS_DEPARTSPEED_SET
static bool isAbsolute(const std::string &path)
Returns the information whether the given path is absolute.
std::string osgFile
3D model file for this class
static void parseCommonAttributes(const SUMOSAXAttributes &attrs, SUMOVehicleParameter *ret, std::string element)
Parses attributes common to vehicles and flows.
static const RGBColor DEFAULT_COLOR
The default color (for vehicle types and vehicles)
std::map< SumoXMLTag, std::set< SumoXMLAttr > > CFAttrMap
virtual std::string getName(int attr) const =0
Converts the given attribute id into a man readable string.
int arrivalLane
(optional) The lane the vehicle shall arrive on (not used yet)
std::string imgFile
Image file for this class.
const int VEHPARS_DEPARTPOSLAT_SET
SUMOTime string2time(const std::string &r)
const int VEHPARS_ROUTE_SET
std::string fromTaz
The vehicle's origin zone (district)
static bool parseArrivalLane(const std::string &val, const std::string &element, const std::string &id, int &lane, ArrivalLaneDefinition &ald, std::string &error)
Validates a given arrivalLane value.
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
const int VTYPEPARS_LOADING_DURATION
SUMOTime getSUMOTimeReporting(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is a SUMOTime.
const int VTYPEPARS_CONTAINER_CAPACITY
const int VEHPARS_COLOR_SET
int personNumber
The static number of persons in the vehicle when it departs (not including boarding persons) ...
vehicle is a passenger car (a "normal" car)
const int VEHPARS_FROM_TAZ_SET
int departLane
(optional) The lane the vehicle shall depart from (index in edge)
std::string line
The vehicle's line (mainly for public transport)
const int VTYPEPARS_SPEEDFACTOR_SET
virtual bool hasAttribute(int id) const =0
Returns the information whether the named (by its enum-value) attribute is within the current list...
double arrivalPos
(optional) The position the vehicle shall arrive on
double maxSpeedLat
The vehicle type's maximum lateral speed [m/s].
const int VEHPARS_ARRIVALPOSLAT_SET
double departPosLat
(optional) The lateral position the vehicle shall depart from
const int VEHPARS_LINE_SET
const int VEHPARS_ARRIVALPOS_SET
int personCapacity
The person capacity of the vehicle.
int setParameter
Information for the router which parameter were set.
static StringBijection< LateralAlignment > LateralAlignments
lateral alignments
double departPos
(optional) The position the vehicle shall depart from
double minGapLat
The vehicle type's minimum lateral gap [m].
static const RGBColor YELLOW
Structure representing possible vehicle parameter.
SUMOVehicleShape
Definition of vehicle classes to differ between different appearences.
const int VEHPARS_PERIODFREQ_SET
static SUMOEmissionClass getClassByName(const std::string &eClass, const SUMOVehicleClass vc=SVC_IGNORING)
Checks whether the string describes a known vehicle class.
bool wasSet(int what) const
Returns whether the given parameter was set.
const std::string DEFAULT_PEDTYPE_ID
int setParameter
Information for the router which parameter were set, TraCI may modify this (whe changing color) ...
static bool parseDepartPos(const std::string &val, const std::string &element, const std::string &id, double &pos, DepartPosDefinition &dpd, std::string &error)
Validates a given departPos value.
static void parseJMParams(SUMOVTypeParameter &into, const SUMOSAXAttributes &attrs)
Parses junction model attributes.
SubParams jmParameter
Junction-model parameter.
const int VTYPEPARS_IMGFILE_SET
static bool parseDepartPosLat(const std::string &val, const std::string &element, const std::string &id, double &pos, DepartPosLatDefinition &dpd, std::string &error)
Validates a given departPosLat value.
static bool parseArrivalSpeed(const std::string &val, const std::string &element, const std::string &id, double &speed, ArrivalSpeedDefinition &asd, std::string &error)
Validates a given arrivalSpeed value.
SubParams cfParameter
Car-following parameter.
SUMOTime loadingDuration
The time a container needs to get loaded on the vehicle.
const int VEHPARS_DEPARTLANE_SET
static bool parseArrivalPos(const std::string &val, const std::string &element, const std::string &id, double &pos, ArrivalPosDefinition &apd, std::string &error)
Validates a given arrivalPos value.
int containerNumber
The static number of containers in the vehicle when it departs.
std::string id
The vehicle type's id.
static bool parseDepartSpeed(const std::string &val, const std::string &element, const std::string &id, double &speed, DepartSpeedDefinition &dsd, std::string &error)
Validates a given departSpeed value.
const int VTYPEPARS_PERSON_CAPACITY
static CFAttrMap allowedCFModelAttrs
LateralAlignment latAlignment
The vehicles desired lateral alignment.
T get(const std::string &str) const
const int VEHPARS_VTYPE_SET
double minGap
This class' free space in front of the vehicle itself.
const int VTYPEPARS_HEIGHT_SET
ArrivalPosDefinition
Possible ways to choose the arrival position.
double arrivalSpeed
(optional) The final speed of the vehicle (not used yet)
const int VTYPEPARS_WIDTH_SET
static StringBijection< int > Tags
The names of SUMO-XML elements for use in netbuild.
T getOpt(int attr, const char *objectid, bool &ok, T defaultValue, bool report=true) const
Tries to read given attribute assuming it is an int.
const int VEHPARS_DEPARTPOS_SET
T get(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is an int.
const int VEHPARS_PERSON_NUMBER_SET
LaneChangeModel lcModel
The lane-change model to use.
const int VTYPEPARS_LENGTH_SET
const int VTYPEPARS_VEHICLECLASS_SET
const int VEHPARS_CONTAINER_NUMBER_SET
const int VTYPEPARS_EMISSIONCLASS_SET
The maximum arrival position is used.
const int VTYPEPARS_COLOR_SET
Distribution_Parameterized speedFactor
The factor by which the maximum speed may deviate from the allowed max speed on the street...
const int VTYPEPARS_SHAPE_SET
double length
The physical vehicle length.
SubParams lcParameter
Lane-changing parameter.
static StringBijection< LaneChangeModel > LaneChangeModels
lane change models
static bool parseDepart(const std::string &val, const std::string &element, const std::string &id, SUMOTime &depart, DepartDefinition &dd, std::string &error)
Validates a given depart value.
SUMOEmissionClass emissionClass
The emission class of this vehicle.
vehicles ignoring classes
std::map< LaneChangeModel, std::set< SumoXMLAttr > > LCAttrMap
ArrivalPosDefinition arrivalPosProcedure
Information how the vehicle shall choose the arrival position.
std::string id
The vehicle's id.
const int VTYPEPARS_IMPATIENCE_SET
static bool parseDepartLane(const std::string &val, const std::string &element, const std::string &id, int &lane, DepartLaneDefinition &dld, std::string &error)
Validates a given departLane value.
The arrival position is chosen randomly.
DepartPosLatDefinition departPosLatProcedure
Information how the vehicle shall choose the lateral departure position.