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 (GitHub - ChrisTimperley/Wallace.jl: High-performance evolutionary computation in Julia.), 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:
GitHub - wildart/Evolutionary.jl: Evolutionary & genetic algorithms for Julia GitHub - WestleyArgentum/GeneticAlgorithms.jl: A lightweight framework for writing genetic algorithms in Julia

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:

Thanks
Nima

1 Like

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.

2 Likes

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