21 package org.matsim.core.population.algorithms;
23 import java.util.ArrayList;
24 import java.util.Arrays;
25 import java.util.List;
26 import java.util.Random;
49 private final Random
rng;
60 this.possibleModes = possibleModes.clone();
62 if (allowSwitchFromListedModesOnly){
63 this.possibleFromModes.addAll(Arrays.asList(possibleModes));
74 boolean forbidCar =
false;
75 if (!this.ignoreCarAvailability) {
77 if (
"never".equals(carAvail)) {
82 ArrayList<Leg> legs =
new ArrayList<>();
85 if (pe instanceof
Leg) {
86 if (allowSwitchFromListedModesOnly){
87 if (this.possibleFromModes.contains(((Leg) pe).getMode())) {
101 int rndIdx = this.rng.nextInt(cnt);
111 ((NetworkRoute)route).setVehicleId(null);
118 int newModeIdx = this.rng.nextInt(this.possibleModes.length - 1);
119 for (
int i = 0; i <= newModeIdx; i++) {
120 if (this.possibleModes[i].equals(currentMode)) {
128 newMode = this.possibleModes[newModeIdx];
132 if (this.possibleModes.length == 2) {
133 newMode = currentMode;
ChooseRandomSingleLegMode(final String[] possibleModes, final Random rng, boolean allowSwitchFromListedModesOnly)
void setIgnoreCarAvailability(final boolean ignoreCarAvailability)
final String [] possibleModes
boolean allowSwitchFromListedModesOnly
void run(final Plan plan)
static String getCarAvail(Person person)
String chooseModeOtherThan(final String currentMode, final boolean forbidCar)
void setMode(String mode)
static void setRoutingMode(Leg leg, String mode)
boolean ignoreCarAvailability
List< PlanElement > getPlanElements()
void setRandomLegMode(final Leg leg, final boolean forbidCar)
final List< String > possibleFromModes