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); }
@Override public void addParam(final String key, final String value) { // adding underscore parameters is still supported for backward compatibility. if (key != null && key.startsWith(MODULE)) { StrategySettings settings = getStrategySettings(Id.create(key.substring(MODULE.length()), StrategySettings.class), true); settings.addParam( "strategyName" , value); } else if (key != null && key.startsWith(MODULE_PROBABILITY)) { StrategySettings settings = getStrategySettings(Id.create(key.substring(MODULE_PROBABILITY.length()), StrategySettings.class), true); settings.addParam( "weight" , value ); } else if (key != null && key.startsWith(MODULE_DISABLE_AFTER_ITERATION)) { StrategySettings settings = getStrategySettings(Id.create(key.substring(MODULE_DISABLE_AFTER_ITERATION.length()), StrategySettings.class), true); settings.setDisableAfter(Integer.parseInt(value)); settings.addParam( "disableAfterIteration" , value ); } else if (key != null && key.startsWith(MODULE_EXE_PATH)) { StrategySettings settings = getStrategySettings(Id.create(key.substring(MODULE_EXE_PATH.length()), StrategySettings.class), true); settings.addParam( "executionPath" , value ); } else if (key != null && key.startsWith(MODULE_SUBPOPULATION)) { StrategySettings settings = getStrategySettings(Id.create(key.substring(MODULE_SUBPOPULATION.length()), StrategySettings.class), true); settings.addParam( "subpopulation" , value ); } else { delegate.addParam( key , value ); } }
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); } }
for (StrategyConfigGroup.StrategySettings settings : getConfig().strategy().getStrategySettings()) { String name = settings.getStrategyName() ; if (name.equals("ExternalModule")) {
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); } } } } } }
strategySettings.addAll(config.strategy().getStrategySettings()); Map<Integer, Double> selectors = new HashMap<>(); Map<Integer, Double> mutators = new HashMap<>();
for (StrategyConfigGroup.StrategySettings settings : getConfig().strategy().getStrategySettings()) { usedStrategyNames.add(settings.getStrategyName());
Collection<StrategySettings> settingsColl = config.strategy().getStrategySettings(); for ( StrategySettings settings : settingsColl ) { if ( settings.getStrategyName().equalsIgnoreCase("ChangeExpBeta") ) { 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 ;
/** * 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()); }
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; }
for (StrategySettings setting : event.getServices().getConfig().strategy().getStrategySettings()) { log.info("setting: " + setting.getStrategyName()); log.info("strategyName: " + strategyName);
Collection<StrategySettings> coll = config.strategy().getStrategySettings() ; for ( StrategySettings settings : coll ) { if ( settings.getStrategyName().equals( MY_LOCATION_CHOICE ) ) {
initialGroup.getStrategySettings().size(), inputConfigGroup.getStrategySettings().size() );
Config config = utils.loadConfig(IOUtils.newUrl(ExamplesUtils.getTestScenarioURL("equil"), "config.xml")); config.plans().setInputFile("plans2.xml"); Collection<StrategySettings> settings = config.strategy().getStrategySettings(); for (StrategySettings setting: settings) { if ("ReRoute".equals(setting.getStrategyName())) {