Commit f60a56f9 authored by Christian Reuschling's avatar Christian Reuschling
Browse files

Enhanced config file documentation

parent 8541b737
Pipeline #14539 passed with stages
in 1 minute and 9 seconds
......@@ -2,83 +2,107 @@
### Genetic config
# Calculates the fitness as specified by the implementing class, but uses as final fitness the runtime needed to calculate the fitness. Lower score is better in this
# case (lower runtime), cache is disabled. This can be used for searching time-consuming parameters
# Calculates the fitness as specified by the fitness function, but uses as final fitness the runtime needed to calculate the fitness. Lower score is
# better in this case (lower runtime), caches are disabled. This can be used for searching time-consuming parameters
runtimePerformanceCheck=false
# Show more log messages
verbose=true
# If false, if an exception was thrown during fitness calculation, the optimization process won't be interrupted, just a log message will be shown
# If an exception was thrown during fitness calculation, the optimization process won't be interrupted, just a log message will be shown
interruptIfException=true
# After genetic optimization an entropy analysis of the last N generation winners will be shown
# After genetic optimization, an entropy analysis of the last N generation winners will be shown. Here you can specify the number of winners
evaluateLastWinnersCount=42
# Shows a small window with information to the optimization process, e.g. the current generation fitness values
showMonitorGui=true
# Whether to use an in-memory or a persistent cache. In the case of runtimePerformanceCheck=true, the caches are disabled
# Weak references for an in-memory cache. Can help with exploding memory consumption
weakRefCache=false
# if set, a persistent cache is used
# If set, a persistent cache is used. If the value is empty, GenIe uses an in-memory cache
persistentCacheDir=
# if multithreaded, the system uses as many threads as cpu cores
# Parallelize the vector fitness calculations. If multithreaded, the system uses as many threads as cpu cores
singleThreaded=true
## The optimizer first performs a loop over all given values of this parameter, whereby the default(first given) value of the other parameters stay fixed. if true, the
# succeeding genetic run will be skipped
# GenIe first performs a loop over all given values of all parameters, whereby the default value of the other parameters stay fixed. The default
# value of a parameter is the first one specified in the list of possible values. Here you can choose if, after this simple loop, the succeeding
# genetic run will be skipped or not
skipGeneticRun=false
# The names of the parameters that should be absolutely treated as independent. The optimizer performs first a loop over all attribute values, whereby, during iterating
# the values for one attribute, the values for all other attributes are fixed to their FIRST value of their values list in paramNames2DiscreteValSpaces.
# If an attribute is explicitly marked as independent, during the genetic run its value in EACH candidate vector will be set to its best value from the initial loop. Thus,
# this attribute will never get another value beside the best one from the initial loop.
# If it is clear that an attribute isn't influenced by another one/is independent, you can reduce the complexity for finding it's optimal value drastically by setting it
# independent. On the other hand, if you set it independent and it is not, you won't get the optimal parameter value combination.
# The names of the parameters that should be absolutely treated as independent. GenIe first performs a loop over all attribute values, whereby, during
# iterating the values for one attribute, the values for all other attributes are fixed to their FIRST value of their values list in
# paramNames2DiscreteValSpaces.
# If an attribute is explicitly marked as independent, during the genetic run its value in EACH candidate vector will be set to its best value from
# the initial loop. Thus, this attribute will never get another value beside the best one from the initial loop.
# If it is clear that an attribute isn't influenced by another one - it is independent - you can reduce the complexity for finding it's optimal value
# drastically by setting it independent. On the other hand, if you set it independent and it is not, you won't get the optimal parameter value
# combination.
independentParamNames=
# If true, the system will produce the same results in suceeding calls. (This is true beside possible side effects e.g. sort order of same vector fitness values)
# If true, the system will produce the same results in suceeding calls. (This is true beside uncontrollable side effects e.g. sort order of identical
# vector fitness values)
constantRandomSeed=true
# RouletteWheelSelection (random, fitness-proportionate), StochasticUniversalSampling (less random, fitness-proportionate), SigmaScaling (fitness-proportionate, helps to
# avoid early dominance of one/two fit candidates. Amplifies minor fitness differences in more mature populations)
# The selection strategy selects the population candidates that are allowed to produce offsprings. Available are:
# RouletteWheelSelection (random, fitness-proportionate), StochasticUniversalSampling (less random, fitness-proportionate), SigmaScaling (fitness-
# proportionate, helps to avoid early dominance of one/two fit candidates. Amplifies minor fitness differences in more mature populations)
selectionStrategy=SigmaScaling
# The size of the first population. After the first population, the evolution goes further with the specified population size. This is to start wide spreaded and to
# evolve the best candidates more focused afterwards. Can be relevant if you have huge fitness calculation runtimes where every calculation counts.
firstPopulationSize=70
# The population size for each island. Therefore, if you have 5 islands, setting this parameter to 200 will result in 1000 individuals overall, 200 on each island. In the
# case the island count is <=1, it's just the population size of the non-islands generations
# The size of the first population. After the first population, the evolution goes further with the specified population size. This is to start wide
# spreaded and to evolve the best candidates more focused afterwards. Can be relevant if you have huge fitness calculation runtimes where every
# calculation counts.
firstPopulationSize=70
# The population size for each island. Therefore, if you have 5 islands, setting this parameter to 200 will result in 1000 individuals overall, 200 on
# each island. In the case the island count is <=1, it's just the population size of the non-islands generations
populationSize=70
# The number of candidates preserved via elitism on each island. In elitism, a sub-set of the population with the best fitness scores are preserved unchanged in the
# subsequent generation. Candidate solutions that are preserved unchanged through elitism remain eligible for selection for breeding the remainder of the next generation.
# This value must be non-negative and less than the population size. A value of zero means that no elitism will be applied.
eliteCount=0
# The number of islands
islandCount=1
# The number of generations that make up an epoch. Islands evolve independently for this number of generations and then migration occurs at the end of the epoch and the
# next epoch starts. Ignored if the island count is <=1.
# The number of candidates preserved via elitism on each island. In elitism, a sub-set of the population with the best fitness scores are preserved
# unchanged in the subsequent generation. Candidate solutions that are preserved unchanged through elitism remain eligible for selection for breeding
# the remainder of the next generation. This value must be non-negative and less than the population size. A value of zero means that no elitism will
# be applied.
eliteCount=0
# The number of generations that make up an epoch. Islands evolve independently for this number of generations and then migration occurs at the end of
# the epoch and the next epoch starts. Ignored if the island count is <=1
epochLength=-1
#The number of individuals that will be migrated from each island at the end of each epoch. Ignored if the island count is <=1.
#The number of individuals that will be migrated from each island at the end of each epoch. Ignored if the island count is <=1
migrationCount=-1
# Specifies if a lower fitness value is better or vice versa
lowerScoreIsBetter=false
# The optimization process will halt after a specified number of generations passes without improvement in the population's fittest individual
maxNumImprovementGenerationsBreak=70
# The optimization will halt after a specified amount of time
# 8h=28800,12h=43200,1day=86400,2d=172800,3d=259200,10day=864000,18d=1555200
maxDurationSecondsBreak=1555200
# The optimization will halt if a specific fitness value is reached
targetFitnessBreak=1
# Each candidate vector entry gets a name and a list of possible values. These are all values GenIe will check. In the case you have number
# parameters, specify a list of discrete values from your number range
paramNames2DiscreteValSpaces=
{
## The first value will be used as default for the independent parameters check. The count of keys defines the genetic candidates vector length. It can be wise to add
# keys with just one possibility in order to get compatible vectors at succeeding runs, e.g. to have a compatible cache file that offers much more performance than
# calculating from scratch (if relevant)
# The first value of a values list will be used as 'default value' for the independent parameters check. The number of keys/parameter names
# defines the genetic candidates vector length. It can be wise to add keys with just one possibility in order to get compatible vectors for
# succeeding runs with a persistent cache, if you are first unsure if you want to add a parameter to the optimization process or not.
# Example for key-values pair:
#defaultActivation=TANH,LEAKYRELU,RELU
#learningRate=0.1,0.5,0.05,0.01,0.001
# Examples:
# # default value: TANH:
# defaultActivation=TANH,LEAKYRELU,RELU
# # default value: 0.1:
# learningRate=0.1,0.5,0.05,0.01,0.001
summandA=0,1,2,3,4,5,6,7
summandB=0,5,10,15,20,25
......@@ -87,15 +111,36 @@ paramNames2DiscreteValSpaces=
}
# A fitness function can attach metadata to a candidate vector, together with it's calculated fitness. Further, the fitness function recieves a
# candidate vector together with the attached metadata from its parent vectors. GenIe doesn't do anything with this metadata, it is just a possibility
# for fitness functions. The first generation of candidate vectors doesn't have any parents. Thus you can specify the parents metadata for these
# vectors manually
firstGenerationParentMetadata=
{
## All candidate vectors from the first generation will get this parent metadata. The metadata will be given to the fitness function. Fitness functions are able to generate
# new metadata for the evaluated candidate vector, that will be also given as parent metadata to its offsprings.
# Double key entries are not allowed
initialMetadataAtt_1=initVal_1
initialMetadataAtt_2=initVal_2
}
# For using GenIe standalone, you can specify an exec call for the fitness function. This executable will be called for each candidate vector
# evaluation, receiving the candidate vector values as invocation arguments. The last invocation argument will be the parents metadata as Json string.
# GenIe will wait for the process to terminate, looking for a calculation result in its output. This calculation result must follow this example Json
# structure, and should be somewhere at the end of the processes output:
# {
# "fitness":0.0,
# "metadata":{
# "someMetadataKey1":"someMetadataValue",
# "someMetadataKeyN":"someMetadataValue"
# }
# }
fitnessFunctionExecPath=sum23TestFitnessFunction.sh
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment