-
Notifications
You must be signed in to change notification settings - Fork 123
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
Implement MOEA/D - DE #269
Conversation
There are a few compile-time errors, I'll be fixing that over-the-course. I'd like reviews on algorithmic correctness and semantics. |
Just have to fix the tests, a little bit of tinkering aaaand we should be done! I'd like to add other decomposition methods (Bi, Weighted) as part of separated PR so as to avoid bloating :) |
Good news: @zoq, the actual paper preserves diversity by default, but pagmo2 allows user to turn off that feature. By "preserving diversity", I mean to say the optimizer produces a diverse set of population. It does by the following way (as per the paper): The above-mentioned feature can be switched off by disabling |
All tests pass! @zoq could you review this please? I was wondering we could try and compare NSGA2 & MOEA/D-DE in terms of speed, correctness. |
Pushing some more. I'll be explaining my choice of default args over the next few comments. |
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.
Thanks, I'll take a closer look into the code over the next days, do you mind to go over the code and adjust the indentation according to the style guidelines.
@zoq Gentle nudge :) |
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.
I have to take another look at the paper, but this looks really good.
I was wondering why the indentation messes up when I push it here. Looks like tabs vs space issue, thanks for pointing them out @zoq. |
Stalling this for a while, till NSGA2, Recursive MOO and Indicators gets merged. They will serve as a baseline for this pull request. Have updated TODO list for others to track the progress of this PR. |
Keep open! |
- populationSize > neighborSize + 1 - fix initNeighborhood - neighborHoodSize => neighborSize
- declare DifferentialCrossover
fix callback test
@zoq I think I've addressed all of your comments. If you find some indent mistakes, it would be helpful if you could do a "commit suggestion", it gets tiring to change minor things every commits. Thanks a lot. |
Uhm... I've done a sizeable amount of work on the policy-based method already. How about we merge this as-is now, and create a follow-up PR in which I handle the templatizing and some other minor fixes. Here's a patch for policy if you want a look. |
Maybe you can adjust your code editor to use the correct indentation style, I use vim and setting up the indentation is easy, That could save us both some time. https://github.com/mlpack/mlpack/wiki/DesignGuidelines has all the important style guidelines. |
You can just open another PR with the changes from this one and the policy design changes, and rebase the PR afterwards. I don't want to rush anything. Like one thing I haven't done is run the tests in a loop and check if they are stable, maybe you did that already in which case we can check that one. |
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.
Next step to test this in a loop.
Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
Thank you for taking the time to fix the style. I'll be sure to change my IDE settings. Reg testing, one thing you'll find interesting to know is, that higher population size leads to more accurate results. I have yet to test this claim, I'll play around some parameters run it over a 1000 times and report the results here. |
That is true, we basically increase the number of possible solutions. For the tests we don't need a perfect solution, just something that is close, to check that the optimizer works with different starting solutions. |
Ran these command Let's do some final cleanups. Doc fixes, if any, and then this should be good to go imo. Looking forward for your review. |
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.
Great work, no further comments from my side.
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.
Second approval provided automatically after 24 hours. 👍
All right, if nobody has any objections. Let's get this merged! |
Nice, with that one merged, let's open another PR for the policy design changes. |
This PR is a continuation of #210. Till now I've made these changes
Address issue #176
**Important: For more details regarding its testing and comparison against other algorithms. Refer this discussion.
The following remains to be done
TODO
Let user explicitly choose whether they want to preserve diversity or notUse a Policy-based approach to delegate Weight initialization and Decomposition.arma::mat
forInputType
andOutputType
.double.
RequireDenseFloatingType
InputType.After ZDT is merged, test against it: report results. (or maybe do it in separate PR?)FIXME
DOCUMENTATION
Memory
Testing
REVIEWS
Requesting @zoq @say4n @rcurtin for reviews.