Parallel optimization/Genetic algorithm/Genetic programming

Hi,

I was planning to fully port a project to Julia. Checking the evolutionary optimization packages in Julia, I came across a few. It seems that the most mature one, Wallace (https://github.com/ChrisTimperley/Wallace.jl), which had GA (genetic algorithm) and GP (genetic programming) is not maintained since early julia versions. The other ones, that I came across, have limited documentation so making it hard to know if they are retired or not:
https://github.com/wildart/Evolutionary.jl https://github.com/WestleyArgentum/GeneticAlgorithms.jl

Does anyone have an experience with these (or other candidates for GA and GP)? Are there any parallel (CPU) or GPU implementations of GA/GP (and in general multiobjective optimization )? something like this:
https://www.mathworks.com/help/optim/examples/minimizing-an-expensive-optimization-problem-using-parallel-computing-toolbox.html#d120e1035

Thanks
Nima

https://github.com/robertfeldt/BlackBoxOptim.jl might be worth a look.

Also Evolutionary.jl seems to be actively developed. Several commits within the last month.

1 Like

Thanks,

I checked BlackBoxOptim.jl… unfortunately, it has neither GA or GP (it has evolutionary strategy and differential evo which are evolutionary algorithms but not the same as genetic algorithm); though it seems to be designed for multi-objective optim. Also, I noticed that it has “build failure”.

Evolutionary.jl has zero documentation and no example. Have you seen doc/example elsewhere?

any other suggestions?
Thanks

https://evolutionaryjl.readthedocs.io/en/stable/

EDIT: Sorry, I didn’t look closely. There is this generated doc, but there is not much content…

Hi All, I, too, am trying to find a GA optimiser for Julia, and I think Evolutionary.jl is in the works, but I tried using it and (IMO) it doesn’t work yet (except for some toy examples). However, the author seems responsive to feedback and seems to be actively working on it.

Oddly, I have managed to get BlackBoxOptim to do GA’s using trickery (e.g. limiting continuous variables to [0,1] and then rounding for binary) but that’s all I have found. Surely someone out there has a better idea?

I saw something in sklearn which I know Julia has, but I don’t know to use it.
Perhaps there is another package that has GA that has been ported from python?

Thanks for any ideas

[Update - since this post, the Author of Evolutionary has updated the package and provided additional documentation, and I have indeed gotten the algorithms to work usefully on examples in both GA and CMAES - Thank you Art!]

1 Like