<div dir="ltr"><div><div><div><div><div><div>I have been using Robert Kern's implementation of the Differential Evolution (DE) genetic algorithm for a decade, for the purpose of guessimating initial parameter estimates for curve fitting and surface fitting in my oprn source pyeq2 fitting library.<br><br></div>I can't find anything that works better, which gives rise to my current problem.<br><br></div>In trying to improve performance of my fitting library, I tried to use GPU calculations for each generation of the genetic algorithm, I found the following:<br><br></div>1) Robert's 2005 implementation of DE is not parallelizeable, as each crossover withing a generation can affect the population from which new items will be created.  That is, within a given generation the population *changes* as the algorithm runs the generation itself, and it must run serially in it's present form.<br><br></div>2) I can rework the algorithm to be parallelizeable by separating out "crossover", "breeding" and "evolving" into three separate steps, but months of testing show that population size and number of generations must beconsiderably  increased to match the results from Robert's version.  That is, making the algorithm parallelizable means slowing it down so I can speed it up!<br><br></div>I would like to increase performance, but cannot find any way to equal Robert's results without reducing performance prior to parallelization.<br><br>Any suggestions?<br><br></div>James<br></div>