Since the evolutionary framework requires several settings for each of the modules being used, a separate file is used to specify the correct settings for a run of an evolution.
This file contains functions, each of which generates a specific set of settings to run evolution on a specific problem
All fields have to be set with some value or other. There are no default values in this framework, by design
The evolutionary algorithm to be run (defined in GA.py)
Set this to true to run in-function assert statements that check contracts. False otherwise
The maximum number of generations for which evolution shall be run after which it will be stopped even if an optimal solution has not yet been discovered
The known optimal fitness score of the problem. Setting this to None or '' will simulate negative and positive infinity, respectively
The number of individuals in the population during evolution
The number of crossover operations per generation
A dictionary that remembers the fitness values of all individuals. This is used as an optimization. Usually, this is an empty dictionary This can be deactivated by changing Individual.__hash__ to something that will be unique to each individual, regardless of genetic makeup
The function that generates the initial population
A tuple containing the parameters to send to genfunc in the correct order
The function that returns the fitness evaluation of an individual. By default this is set to fitness.score. .. note:
It is advisable to leave this as ``fitness.score``, especially for multi-chromosome individuals.
This is a 3-tuple
Index | Type | Description |
---|---|---|
0 | list of functions | the i th function listed here will be used to compute the fitness of the i th chromosome of the individuals |
1 | list of tuples | the i th tuple listed here contains the parameters (in the correct order) for the i th function in the list in index 0 |
2 | dictionary | SCORES |
Warning
The parameters listed do NOT include any reference to the individual whose fitness will be computed. The individual will be supplied by the main evolution function itself. This is because the individual is chosen by the selection function and therefore cannot be known at the time of making these settings
The selection function by which individuals will be selected for crossover
A tuple of parameters (in the correct order) for the selection function
Warning
The parameters listed do NOT include any reference to the population from which individuals will be selected. The population will be supplied by the main evolution function itself. This is because the population keeps changing over time and therefore cannot be known at the time of making these settings
The function that performs crossover between two individuals. This is usually either oneChildCrossover or twoChildCrossover. These crossover functions return 1 or 2 children as the result of crossover, respectively.
A list of crossover functions. The i``th function in this list will be used (along with the ``i``th tuple of parameters from ``crossparams) to crossover the ``i``th pair of corresponding chromosomes of two individuals.
A tuple of parameters (in the correct order) for the crossover function
Warning
The parameters listed do NOT include any reference to the individuals to be crossed over. These individuals will be supplied by the main evolution function itself. This is because the individuals are chosen by the selection function and therefore cannot be known at the time of making these settings
The function that will mutate a given individual
A tuple of parameters (in the correct order) for the crossover function
Warning
The parameters listed do NOT include any reference to the individual to be mutated. This individual will be supplied by the main evolution function itself. This is because the individual is chosen at random (with probability) and therefore cannot be known at the time of making these settings
The probability of crossover occurring. Represented as a float in [0, 1]
The probability of mutation occurring. Represented as a float in [0, 1]
A set of functions that require a roulette wheel. This is used later in the automated computation some settings
A bool that determines whether the evolutionary algorithm must compute a roulette wheel for selection
Warning
This is an automatically set parameter. Do not alter it.
A boolean flag that determines if visualization is enabled
The width of the screen created for visualization
The height of the screen created for visualization
A tuple of parameters (in the correct order) required to make the screen on which the visualization will be drawn
A tuple of parameters (in the correct order) required to draw the visualization on the screen
The font with which any text should be written on screen during visualization
The parameters for rendering font as a tuple 9in the correct order)
A tuple of parameters (in the correct order) required to place any text in the correct place on screen during visualization
A list of parameter names that should be present in the settings. The settings are checked for the entries in sanity before any evolution is run, to ensure that all parameters are provided
A dictionary of the settings to run evolution
Warning
It is generally a bad idea to alter statements that are not assignment statements. This is because they are automations that generate some settings, thus taking the responsibility of generating those settings away from the programmer. Altering them may have unintended side-effects
Warning
It is generally a bad idea to alter statements that are inside the if visualize block. This is a block that automates the inclusion of settings (both into the returned settings and the sanity) for visualization if it is enabled