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); } }
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; }
config.strategy().addStrategySettings(strategySetting); borrowingSetting.setStrategyName("ReplacePlanFromSlave"); borrowingSetting.setDisableAfter(maximumIterationForMutationDisabling > 0 ? maximumIterationForMutationDisabling : disableAfterIteration); config.strategy().addStrategySettings(borrowingSetting); this.innovationEndsAtIter = maximumIterationForMutationDisabling > 0 ? maximumIterationForMutationDisabling : disableAfterIteration;
strategySettings.setStrategyName("ChangeExpBeta"); strategySettings.setWeight(0.8); config.strategy().addStrategySettings(strategySettings); }{ StrategySettings strategySettings = new StrategySettings(); strategySettings.setStrategyName("ReRoute"); strategySettings.setWeight(0.2); config.strategy().addStrategySettings(strategySettings);
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; } }
config.strategy().addStrategySettings(bestScore); config.strategy().addStrategySettings(reRoute);
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);
strat.setWeight(0.0); strat.setDisableAfter(config.controler().getLastIteration()); config.strategy().addStrategySettings(strat);
strategySettings.setStrategyName("ChangeTripMode"); strategySettings.setWeight(1.0); config.strategy().addStrategySettings(strategySettings);
stratSets.setStrategyName(DefaultPlanStrategiesModule.DefaultStrategy.ReRoute.toString()); stratSets.setWeight(1.0); config.strategy().addStrategySettings(stratSets); final double traveling = -1200.0; config.planCalcScore().getModes().get(TransportMode.car).setMarginalUtilityOfTraveling(traveling);
stratSets.setStrategyName( DefaultSelector.ChangeExpBeta.toString() ); stratSets.setWeight(1.); config.strategy().addStrategySettings( stratSets );
tam.setStrategyName("TimeAllocationMutator"); tam.setWeight(1.0); config.strategy().addStrategySettings(tam);
strategySettings.setStrategyName("ChangeExpBeta"); strategySettings.setWeight(1.0); scg.addStrategySettings(strategySettings);
strat.setStrategyName(DefaultStrategy.ReRoute.toString()); strat.setWeight(1.); config.strategy().addStrategySettings(strat);