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

Using pc for ps #213

Open
nikohansen opened this issue Aug 31, 2022 · 3 comments
Open

Using pc for ps #213

nikohansen opened this issue Aug 31, 2022 · 3 comments

Comments

@nikohansen
Copy link
Contributor

nikohansen commented Aug 31, 2022

With the option {'vv': {'pc for ps': whatever}}, the invariant pc evolution path is used for the sigma update. This however fails to increase the step-size due to the hsig mechanism (which prevents pc to strongly elongate axes in C as long as sigma is too small). That is, pc can in the current code not be reasonably used to update the step-size.

Resolution: for the time being, I will implement hsig to be 1 when 'pc for ps' is in 'vv' and hence pc is used for the sigma update. This is still suboptimal because it reintroduces the elongation problem (yet it is still much better than the current version).

This observation also strongly suggests that any practical implementation of CSA-CMA should have two evolution paths, even when the invariant inverse(sqrt(C)) x pc is used for the sigma update.

EDIT: we also have no decisive reasons to conclude that ps is not invariant.

@nikohansen
Copy link
Contributor Author

It's not clear whether this is already implemented though the code seems to behave fairly reasonable now. hsig stays True even on the linear function, because the path norm computed in sigma_adapt.CMAAdaptSigmaBase.hsig does not pass the threshold when ps = es.sm.transform_inverse(es.pc) is used.

Related: pc2 is the path for diagonal decoding.

@nikohansen
Copy link
Contributor Author

The option to activate using dot(inverse(C), pc) instead of ps is now 'CSA_invariant_path': True.

@nikohansen
Copy link
Contributor Author

Comparing the step-size behavior on the sphere function with sigma0=2e-3. In particular, the axis ratio becomes around 20:
Invariant path:
path-invariant
Default:
path-dev

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

1 participant