EMAworkbench
EMAworkbench copied to clipboard
Output Space Exploration using novelty search like optimization
OpenMole is a java package for exploring the behavior of simulation models. It contains an interesting novelty search inspired way of exploring the model output space. It might be worthwhile to add a similar algorithm to the workbench.
In short, the n-dimensional output space is discretized (like with ε-archiving). For each grid cell, the total number of experiments in that box is tracked. For each generation of the evolution, selection proportionally favors grid cells with few solutions. The selected individuals are combined using a crossover operator and possibly mutated to create new experiments.
It should be relatively straightforward to set up this type of algorithm drawing on platypus-opt. It will involve a new method on the evaluator next to perform_experiments
, optimize
, and robust_optimize
. In addition, a new custom selector to be used within a platypus-opt algorithm is required.
I now have a working prototype in the branch output_space_exploration. There is still some work to be done including some more testing of the algorithm itself, documenting the code, and adding unit tests, but at least there now is a successfully working prototype. See this notebook for the algorithm in action. Making the code work also necessitated various changes in evaluators.py, and optimization.py. Again, docs might have to be updated abit.