Greetings! Thank you for the high quality documentation (and examples) with this library.
I'm looking to implement a 'distributed pool architecture' [1], [2] using inspyred. This post is mainly to seek advice as to where I should begin with the implementation, and to head off potentially conflicting design assumptions made within inspyred that would be ultimately limiting.
From what I understand, the 'distributed pool architecture' would require me to create the initial population and fitness values external to the EA. Then multiple GA processes would interact with the population pool, sampling a set of the population for [selection, crossover, mutation] and evaluation. Eventually writing back a subset of the new population to the pool based on some replacement rules.
With inspyred I wanted to write out how I think I'll accomplish this, with hopes for some critique.
- Create an evaluator function to wrap my simulation
- Create a generator function that samples the pool
- Create a wrapper for the EA to create instances of the EA until termination
The wrapper for the EA is necessary because the EA will only be interacting with a subset of the population from the pool and will only run for a limited number of generations before terminating and returning candidites back to the pool. This wrapper will have to have its own termination criteria, where as the EA within the wrapper would be set to terminate after a specific amount of generations. Upon internal EA termination, the wrapper would submit individuals back to the pool to overwrite (based on replacement criteria) individuals with less fitness. Then the Wrapper begins again: generator(sample from pool), EA, writeback.
If there are aspects of inspyred that I'm overlooking in this initial concept please let me know.
Reference:
[1] Deb, K., Zope, P., & Jain, A. (2003). Distributed computing of pareto-optimal solutions with evolutionary algorithms. Evolutionary Multi-Criterion Optimization, 534–549. Retrieved from
http://link.springer.com/chapter/10.1007/3-540-36970-8_38
[2] Roy, G., Lee, H., Welch, J. L., Zhao, Y., Pandey, V., & Thurston, D. (2009). A Distributed Pool Architecture for Genetic Algorithms. … , 2009. CEC’09. IEEE …, 1177–1184. doi:10.1109/CEC.2009.4983079