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

CMA-ES for mixed-integer optimization #163

Open
cmastalli opened this issue Jul 11, 2017 · 3 comments
Open

CMA-ES for mixed-integer optimization #163

cmastalli opened this issue Jul 11, 2017 · 3 comments

Comments

@cmastalli
Copy link

I would like to know if this implementation (i.e. libcmaes) is able to solve mixed-integer optimization problems as is described here.

Thanks in advance

@beniz
Copy link
Collaborator

beniz commented Jul 12, 2017

Hi, this is not implemented. This would be an interesting feature though. I'm not sure how much work would be required, though from the paper it seems that additions may not be too important.

@cmastalli if you decide to add it, please send a PR!

@nikohansen any advice on this ?

@cmastalli
Copy link
Author

@beniz I would like to understand better what it might be the tasks in order to implement such algorithm, note that I'm not fully familiar with the structure of libcmaes.

These are the tasks from what I can understand by reading the code:

  1. Extend the libcmaes::CMAParameters class in order to accept mixed-integer decision variables.
  2. Sampling modification: add the shaded term of eq 1 (from the paper) here.
  3. Covariance modification: add the shaded term of eq. 5 (from the paper) here.
  4. Step-size modification: add the shaded term of eq. 6 (from the paper) here.

Please let me know if I'm right.

Thanks for a quick answer :)

@nikohansen
Copy link
Collaborator

nikohansen commented Jul 12, 2017

My current hunch on the above linked integer handling algorithm is that it could be done simpler without losing too much of performance. I can't be much more specific though and it would need some work to figure out the specifics. This together with this would be a very simple implementation of integer handling by only increasing sigma in case the coordinate-wise standard deviation drops below 1 / (2 * N_int + 1), and I can't even say for sure that it is worse more often than not compared to the above mentioned paper.

EDIT: It would be a simple first step to make at least a direct comparison with the scenarios given in the paper.

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

3 participants