-
-
Notifications
You must be signed in to change notification settings - Fork 81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Differential Evolution Algorithm #499
Comments
I'm new to rust but am happy to work on adding this algorithm to argmin-rs. It's a bit of a small task to help me learn. I may have a question or two along the way. From reading the Particle Swarm Optimization, I think it will be relatively simple to use that as an example outline for how to implement the algorithm in the argmin-rs. framework. |
I think I'm most of the way to having an initial implementation working but I'm getting hung up on the following. Part of the evolution step involves constructing a state vector where some of the elements come from vector x and others come from a "mutated" vector. To borrow from the wikipedia page, here's a text description of what's happening.
This just requires being able to modify indexed values of each state vector which feels like it should be trivial, but I'm having trouble making it happen within the framework where type I might be able to make it work for me individually, but part of my objective for this initial rust project is to make it compliant with the overall library. Any help pointing me in the right direction would be greatly appreciated. |
I am very sorry for the extremely late reply. I would love to see Differential Evolution in argmin, and I am happy to support this development as much as I can. I hope you are still interested, despite the long wait for my response!
It is currently not possible to index vectors, but it would be very useful to be able to do so. Some initial work on this has been done a while ago in PR #225 which unfortunately wasn't finished and remains unmerged. What is essentially needed is a new trait in Again, I am very sorry for the delay and I hope you are still interested in continuing this work. It would be highly appreciated! |
Thanks for the helpful response! I was side tracked with other life things but am getting interested in doing this again. Since that PR is quite stale, I'll probably just grab the |
Differential evolution would be an addition to the evolutionary algorithms implemented in argmin-rs. The only other I've seen so far is Particle Swarm Optimization. It's good that this algorithm implementation already exists because some things like PopulationState already exists.
A "full" implementation would have a relatively large list of different evolution strategies (see scipy.optimize.differential_evolution for examples). I think it would be reasonable for the initial implementation in argmin-rs to have a couple of different strategies available and to be implemented such that it's relatively simple to add additional strategies in the future.
The text was updated successfully, but these errors were encountered: