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

Use of correlation information #3

Open
cmbant opened this issue Sep 28, 2018 · 2 comments
Open

Use of correlation information #3

cmbant opened this issue Sep 28, 2018 · 2 comments

Comments

@cmbant
Copy link

cmbant commented Sep 28, 2018

This it not really a bug - the code seems to work well (thank you, it looks useful)- but it feels as though there ought to be a way to use information about the local correlation structure of the variables. e.g. I usually run minimization after also running an MCMC, at which point I can make a guess at the local covariance. In some cases one or more parameters are very tightly correlated for physical reasons, and BOBYQA is rather inefficient/unstable if you don't use this information. If the problem is unbounded you can of course just rotate the parameter space, but with bounds, BOBYQA does not support bounds on linear parameter combinations, only on individual parameters, so you can't then impose the bounds consistently. So a) could the function return value support a None value to indicate "out of bounds" very generally, or b) could it be generalized to support bounds on a rotated parameter basis rather than the original parameters? or c) if not, could it at least support an input guess at the local covariance/Hessian which could be used instead of random directions to exploit known degeneracy structure. More generally is there something like LINCOA that could also be added to support more general constraint bounds?

[

@lindonroberts
Copy link
Collaborator

Hi, thanks for the suggestion. I agree it would be a good idea to be able to support bound constraints on rotated coordinates. I've started looking into incorporating the methods from LINCOA to handle general linear constraints, as this is the best long-term solution, but this won't be ready for a little while.

For now, my suggestion would be similar to your (a) option - if a value is out of bounds in the rotated basis, return a very large value. You could either use a fixed value (simple) or something like a quadratic penalty function.

@cmbant
Copy link
Author

cmbant commented Oct 1, 2018

Thanks, great you are looking at it. I've found that in practice just returning a fixed large number for out of bounds doesn't really work reliably; I guess the algorithm would need to internally set the large number based on the recent properties of the quadratic model for it to do something sensible in general.

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

No branches or pull requests

2 participants