Skip to content

Commit

Permalink
update cadyts setup
Browse files Browse the repository at this point in the history
  • Loading branch information
rakow committed Jul 16, 2023
1 parent aac18d8 commit f3207c1
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 37 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ eval-opt: $p/berlin-initial-$V-25pct.experienced_plans.xml.gz
--csv $p/berlin-$V-25pct.plans_selection_$(ERROR_METRIC).csv\
--output $p/berlin-$V-25pct.plans_$(ERROR_METRIC).xml.gz

$(sc) run --mode "eval" --all-car --output "output/eval-$(ERROR_METRIC)" --25pct --population "berlin-$V-25pct.plans_$(ERROR_METRIC).xml.gz"\
$(sc) run --mode "routeChoice" --iterations 20 --all-car --output "output/eval-$(ERROR_METRIC)" --25pct --population "berlin-$V-25pct.plans_$(ERROR_METRIC).xml.gz"\
--config $p/berlin-$V-base-calib.config.xml


Expand Down
53 changes: 17 additions & 36 deletions src/main/java/org/matsim/prepare/RunOpenBerlinCalibration.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,11 @@
import org.matsim.core.scoring.ScoringFunction;
import org.matsim.core.scoring.ScoringFunctionFactory;
import org.matsim.core.scoring.SumScoringFunction;
import org.matsim.core.scoring.functions.ScoringParameters;
import org.matsim.core.scoring.functions.ScoringParametersForPerson;
import org.matsim.core.scoring.functions.*;
import org.matsim.core.utils.geometry.CoordUtils;
import org.matsim.prepare.counts.CreateCountsFromGeoPortalBerlin;
import org.matsim.prepare.counts.CreateCountsFromVMZOld;
import org.matsim.prepare.counts.CreateCountsFromVMZ;
import org.matsim.prepare.counts.CreateCountsFromVMZOld;
import org.matsim.prepare.download.DownloadCommuterStatistic;
import org.matsim.prepare.network.FreeSpeedOptimizer;
import org.matsim.prepare.network.PrepareNetworkParams;
Expand Down Expand Up @@ -230,36 +229,23 @@ protected Config prepareConfig(Config config) {

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

/*
for (String subpopulation : List.of("person", "businessTraffic", "businessTraffic_service")) {
// Re-route for all populations
for (String subpopulation : List.of("person", "commercialPersonTraffic", "commercialPersonTraffic_service")) {
config.strategy().addStrategySettings(new StrategyConfigGroup.StrategySettings()
.setStrategyName(DefaultPlanStrategiesModule.DefaultStrategy.ReRoute)
.setWeight(weight)
.setSubpopulation(subpopulation)
.setStrategyName(DefaultPlanStrategiesModule.DefaultStrategy.ReRoute)
.setWeight(weight)
.setSubpopulation(subpopulation)
);
}

config.strategy().addStrategySettings(new StrategyConfigGroup.StrategySettings()
.setStrategyName(DefaultPlanStrategiesModule.DefaultStrategy.TimeAllocationMutator)
.setWeight(weight)
.setSubpopulation("person")
);
*/
// Set high flow capacity
config.qsim().setFlowCapFactor(config.qsim().getFlowCapFactor() * 4);
config.qsim().setStorageCapFactor(config.qsim().getStorageCapFactor() * 4);

config.timeAllocationMutator().setMutationRange(15 * 60);
config.timeAllocationMutator().setAffectingDuration(false);

config.counts().setInputFile("./berlin-v6.0-counts-car-vmz.xml.gz");

config.controler().setRunId("cadyts");
config.controler().setOutputDirectory("./output/cadyts-" + scaleFactor);

// No innovation switch-off needed
config.planCalcScore().setFractionOfIterationsToStartScoreMSA(1.0);
config.strategy().setFractionOfIterationsToDisableInnovation(1.0);
config.planCalcScore().setFractionOfIterationsToStartScoreMSA(0.75);
config.strategy().setFractionOfIterationsToDisableInnovation(0.75);
// Need to store more plans because of plan types
config.strategy().setMaxAgentPlanMemorySize(8);

config.vspExperimental().setVspDefaultsCheckingLevel(VspExperimentalConfigGroup.VspDefaultsCheckingLevel.ignore);

} else if (mode == CalibrationMode.routeChoice) {
Expand Down Expand Up @@ -287,15 +273,14 @@ protected Config prepareConfig(Config config) {
@Override
protected void prepareScenario(Scenario scenario) {

/*

if (mode == CalibrationMode.cadyts)
// each initial plan needs a separate type, so it won't be removed
for (Person person : scenario.getPopulation().getPersons().values()) {
for (int i = 0; i < person.getPlans().size(); i++) {
person.getPlans().get(i).setType(String.valueOf(i));
}
}
*/

if (planIndex != null) {

Expand Down Expand Up @@ -391,16 +376,12 @@ public ScoringFunction createNewScoringFunction(Person person) {

final ScoringParameters params = parameters.getScoringParameters(person);

// Only cadyts is scored
// sumScoringFunction.addScoringFunction(new CharyparNagelLegScoring(params, controler.getScenario().getNetwork()));
// sumScoringFunction.addScoringFunction(new CharyparNagelActivityScoring(params));
// sumScoringFunction.addScoringFunction(new CharyparNagelAgentStuckScoring(params));

// TODO: change the scoring type in the cadyts module
// to FLOW VEHH
sumScoringFunction.addScoringFunction(new CharyparNagelLegScoring(params, controler.getScenario().getNetwork()));
sumScoringFunction.addScoringFunction(new CharyparNagelActivityScoring(params));
sumScoringFunction.addScoringFunction(new CharyparNagelAgentStuckScoring(params));

final CadytsScoring<Link> scoringFunction = new CadytsScoring<>(person.getSelectedPlan(), config, cadytsContext);
scoringFunction.setWeightOfCadytsCorrection(weight * config.planCalcScore().getBrainExpBeta());
scoringFunction.setWeightOfCadytsCorrection(10 * config.planCalcScore().getBrainExpBeta());
sumScoringFunction.addScoringFunction(scoringFunction);

return sumScoringFunction;
Expand Down

0 comments on commit f3207c1

Please sign in to comment.