20 package org.matsim.core.replanning.annealing;
22 import java.util.EnumMap;
23 import java.util.HashMap;
24 import java.util.List;
26 import java.util.stream.Collectors;
37 public static final String
GROUP_NAME =
"replanningAnnealer";
57 final Map<String, String> comments = super.getComments();
58 comments.put(
ACTIVATE_ANNEALING_MODULE,
"Activate the scaling of replanning modules using an annealing approach rather than fixed rates.");
67 throw new IllegalArgumentException(type);
73 throw new IllegalArgumentException(module.
getName());
83 throw new IllegalArgumentException(
set.
getName());
92 final EnumMap<AnnealParameterOption, Map<String,AnnealingVariable>> map =
97 var paramsPerSubpopulation = map.computeIfAbsent(name,a->new HashMap<>());
100 throw new IllegalStateException(
"several parameter sets for variable " + name +
" and subpopulation "+subpopulation);
108 if (previousMap!=null){
110 if (previous != null) {
117 super.addParameterSet(params);
228 Map<String, String> map = super.getComments();
230 "this parameter enters the exponential and sigmoid formulas. May be an iteration or a share, i.e. 0.5 for halfLife at 50% of iterations.");
231 map.put(
SHAPE_FACTOR,
"see comment of parameter annealType.");
232 map.put(
ANNEAL_TYPE,
"options: linear, exponential, geometric, msa, sigmoid and disabled (no annealing). sigmoid: 1/(1+e^(shapeFactor*(it - halfLife))); geometric: startValue * shapeFactor^it; msa: startValue / it^shapeFactor. Exponential: startValue / exp(it/halfLife)");
234 "list of config parameters that shall be annealed. Currently supported: globalInnovationRate, BrainExpBeta, PathSizeLogitBeta, learningRate. Default is globalInnovationRate");
235 map.put(
SUBPOPULATION,
"subpopulation to have the global innovation rate adjusted. Not applicable when annealing with other parameters.");
236 map.put(
START_VALUE,
"start value for annealing.");
237 map.put(
END_VALUE,
"final annealing value. When the annealing function reaches this value, further results remain constant.");
void setActivateAnnealingModule(boolean activateAnnealingModule)
Map< String, String > getComments()
boolean isActivateAnnealingModule()
void addParameterSet(final ConfigGroup set)
Map< String, String > getComments()
AnnealOption getAnnealType()
static final String ANNEAL_PARAM
AnnealParameterOption annealParameter
void setEndValue(double endValue)
void setAnnealType(String annealType)
List< AnnealingVariable > getAllAnnealingVariables()
static final String SUBPOPULATION
static final String START_VALUE
ReplanningAnnealerConfigGroup()
static final String SHAPE_FACTOR
void setAnnealParameter(String annealParameter)
void setShapeFactor(double shapeFactor)
static final String HALFLIFE
static final String GROUP_NAME
void setHalfLife(double halfLife)
String getSubpopulation()
ConfigGroup createParameterSet(final String type)
final Map< String, ? extends Collection<? extends ConfigGroup > > getParameterSets()
Map< AnnealParameterOption, Map< String, AnnealingVariable > > getAnnealingVariablesPerSubpopulation()
void setStartValue(Double startValue)
static final String ANNEAL_TYPE
static final String END_VALUE
boolean activateAnnealingModule
final TreeMap< String, String > params
void setAnnealParameter(AnnealParameterOption annealParameter)
void setAnnealType(AnnealOption annealType)
boolean removeParameterSet(final ConfigGroup set)
static final String ACTIVATE_ANNEALING_MODULE
void setDefaultSubpopulation(String defaultSubpop)
void addAnnealingVariable(final AnnealingVariable params)
void checkParameterSet(final ConfigGroup module)
static final String GROUP_NAME
AnnealParameterOption getAnnealParameter()