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:
pycma/cma/evolution_strategy.py
Lines 2008 to 2010 in 6080396
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.