|
1 | 1 | [section Artificial ant] |
2 | | -[import ../examples/artificial_ant/ant_simulation_nodes.hpp] |
3 | | -[import ../examples/artificial_ant/ant_simulation.hpp] |
4 | | -[import ../examples/artificial_ant/artificial_ant_main.cpp] |
5 | | -[import ../examples/artificial_ant/ant_simulation_tests_main.cpp] |
| 2 | +[import ../examples/artificial_ant/nodes.hpp] |
| 3 | +[import ../examples/artificial_ant/simulation.hpp] |
| 4 | +[import ../examples/artificial_ant/main.cpp] |
| 5 | +[import ../examples/artificial_ant/detail/artificial_ant_tests.cpp] |
6 | 6 | [import ../examples/artificial_ant/board.hpp] |
7 | 7 | [import ../examples/artificial_ant/santa_fe_trail.hpp] |
8 | 8 |
|
@@ -147,14 +147,16 @@ In this part the node_generator is initialized, with a list of `gpcxx::node_gene |
147 | 147 |
|
148 | 148 | [envolve_settings] |
149 | 149 |
|
150 | | -* `population_size` how many individual, should be competing. Bigger population increases the resource's usage (run time and memory) but also decreases the time to find a solution. |
151 | | -* `generation_max` at which generation should gpcxx stop if other break up condition are meet (e.g. an optimal solution was found). |
152 | | -* `number_elite` [/ TODO ] |
153 | | -* `mutation_rate` how often a node should be changed randomly |
154 | | -* `crossover_rate` [/ TODO ] |
155 | | -* `reproduction_rate` [/ TODO ] |
| 150 | +* `population_size` how many individual should be competing. Bigger population increases the resource's usage (run time and memory) but also decreases the time to find a solution. |
| 151 | +* `generation_max` at which generation should gpcxx stop. If no other break up condition are meet (e.g. an optimal solution was found). |
| 152 | +* `number_elite` how many of the top individual should directly cloned to the next generation, without changing. |
| 153 | +* `mutation_rate` how often a node should be changed randomly. |
| 154 | +* `crossover_rate` the rate at which crossover operation should happen |
| 155 | +* `crossover_internal_point_rate` while doing crossover operations, which kind of node should be favored. Internal nodes caring more genetic information, in comparison to terminals. |
| 156 | +* `reproduction_rate` the rate at which a direct clone of an individual should be made (not rank based in difference to number_elite) |
156 | 157 | * `min_tree_height` and `max_tree_height` how deep can the tree be, max_tree_height limits the size of the individual. Big individuals are slower to evaluate, but can handle more complex problems. In comparison, `min_tree_height` can be set to 1 up to `max_tree_height`. An individual can stay as small it wants, as long it can compete against other/bigger individuals. |
157 | | -* `tournament_size` [/ TODO ] |
| 158 | +* `init_max_tree_height` how big should be the individual at the first generation. |
| 159 | +* `tournament_size` how many random individual should be chosen for the competing. The winner is chosen by rank of the fitness. Small values allows week individual also to reproduce. If the size gets bigger, the chance that a high performance individual is chosen gets higher, this leads in a dominating situation. |
158 | 160 |
|
159 | 161 | These settings have direct influence on how fast a solution is found. In some cases it makes sens to adjust these settings, but mostly it will just cut the run time. While optimizing these setting, the program could find a solution by its self, just with a longer run time. |
160 | 162 | The critical settings for memory usage are `population_size` and `max_tree_height`, if these values are to big for the host PC, the operating system will start to move memory to the swapping area and this will dramatic increase the run time of the application. |
|
0 commit comments