CMA-ES / pycma

Python implementation of CMA-ES

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Motivation for boundary handler functions

LamNgo1 opened this issue · comments

Hi,

Thank you for your great package. I have a question about the default boundary handler function. I see in the ask() method, after sampling the solutions from the normal distribution, the solutions are repaired by a function:

pop_pheno = [self.gp.pheno(x, copy=True,
into_bounds=self.boundary_handler.repair)
for x in pop_geno]
which uses BoxConstraintsLinQuadTransformation class by default. Is the purpose of this repair to make sure all sampled solutions are within the specified bounds? If so, could you tell me more about the motivation behind this transformation? If possible, could you share with me some documents (books, papers, etc.) discussing this idea?

Another question I would like to ask is that, would it be different if we use a truncated normal distribution sampler to sample to solutions, instead of doing the transformation?

Thank you in advance!

Is the purpose of this repair to make sure all sampled solutions are within the specified bounds?

yes

If so, could you tell me more about the motivation behind this transformation?

It's a smooth transformation that garanties the candidate solution to be within the bounds thereby in some way mirroring/repeating the landscape outside of the bounds. There is not much more to it.

If possible, could you share with me some documents (books, papers, etc.) discussing this idea?

The best source is probably the documentation of the code.

would it be different if we use a truncated normal distribution sampler to sample to solutions, instead of doing the transformation?

Yes, that's a very different boundary handling which often has a detrimental effect on step-size control because it violates the unbiasedness assumption of the sample distribution.