Skip to content
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

Introduce Policy Methods for MOEA/D-DE #293

Merged
merged 43 commits into from
Jun 18, 2021
Merged

Introduce Policy Methods for MOEA/D-DE #293

merged 43 commits into from
Jun 18, 2021

Conversation

jonpsy
Copy link
Member

@jonpsy jonpsy commented Jun 16, 2021

Continuation of #269

Weight decomposition

  • Tchebycheff
  • Weighted
  • PBI

Weigh Init

  • Bayesian Bootstrap

Testing

  • ZDT

@zoq @coatless @say4n

const VecType& /* idealPoint */,
const VecType& candidateFitness)
{
return arma::dot(weight, candidateFitness);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That one is so easy, love it.

include/ensmallen_bits/moead/moead.hpp Outdated Show resolved Hide resolved
include/ensmallen_bits/moead/moead.hpp Outdated Show resolved Hide resolved
include/ensmallen_bits/moead/moead.hpp Outdated Show resolved Hide resolved
include/ensmallen_bits/moead/moead.hpp Show resolved Hide resolved
auto BinomialCoefficient =
[](size_t n, size_t k) -> double
{
return std::tgamma(n + 1) / (std::tgamma(k + 1) * std::tgamma(n - k + 1));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, this is what @coatless suggested?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, this is a binomial coefficient. That one was Dirichilet

jonpsy and others added 3 commits June 16, 2021 08:53
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>
Copy link
Member

@zoq zoq left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks already great to me, I guess once the comments are added, this is pretty much ready.

jonpsy and others added 5 commits June 16, 2021 10:25
…osition.hpp

Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
…ecomposition.hpp

Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
…f_decomposition.hpp

Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
.appveyor.yml Outdated Show resolved Hide resolved
@jonpsy
Copy link
Member Author

jonpsy commented Jun 16, 2021

Jeez, sorry for making you do all that minor fixes.

@zoq
Copy link
Member

zoq commented Jun 16, 2021

Jeez, sorry for making you do all that minor fixes.

No problem, the rest looks great to me, I guess if we can fix the windows issue, we are all set.

jonpsy and others added 14 commits June 16, 2021 22:34
…osition.hpp

Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
…f_decomposition.hpp

Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
…ecomposition.hpp

Co-authored-by: Marcus Edel <marcus.edel@fu-berlin.de>
…osition.hpp

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>
@jonpsy
Copy link
Member Author

jonpsy commented Jun 16, 2021

It's worth noting that the implementation of PBI in the paper is wrong. The paper assumes maximization of objectives whereas here we deal with minimization. Moreover, the weight vectors weren't normalized for d2 computation. I've confirmed this with other code implementations : pymoo and pagmo. I'll attach a mathematical proof for reference.

Fig A
PBI

Fig B

image

As is evident, the paper assumes maximization of all objectives, whereas our implementation focuses on minimization. Hence the formula flips totally upside down.

Adding on top of that, if you notice the d2 formula,
.

Here we only require the direction of lambda (weight vector). So the formula should be (for maximization)

.

For minimization, refer formula in Fig A.

@jonpsy
Copy link
Member Author

jonpsy commented Jun 16, 2021

@zoq I think this one's good to go.

@zoq
Copy link
Member

zoq commented Jun 16, 2021

@zoq I think this one's good to go.

Will approve once appveyor comes back green.

Copy link
Member

@zoq zoq left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No further comments from my side, looks great.

Copy link

@mlpack-bot mlpack-bot bot left a 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. 👍

@zoq zoq merged commit 0af8004 into mlpack:master Jun 18, 2021
@zoq
Copy link
Member

zoq commented Jun 18, 2021

Thanks, for another great contribution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants