Skip to content

Commit

Permalink
update cadyts calibration to use less memory, adjust config
Browse files Browse the repository at this point in the history
  • Loading branch information
rakow committed Oct 15, 2024
1 parent 8fc992f commit 8b6bc83
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 10 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<artifactId>matsim-all</artifactId>

<!-- PR-labelled release -->
<version>2025.0-PR3508</version>
<version>2025.0-PR3512</version>

<!-- snapshot == not recommended: rather use PR-labelled release!-->
<!-- <version>2025.0-SNAPSHOT</version>-->
Expand Down
32 changes: 29 additions & 3 deletions src/main/java/org/matsim/prepare/RunOpenBerlinCalibration.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,15 @@
import org.matsim.core.config.Config;
import org.matsim.core.config.ConfigUtils;
import org.matsim.core.config.groups.ReplanningConfigGroup;
import org.matsim.core.config.groups.RoutingConfigGroup;
import org.matsim.core.config.groups.ScoringConfigGroup;
import org.matsim.core.config.groups.VspExperimentalConfigGroup;
import org.matsim.core.controler.AbstractModule;
import org.matsim.core.controler.Controler;
import org.matsim.core.controler.OutputDirectoryHierarchy;
import org.matsim.core.population.PopulationUtils;
import org.matsim.core.population.routes.NetworkRoute;
import org.matsim.core.population.routes.mediumcompressed.MediumCompressedNetworkRouteFactory;
import org.matsim.core.replanning.choosers.ForceInnovationStrategyChooser;
import org.matsim.core.replanning.choosers.StrategyChooser;
import org.matsim.core.replanning.strategies.DefaultPlanStrategiesModule;
Expand Down Expand Up @@ -177,6 +180,9 @@ protected Config prepareConfig(Config config) {
SimWrapperConfigGroup sw = ConfigUtils.addOrGetModule(config, SimWrapperConfigGroup.class);

config.replanningAnnealer().setActivateAnnealingModule(false);
config.replanning().setFractionOfIterationsToDisableInnovation(0.7);
config.scoring().setFractionOfIterationsToStartScoreMSA(0.7);


if (sample.isSet()) {
double sampleSize = sample.getSample();
Expand Down Expand Up @@ -204,6 +210,23 @@ protected Config prepareConfig(Config config) {

// Disable dashboards, for all car runs, these take too many resources
sw.defaultDashboards = SimWrapperConfigGroup.Mode.disabled;

// Only car and ride will be network modes, ride is not simulated on the network though
config.routing().setNetworkModes(List.of(TransportMode.car, TransportMode.ride));
config.routing().addTeleportedModeParams(new RoutingConfigGroup.TeleportedModeParams(TransportMode.bike)
.setBeelineDistanceFactor(1.3)
.setTeleportedModeSpeed(3.1388889)
);
config.routing().addTeleportedModeParams(new RoutingConfigGroup.TeleportedModeParams(TransportMode.truck)
.setBeelineDistanceFactor(1.3)
.setTeleportedModeSpeed(8.3)
);
config.routing().addTeleportedModeParams(new RoutingConfigGroup.TeleportedModeParams("freight")
.setBeelineDistanceFactor(1.3)
.setTeleportedModeSpeed(8.3)
);

config.qsim().setMainModes(List.of(TransportMode.car));
}

// Required for all calibration strategies
Expand Down Expand Up @@ -282,8 +305,8 @@ protected Config prepareConfig(Config config) {
config.vspExperimental().setVspDefaultsCheckingLevel(VspExperimentalConfigGroup.VspDefaultsCheckingLevel.ignore);

// Reduce number of threads, to reduce memory usage
config.global().setNumberOfThreads(Math.max(8, config.global().getNumberOfThreads()));
config.qsim().setNumberOfThreads(Math.max(8, config.qsim().getNumberOfThreads()));
config.global().setNumberOfThreads(Math.min(12, config.global().getNumberOfThreads()));
config.qsim().setNumberOfThreads(Math.min(12, config.qsim().getNumberOfThreads()));

} else if (mode == CalibrationMode.routeChoice) {

Expand Down Expand Up @@ -331,6 +354,9 @@ protected void prepareScenario(Scenario scenario) {

if (allCar) {

scenario.getPopulation().getFactory().getRouteFactories()
.setRouteFactory(NetworkRoute.class, new MediumCompressedNetworkRouteFactory());

log.info("Converting all agents to car plans.");

MainModeIdentifier mmi = new DefaultAnalysisMainModeIdentifier();
Expand Down Expand Up @@ -443,7 +469,7 @@ public void install() {
}
});

controler.addOverridingModule(new OpenBerlinScenario.TravelTimeBinding());
controler.addOverridingModule(new OpenBerlinScenario.TravelTimeBinding(allCar));
controler.addOverridingModule(new SimWrapperModule());

if (ConfigUtils.hasModule(controler.getConfig(), AdvancedScoringConfigGroup.class)) {
Expand Down
24 changes: 18 additions & 6 deletions src/main/java/org/matsim/run/OpenBerlinScenario.java
Original file line number Diff line number Diff line change
Expand Up @@ -136,18 +136,30 @@ public void install() {
* Add travel time bindings for ride and freight modes, which are not actually network modes.
*/
public static final class TravelTimeBinding extends AbstractModule {

private final boolean carOnly;

public TravelTimeBinding() {
this.carOnly = false;
}

public TravelTimeBinding(boolean carOnly) {
this.carOnly = carOnly;
}

@Override
public void install() {
addTravelTimeBinding(TransportMode.ride).to(networkTravelTime());
addTravelDisutilityFactoryBinding(TransportMode.ride).to(carTravelDisutilityFactoryKey());

addTravelTimeBinding("freight").to(Key.get(TravelTime.class, Names.named(TransportMode.truck)));
addTravelDisutilityFactoryBinding("freight").to(Key.get(TravelDisutilityFactory.class, Names.named(TransportMode.truck)));

// Bike should use free speed travel time
addTravelTimeBinding(TransportMode.bike).to(FreeSpeedTravelTime.class);
addTravelDisutilityFactoryBinding(TransportMode.bike).to(OnlyTimeDependentTravelDisutilityFactory.class);
if (!carOnly) {
addTravelTimeBinding("freight").to(Key.get(TravelTime.class, Names.named(TransportMode.truck)));
addTravelDisutilityFactoryBinding("freight").to(Key.get(TravelDisutilityFactory.class, Names.named(TransportMode.truck)));

// Bike should use free speed travel time
addTravelTimeBinding(TransportMode.bike).to(FreeSpeedTravelTime.class);
addTravelDisutilityFactoryBinding(TransportMode.bike).to(OnlyTimeDependentTravelDisutilityFactory.class);
}
}
}

Expand Down

0 comments on commit 8b6bc83

Please sign in to comment.