21 package org.matsim.core.population.algorithms;
33 import java.util.List;
34 import java.util.Random;
48 private final Random
rng;
57 public ChooseRandomLegMode(
final String[] possibleModes,
final Random rng,
boolean allowSwitchFromListedModesOnly) {
58 this.possibleModes = possibleModes.clone();
74 if (tour.size() > 1) {
75 boolean forbidCar =
false;
76 if (!this.ignoreCarAvailability) {
78 if (
"never".equals(carAvail)) {
84 if (this.allowSwitchFromListedModesOnly){
85 if (!contains(this.possibleModes, currentMode)) {
93 newMode = this.possibleModes[newModeIdx];
97 if (this.possibleModes.length == 2) {
98 newMode = currentMode;
108 private <T>
boolean contains(T[] array, T value) {
110 if (t.equals(value)) {
118 return ((
Leg) (tour.get(1))).getMode();
123 if (pe instanceof
Leg) {
124 Leg leg = ((Leg) pe);
129 ((NetworkRoute) route).setVehicleId(null);
136 int newModeIdx = this.rng.nextInt(this.possibleModes.length - 1);
137 for (
int i = 0; i <= newModeIdx; i++) {
138 if (this.possibleModes[i].equals(currentMode)) {
void setIgnoreCarAvailability(final boolean ignoreCarAvailability)
final String [] possibleModes
void changeToRandomLegMode(final List< PlanElement > tour, final Plan plan)
static String getCarAvail(Person person)
String getTransportMode(final List< PlanElement > tour)
void setMode(String mode)
static void setRoutingMode(Leg leg, String mode)
void changeLegModeTo(final List< PlanElement > tour, final String newMode)
ChooseRandomLegMode(final String[] possibleModes, final Random rng, boolean allowSwitchFromListedModesOnly)
List< PlanElement > getPlanElements()
int chooseModeOtherThan(final String currentMode)
boolean allowSwitchFromListedModesOnly
boolean ignoreCarAvailability
void run(final Plan plan)