Skip to content

Commit

Permalink
adding arrivalPos "center" and making it the default for personTrip d…
Browse files Browse the repository at this point in the history
…estinations, refs #3843
  • Loading branch information
behrisch committed Feb 27, 2018
1 parent 8006ddc commit 428b50a
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 3 deletions.
5 changes: 4 additions & 1 deletion src/microsim/MSBaseVehicle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,10 @@ MSBaseVehicle::calculateArrivalParams() {
}
break;
case ARRIVAL_POS_RANDOM:
myArrivalPos = RandHelper::rand(0., lastLaneLength);
myArrivalPos = RandHelper::rand(lastLaneLength);
break;
case ARRIVAL_POS_CENTER:
myArrivalPos = lastLaneLength / 2.;
break;
default:
myArrivalPos = lastLaneLength;
Expand Down
4 changes: 2 additions & 2 deletions src/microsim/MSRouteHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1021,7 +1021,7 @@ MSRouteHandler::parseWalkPositions(const SUMOSAXAttributes& attrs, const std::st
arrivalPos = SUMOVehicleParserHelper::parseWalkPos(SUMO_ATTR_ARRIVALPOS, description, toEdge->getLength(),
attrs.get<std::string>(SUMO_ATTR_ARRIVALPOS, description.c_str(), ok), &myParsingRNG);
} else {
arrivalPos = 0.;
arrivalPos = toEdge->getLength() / 2.;
}
}
}
Expand Down Expand Up @@ -1136,7 +1136,7 @@ MSRouteHandler::addPersonTrip(const SUMOSAXAttributes& attrs) {
for (std::vector<MSNet::MSIntermodalRouter::TripItem>::iterator it = result.begin(); it != result.end(); ++it) {
if (!it->edges.empty()) {
bs = MSNet::getInstance()->getStoppingPlace(it->destStop, SUMO_TAG_BUS_STOP);
double localArrivalPos = bs != 0 ? bs->getAccessPos(it->edges.back()) : it->edges.back()->getLength();
double localArrivalPos = bs != 0 ? bs->getAccessPos(it->edges.back()) : it->edges.back()->getLength() / 2.;
if (it + 1 == result.end() && attrs.hasAttribute(SUMO_ATTR_ARRIVALPOS)) {
localArrivalPos = arrivalPos;
}
Expand Down
5 changes: 5 additions & 0 deletions src/utils/vehicle/SUMOVehicleParameter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,9 @@ SUMOVehicleParameter::write(OutputDevice& dev, const OptionsCont& oc, const Sumo
case ARRIVAL_POS_RANDOM:
val = "random";
break;
case ARRIVAL_POS_CENTER:
val = "center";
break;
case ARRIVAL_POS_MAX:
val = "max";
break;
Expand Down Expand Up @@ -517,6 +520,8 @@ SUMOVehicleParameter::parseArrivalPos(const std::string& val, const std::string&
bool ok = true;
if (val == "random") {
apd = ARRIVAL_POS_RANDOM;
} else if (val == "center") {
apd = ARRIVAL_POS_CENTER;
} else if (val == "max") {
apd = ARRIVAL_POS_MAX;
} else {
Expand Down
2 changes: 2 additions & 0 deletions src/utils/vehicle/SUMOVehicleParameter.h
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,8 @@ enum ArrivalPosDefinition {
ARRIVAL_POS_GIVEN,
/// @brief The arrival position is chosen randomly
ARRIVAL_POS_RANDOM,
/// @brief Half the road length
ARRIVAL_POS_CENTER,
/// @brief The maximum arrival position is used
ARRIVAL_POS_MAX,
/// @brief Tag for the last element in the enum for safe int casting
Expand Down
2 changes: 2 additions & 0 deletions src/utils/xml/SUMOVehicleParserHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -768,6 +768,8 @@ SUMOVehicleParserHelper::parseWalkPos(SumoXMLAttr attr, const std::string& id, d
}
if (proc == ARRIVAL_POS_RANDOM) {
result = RandHelper::rand(maxPos, rng);
} else if (proc == ARRIVAL_POS_CENTER) {
result = maxPos / 2.;
} else if (proc == ARRIVAL_POS_MAX) {
result = maxPos;
}
Expand Down

0 comments on commit 428b50a

Please sign in to comment.