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; } }
assertEquals( "wrong config template for "+msg, initialGroup.getExternalExeConfigTemplate(), inputConfigGroup.getExternalExeConfigTemplate() ); initialGroup.getExternalExeTimeOut(), inputConfigGroup.getExternalExeTimeOut() ); initialGroup.getExternalExeTmpFileRootDir(), inputConfigGroup.getExternalExeTmpFileRootDir() ); initialGroup.getFractionOfIterationsToDisableInnovation(), inputConfigGroup.getFractionOfIterationsToDisableInnovation(), MatsimTestUtils.EPSILON ); initialGroup.getMaxAgentPlanMemorySize(), inputConfigGroup.getMaxAgentPlanMemorySize() ); initialGroup.getPlanSelectorForRemoval(), inputConfigGroup.getPlanSelectorForRemoval() ); initialGroup.getStrategySettings().size(), inputConfigGroup.getStrategySettings().size() );
private StrategySettings getStrategySettings(final Id<StrategySettings> index, final boolean createIfMissing) { StrategySettings settings = null; // should be in a map, but it is difficult to keep consistency with the // delegate... for ( StrategySettings s : getStrategySettings() ) { if ( !s.getId().equals( index ) ) continue; if ( settings != null ) throw new IllegalStateException( "several settings with id "+index ); settings = s; } if (settings == null && createIfMissing) { settings = new StrategySettings(index); addStrategySettings( settings ); } return settings; }
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); } }
/** * Tests that only the known param-names are accepted, and no others. * * @author mrieser */ @Test public void testParamNames() { StrategyConfigGroup configGroup = new StrategyConfigGroup(); configGroup.addParam("maxAgentPlanMemorySize", "3"); configGroup.addParam("Module_1", "ReRoute"); configGroup.addParam("ModuleProbability_1", "0.5"); configGroup.addParam("ModuleDisableAfterIteration_1", "20"); try { configGroup.addParam("ModuleWrong_1", "should fail"); fail("Expected to get an IllegalArgumentException, but got none."); } catch (IllegalArgumentException e) { log.info("Catched IllegalArgumentException, as expected: " + e.getMessage()); } assertEquals("unexpected number of strategy settings", 1, configGroup .getStrategySettings().size()); }
config.qsim().setMainModes(mainModeList); config.strategy().setMaxAgentPlanMemorySize(5); config.strategy().addStrategySettings(strategySettings); }{ StrategySettings strategySettings = new StrategySettings(); strategySettings.setStrategyName("ReRoute"); strategySettings.setWeight(0.2); config.strategy().addStrategySettings(strategySettings);
strat.setWeight(0.0); strat.setDisableAfter(config.controler().getLastIteration()); config.strategy().addStrategySettings(strat);
public static Id<StrategySettings> createAvailableStrategyId(Config config) { long maxStrategyId = 0; Iterator<StrategySettings> iterator = config.strategy().getStrategySettings().iterator(); while(iterator.hasNext()){ maxStrategyId = Math.max(maxStrategyId, Long.parseLong(iterator.next().getId().toString())); } return Id.create(maxStrategyId + 1, StrategySettings.class); }
Collection<StrategySettings> settingsColl = config.strategy().getStrategySettings(); for ( StrategySettings settings : settingsColl ) { if ( settings.getStrategyName().equalsIgnoreCase("ChangeExpBeta") ) { if ( config.strategy().getFractionOfIterationsToDisableInnovation()==Double.POSITIVE_INFINITY ) { problem = true ; System.out.flush() ; for ( StrategySettings it : config.strategy().getStrategySettings() ) { if ( DefaultStrategy.TimeAllocationMutator.equals( it.getName() ) ) { usingTimeMutator = true ; for ( StrategySettings settings : config.strategy().getStrategySettings() ) { if ( settings.getStrategyName().contains("Mode") ) { containsModeChoice = true ;
@Override public void install() { if (getConfig().strategy().getPlanSelectorForRemoval().equals(DefaultPlansRemover.WorstPlanSelector.toString())) { bindPlanSelectorForRemoval().to(WorstPlanForRemovalSelector.class); if (getConfig().strategy().getPlanSelectorForRemoval().equals(DefaultPlansRemover.SelectRandom.toString())) { bindPlanSelectorForRemoval().to(new TypeLiteral<RandomPlanSelector<Plan, Person>>(){}); if (getConfig().strategy().getPlanSelectorForRemoval().equals(DefaultPlansRemover.SelectExpBetaForRemoval.toString())) { bindPlanSelectorForRemoval().toProvider(ExpBetaPlanSelectorForRemoval.class); if (getConfig().strategy().getPlanSelectorForRemoval().equals(DefaultPlansRemover.ChangeExpBetaForRemoval.toString())) { bindPlanSelectorForRemoval().toProvider(ExpBetaPlanChangerForRemoval.class); if (getConfig().strategy().getPlanSelectorForRemoval().equals(DefaultPlansRemover.PathSizeLogitSelectorForRemoval.toString())) { bindPlanSelectorForRemoval().toProvider(PathSizeLogitSelectorForRemoval.class); for (StrategyConfigGroup.StrategySettings settings : getConfig().strategy().getStrategySettings()) { usedStrategyNames.add(settings.getStrategyName());
settings.setStrategyName(DefaultPlanStrategiesModule.DefaultSelector.BestScore.toString()); settings.setWeight(0.5); config.strategy().addStrategySettings(settings); settings.setStrategyName(DefaultPlanStrategiesModule.DefaultSelector.ChangeExpBeta.toString()); settings.setWeight(0.5); config.strategy().addStrategySettings(settings); settings.setStrategyName(DefaultPlanStrategiesModule.DefaultStrategy.TimeAllocationMutator.toString()); settings.setWeight(0.1); config.strategy().addStrategySettings(settings); settings.setWeight(0.1); settings.setDisableAfter(11); config.strategy().addStrategySettings(settings); config.strategy().setFractionOfIterationsToDisableInnovation(0.66);
private ConfigGroup toUnderscoredModule(final StrategyConfigGroup initialGroup) { // yyyy is this method/this execution path still necessary? Maybe we need to be able to read config v1, but certainly // we don't need to WRITE it, do we? kai/mz, nov'15 final ConfigGroup module = new ConfigGroup( initialGroup.getName() ); for ( Map.Entry<String, String> e : initialGroup.getParams().entrySet() ) { log.info( "add param "+e.getKey() ); module.addParam( e.getKey() , e.getValue() ); } for ( StrategySettings settings : initialGroup.getStrategySettings() ) { final Id<StrategySettings> id = settings.getId(); module.addParam( "Module_"+id , settings.getStrategyName() ); module.addParam( "ModuleProbability_"+id , ""+settings.getWeight() ); module.addParam( "ModuleDisableAfterIteration_"+id , ""+settings.getDisableAfter() ); module.addParam( "ModuleExePath_"+id , settings.getExePath() ); module.addParam( "ModuleSubpopulation_"+id , settings.getSubpopulation() ); } return module; }
matsimControler.getConfig().strategy().setPlanSelectorForRemoval("DiversityGeneratingPlansRemover"); matsimControler.getConfig().strategy().setMaxAgentPlanMemorySize(numberOfPlansOnSlave);
setMaxPlansPerAgent(strategyConfigGroup.getMaxAgentPlanMemorySize()); * strategyConfigGroup.getFractionOfIterationsToDisableInnovation() + controlerConfigGroup.getFirstIteration()); log.info("global innovation switch off after iteration: " + globalInnovationDisableAfter);
StrategyConfigGroup configGroup = new StrategyConfigGroup(); configGroup.addParam("maxAgentPlanMemorySize", "3"); configGroup.addParam("Module_1", "ReRoute"); configGroup.addParam("ModuleProbability_1", "0.5"); configGroup.addParam("ModuleDisableAfterIteration_1", "20"); configGroup.checkConsistency(ConfigUtils.createConfig()); configGroup.addParam("Module_2", "TimeAllocationMutator"); configGroup.addParam("ModuleProbability_2", "0.4"); configGroup.checkConsistency(ConfigUtils.createConfig()); configGroup.addParam("Module_3", "KeepLastSelected"); configGroup.addParam("ModuleProbability_3", "0.2"); configGroup.checkConsistency(ConfigUtils.createConfig()); configGroup.addParam("Module_5", "SelectBest"); try { configGroup.checkConsistency(ConfigUtils.createConfig()); fail("Expected to fail consistency check with incomplete Module_5, but did not fail."); } catch (RuntimeException e) { configGroup.addParam("ModuleProbability_5", "0.0"); configGroup.checkConsistency(ConfigUtils.createConfig()); configGroup.addParam("ModuleProbability_6", "0.1"); try { configGroup.checkConsistency(ConfigUtils.createConfig()); fail("Expected to fail consistency check with incomplete Module_6, but did not fail."); } catch (RuntimeException e) {
@Override public void install() { bind(TravelTime.class).toInstance(travelTime); if (scenario.getConfig().strategy().getPlanSelectorForRemoval().equals("DiversityGeneratingPlansRemover")) { bindPlanSelectorForRemoval().toProvider(DiversityGeneratingPlansRemover.Builder.class); } } });
this.modules.put(FacilitiesConfigGroup.GROUP_NAME, this.facilities); this.strategy = new StrategyConfigGroup(); this.modules.put(StrategyConfigGroup.GROUP_NAME, this.strategy);
private void prepareExternalExeConfig() { Config extConfig; String configFileName = this.scenario.getConfig().strategy().getExternalExeConfigTemplate(); if (configFileName == null) { extConfig = new Config(); } else { extConfig = new Config(); ConfigReader reader = new ConfigReader(extConfig); reader.readFile(configFileName); } // Change scenario config according to given output- and input-filenames: events, plans, network extConfig.setParam(SCENARIO, SCENARIO_INPUT_PLANS_FILENAME, this.outFileRoot + "/" + this.modulePrefix + ExternalInFileName); extConfig.setParam(SCENARIO, SCENARIO_WORKING_PLANS_FILENAME, this.outFileRoot + "/" + this.modulePrefix + ExternalOutFileName); extConfig.setParam(SCENARIO, SCENARIO_WORKING_EVENTS_TXT_FILENAME, this.controler.getIterationFilename(this.currentIteration - 1, "events.txt")); String networkFilename = this.scenario.getConfig().findParam("network", "inputNetworkFile"); extConfig.setParam(SCENARIO, SCENARIO_NETWORK_FILENAME, networkFilename); new ConfigWriter(extConfig).write(this.outFileRoot + this.modulePrefix + ExternalConfigFileName); }
config.strategy().setMaxAgentPlanMemorySize(5); config.strategy().addStrategySettings(bestScore); config.strategy().addStrategySettings(reRoute);
strategySettings.addAll(config.strategy().getStrategySettings()); Map<Integer, Double> selectors = new HashMap<>(); Map<Integer, Double> mutators = new HashMap<>(); config.strategy().clearStrategySettings(); for (StrategyConfigGroup.StrategySettings strategySetting : strategySettings) { config.strategy().addStrategySettings(strategySetting); borrowingSetting.setStrategyName("ReplacePlanFromSlave"); borrowingSetting.setDisableAfter(maximumIterationForMutationDisabling > 0 ? maximumIterationForMutationDisabling : disableAfterIteration); config.strategy().addStrategySettings(borrowingSetting); this.innovationEndsAtIter = maximumIterationForMutationDisabling > 0 ? maximumIterationForMutationDisabling : disableAfterIteration;