private void setReplanningWeights(Config config, double mutationRate) { if (mutationRate > 1) mutationRate = 0.9999; List<StrategyConfigGroup.StrategySettings> strategySettings = new ArrayList<>(); strategySettings.addAll(config.strategy().getStrategySettings()); Map<Integer, Double> selectors = new HashMap<>(); Map<Integer, Double> mutators = new HashMap<>(); for (int i = 0; i < strategySettings.size(); i++) { StrategyConfigGroup.StrategySettings setting = strategySettings.get(i); if (DistributedPlanStrategyTranslationAndRegistration.SupportedSelectors.keySet().contains(setting.getStrategyName())) selectors.put(i, setting.getWeight()); else { mutators.put(i, setting.getWeight()); } } double mutatorSum = CollectionUtils.sumElements(mutators.values()); double selectorSum = CollectionUtils.sumElements(selectors.values()); // set to new weight for (Map.Entry<Integer, Double> entry : selectors.entrySet()) { strategySettings.get(entry.getKey()).setWeight((1 - mutationRate) * entry.getValue() / selectorSum); } for (Map.Entry<Integer, Double> entry : mutators.entrySet()) { strategySettings.get(entry.getKey()).setWeight(mutationRate * entry.getValue() / mutatorSum); } //put it back in the config config.strategy().clearStrategySettings(); for (StrategyConfigGroup.StrategySettings strategySetting : strategySettings) { config.strategy().addStrategySettings(strategySetting); } }
strategySettings.get(entry.getKey()).setWeight((1 - masterMutationRate - borrowingRate) * entry.getValue() / selectorSum); strategySettings.get(entry.getKey()).setWeight(masterMutationRate * entry.getValue() / mutatorSum); borrowingSetting.setWeight(borrowingRate); borrowingSetting.setStrategyName("ReplacePlanFromSlave"); borrowingSetting.setDisableAfter(maximumIterationForMutationDisabling > 0 ? maximumIterationForMutationDisabling : disableAfterIteration);
public static void substituteStrategies(Config config, boolean quickReplanning, int selectionInflationFactor) { for (StrategyConfigGroup.StrategySettings settings : config.strategy().getStrategySettings()) { String classname = settings.getStrategyName(); if (classname.startsWith("org.matsim.demandmodeling.plans.strategies.")) { classname = classname.replace("org.matsim.demandmodeling.plans.strategies.", ""); settings.setStrategyName(classname); } if (!DistributedPlanStrategyTranslationAndRegistration.isStrategySupported(classname)) { throw new RuntimeException("Strategy " + classname + " not known to be compatible with (Distributed) PSim. Exiting."); } else { if (SupportedMutators.containsKey(classname)) settings.setStrategyName(classname + DistributedPlanStrategyTranslationAndRegistration.SUFFIX); if (SupportedSelectors.containsKey(classname)) { settings.setStrategyName(classname + DistributedPlanStrategyTranslationAndRegistration.SUFFIX); //implement quick replanning by simply multiplying the selector weights by the number of PSim Iterations if (quickReplanning) { settings.setWeight(settings.getWeight() * (double) selectionInflationFactor); } } } } } }
settings.setWeight(0.5); config.strategy().addStrategySettings(settings); settings.setWeight(0.5); config.strategy().addStrategySettings(settings); settings.setWeight(0.1); config.strategy().addStrategySettings(settings); settings.setWeight(0.1); settings.setDisableAfter(11); config.strategy().addStrategySettings(settings);
tam.setWeight(1.0); config.strategy().addStrategySettings(tam);
strat.setWeight(1.); config.strategy().addStrategySettings(strat);
stratSets.setWeight(1.); config.strategy().addStrategySettings( stratSets );
final StrategySettings strategySettings = new StrategySettings(Id.create("1", StrategySettings.class)); strategySettings.setStrategyName("ChangeTripMode"); strategySettings.setWeight(1.0); config.strategy().addStrategySettings(strategySettings);
StrategySettings strategySettings = new StrategySettings(); strategySettings.setStrategyName("ChangeExpBeta"); strategySettings.setWeight(1.0); scg.addStrategySettings(strategySettings);
strat.setWeight(0.0); strat.setDisableAfter(config.controler().getLastIteration()); config.strategy().addStrategySettings(strat);
StrategySettings stratSets = new StrategySettings(Id.create(1, StrategySettings.class)); stratSets.setStrategyName(DefaultPlanStrategiesModule.DefaultStrategy.ReRoute.toString()); stratSets.setWeight(1.0); config.strategy().addStrategySettings(stratSets); final double traveling = -1200.0;
private StrategyConfigGroup createTestConfigGroup() { final StrategyConfigGroup group = new StrategyConfigGroup(); group.setExternalExeConfigTemplate( "bwark" ); group.setExternalExeTimeOut( 999 ); group.setExternalExeTmpFileRootDir( "some/random/location" ); group.setFractionOfIterationsToDisableInnovation( 8 ); group.setMaxAgentPlanMemorySize( 999999 ); group.setPlanSelectorForRemoval( "SelectSomeArbitraryPlan" ); /* scope of settings: minimal */ { final StrategySettings settings = new StrategySettings(); settings.setStrategyName( "MyModule" ); settings.setWeight( 10. ); group.addStrategySettings( settings ); } /* scope of settings: all options */ { final StrategySettings settings = new StrategySettings(); settings.setStrategyName( "YourModule" ); settings.setWeight( 0 ); settings.setDisableAfter( 10 ); settings.setExePath( "path/to/nowhere/" ); settings.setSubpopulation( "sushi_eaters" ); group.addStrategySettings( settings ); } return group; } }