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

BIPOP should restart from re-sampled x0 #89

Closed
2 tasks done
beniz opened this issue Dec 19, 2014 · 5 comments
Closed
2 tasks done

BIPOP should restart from re-sampled x0 #89

beniz opened this issue Dec 19, 2014 · 5 comments

Comments

@beniz
Copy link
Collaborator

beniz commented Dec 19, 2014

I missed this in the original paper. This poses the question of how to specify a distribution on the initial x0 while not asking too much from the user.

The following points will be assessed before proceedings with a solution:

  • benchmark BIPOP with and without re-sampling x0 upon restart
  • benchmark re-sampling a new x0 from within the search trace of past runs
    Benchmarking should especially check against the multi-modal functions of BBOB.
@beniz beniz self-assigned this Dec 19, 2014
beniz pushed a commit that referenced this issue Jan 6, 2015
…p the best point from history, all for testing #89
@beniz
Copy link
Collaborator Author

beniz commented Jan 21, 2015

FTR, comparison of three resampling schemes for x0 on
each aBIPOP restart on BBOB's multi-modal functions is available in PDF (1):

  • blue: resampling within [-4,4]
  • red: resampling from collected history (*)
  • greenish: taking the best known search state from collected history
    (i.e. the one with current min f-value)

These results seem to suggest that we may want to provide a resampling
scheme around initial x0 for BIPOP. It may be best to have it
done without user intervention.

(1) http://juban.free.fr/stuff/libcmaes/bipop_sampl_compar.pdf

@beniz
Copy link
Collaborator Author

beniz commented Jan 21, 2015

My understanding is that CMA's first step upon every restart already samples from a Gaussian bump around x0 of standard deviation 1 and scaled by the initial value of sigma.

So it could make sense to either re-sample x0 itself from a distribution to be defined (or user-defined, though this seems error-prone), or to modify the initial standard deviation so that the initial population possibly spreads to a larger area.

@nikohansen
Copy link
Collaborator

I agree, in contrast to the input to CMA-ES, which is an initial solution and a standard deviation, the standard input to BIPOP-CMA-ES should rather be a domain. (A distribution for X0 is not quite sufficient, because we need to be able to infer the initial standard deviation). Another common approach is to define a standard domain, where the user must transform the presented problem to be defined in. In BBOB our standard domain is [-5, 5]^dim, I have also regularly seen the use of [0, 1]^dim as standard domain.

@beniz
Copy link
Collaborator Author

beniz commented Jan 21, 2015

Yes, so the good news is that this is actually already in the lib as it does support setting [x0min,x0max] as the initial domain of x0. An initial candidate is then sampled uniformly from this domain upon (re-)creation of the initial (empty) CMASolution object. I kind of forgot about that, and from looking at the code, both IPOP and BIPOP are already taking advantage of this resampling if x0min and x0max are supplied.

All I believe I have to do then is to update the documentation so the user is informed that BIPOP would yield potentially better results by giving an initial domain.

@beniz
Copy link
Collaborator Author

beniz commented Jan 21, 2015

Added a paragraph to https://github.com/beniz/libcmaes/wiki/Practical-hints
Will add just another set_x0 function with a signature for STL vectors, and this should then close this issue.

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

No branches or pull requests

2 participants