-
Notifications
You must be signed in to change notification settings - Fork 77
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
L-SHADE implementation #390
Conversation
Thank you, @AlesGartner for all the hard work! I want to ask @zStupan for an initial review of this implementation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! We can merge if the tests pass and the algorithms produce similar results to the ones in the paper.
Re-styled shade.py and test_shade.py and updated util/factory.py and Algorithms.md
@GregaVrbancic, can you please check the following issue regarding the flake settings? from flake8.options.config import ConfigFileFinder @AlesGartner, are the results achieved by your implementation similar to those provided by the original implementation? Can you please also compare your results with the original publication? |
Changed where population sort occurs and changed x_pbest generation in cross_curr2pbest1 + misc changes
I did some tests on cec2014 functions using the NiaPy-examples repo. I ran my L-SHADE implementation with default parameters (which i assume run_cec.py uses)of population_size= 180, extern_arc_rate= 2.6, pbest_factor=0.11 and hist_mem_size=6 which i believe where used in the publication i did 51 runs on test functions 2, 5, 14, 19 and 27 of dimensionality D=10 and got the following results:
Results in the publication:
|
Thanks @AlesGartner! It looks consistent. Can you please also copy one or two results tables for the dimensions higher than 10, e.g., 20, 30, or 50? When #391 is ready, we can merge this PR. |
I ran tests on D=30 and D=50, but these took really long to finish, so i only did 10 runs per problem function. D=30these tests where ran with population_size = 540 (18 * D)
Results in the publication(based on 51 runs):
D=50these tests where ran with population_size = 900 (18 * D)
Results in the publication(based on 51 runs):
|
fixed a mistake in the evolution function + small changes
Summary
Added Implementation Success-history based adaptive differential evolution algorithm with Linear population size reduction in shade.py. Also added test (test_shade.py) and example (run_shade) files and updated algorithms/modified/innit.py .
The algorithm is explained this article.
I created a Individual class SolutionSHADE for the algorithm. SolutionSHADE additionally stores f and cr values of each Individual.
The SuccessHistoryAdaptiveDifferentialEvolution class implements the SHADE 1.1 algorithm which is the base for the L-SHADE algorithm implemented in the LpsrSuccessHistoryAdaptiveDifferentialEvolution class.
The algorithm uses the current-to-pbest mutation strategy with binomial crossover which is implemented in the cross_curr2pbest1 function. Trial vectors created by this function are repaired with the parent_medium function.