
org.opentripplanner.standalone.config.sandbox.FlexConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
The newest version!
package org.opentripplanner.standalone.config.sandbox;
import static org.opentripplanner.standalone.config.framework.json.OtpVersion.V2_1;
import static org.opentripplanner.standalone.config.framework.json.OtpVersion.V2_3;
import java.time.Duration;
import org.opentripplanner.ext.flex.FlexParameters;
import org.opentripplanner.standalone.config.framework.json.NodeAdapter;
public class FlexConfig implements FlexParameters {
private static final FlexParameters DEFAULT = FlexParameters.defaultValues();
public static final String ACCESS_EGRESS_DESCRIPTION =
"""
If you have multiple overlapping flex zones the high default value can lead to performance problems.
A lower value means faster routing.
Depending on your service this might be what you want to do anyway: many flex services are used
by passengers with mobility problems so offering a long walk might be problematic. In other words,
if you can walk 45 minutes to a flex stop/zone you're unlikely to be the target audience for those
services.
""";
private final Duration maxTransferDuration;
private final Duration maxFlexTripDuration;
private final Duration maxAccessWalkDuration;
private final Duration maxEgressWalkDuration;
private FlexConfig() {
maxTransferDuration = Duration.ofMinutes(5);
maxFlexTripDuration = Duration.ofMinutes(45);
maxAccessWalkDuration = Duration.ofMinutes(45);
maxEgressWalkDuration = Duration.ofMinutes(45);
}
public FlexConfig(NodeAdapter root, String parameterName) {
var json = root
.of(parameterName)
.since(V2_1)
.summary("Configuration for flex routing.")
.asObject();
this.maxTransferDuration =
json
.of("maxTransferDuration")
.since(V2_3)
.summary(
"How long should a passenger be allowed to walk after getting out of a flex vehicle " +
"and transferring to a flex or transit one."
)
.description(
"""
This was mainly introduced to improve performance which is also the reason for not
using the existing value with the same name: fixed schedule transfers are computed
during the graph build but flex ones are calculated at request time and are more
sensitive to slowdown.
A lower value means that the routing is faster.
"""
)
.asDuration(DEFAULT.maxTransferDuration());
maxFlexTripDuration =
json
.of("maxFlexTripDuration")
.since(V2_3)
.summary("How long can a non-scheduled flex trip at maximum be.")
.description(
"This is used for all trips which are of type `UnscheduledTrip`. The value includes " +
"the access/egress duration to the boarding/alighting of the flex trip, as well as the " +
"connection to the transit stop."
)
.asDuration(DEFAULT.maxFlexTripDuration());
maxAccessWalkDuration =
json
.of("maxAccessWalkDuration")
.since(V2_3)
.summary(
"The maximum duration the passenger will be allowed to walk to reach a flex stop or zone."
)
.description(ACCESS_EGRESS_DESCRIPTION)
.asDuration(DEFAULT.maxAccessWalkDuration());
maxEgressWalkDuration =
json
.of("maxEgressWalkDuration")
.since(V2_3)
.summary(
"The maximum duration the passenger will be allowed to walk after leaving the flex vehicle at the final destination."
)
.description(ACCESS_EGRESS_DESCRIPTION)
.asDuration(DEFAULT.maxEgressWalkDuration());
}
public Duration maxFlexTripDuration() {
return maxFlexTripDuration;
}
public Duration maxTransferDuration() {
return maxTransferDuration;
}
public Duration maxAccessWalkDuration() {
return maxAccessWalkDuration;
}
public Duration maxEgressWalkDuration() {
return maxEgressWalkDuration;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy