fcampelo / MOEADr

R package MOEADr, a modular implementation of the Multiobjective Evolutionary Algorithm with Decomposition (MOEA/D) framework
20 stars 7 forks source link

Implement Scalarization Strategies #7

Closed caranha closed 7 years ago

caranha commented 7 years ago

Implement the missing scalarization strategies

Also, all scalarization functions seem to be missing the min step which is included in the paper.

fcampelo commented 7 years ago

Comments:

ws is just multiplying the matrixes, without subtracting the min

My mistake. I replaced W * Y by W * (Y - minP) in row 43 of scalarization_ws() to fix the problem.

wt is actually ws, without the Tchebycheff norm

The Tchebycheff norm is there! W * (Y - minP + eps) does the Hadamard (i.e., element-wise) product, and applying max by rows (with the apply(..., MARGIN = 1, FUN = max) does the trick (since the Tchebycheff norm is equivalent to returning the largest value of the resulting row vectors).

awt is missing

Indeed

double check pbi calculations (seems to be missing a norm division in D2)

My mistake again. I replaced (Y - minP - D1 * W) ^ 2 by (Y - minP - D1 * W / NormW) ^ 2 to fix the problem.

all scalarization functions seem to be missing the min step which is included in the paper.

No. This is dealt with in the population update step. ;-)

caranha commented 7 years ago

Hmmm, I forgot to protect the AWT from div/0. Will try to sneak that in today.

caranha commented 7 years ago

HmHMmm.... The calculation of rho in AWT (page 4) requires the inverse of the weights, which means we need to deal with weights with zero values.

If we just add an epson to the zero values, the resulting Rho will be quite extreme. Example:

Weight Matrix: 0 0.25 0.25 0.25 0.25 0 0.25 0.25 0.25 0.25 0 0.5 0.125 0.25 0.125 0 0.125 0.125 0.25 0.5

Rho: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0

Is this acceptable?

fcampelo commented 7 years ago

I believe it is. I'll consult Lucas about it, but from my understanding that should be the expected behavior - it certainly the is if we use an asymptotic argument.