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

CandidateDYCORS implements which strategy? #12

Closed
ili3p opened this issue Jun 13, 2016 · 7 comments
Closed

CandidateDYCORS implements which strategy? #12

ili3p opened this issue Jun 13, 2016 · 7 comments
Assignees

Comments

@ili3p
Copy link

ili3p commented Jun 13, 2016

In the documentation it says:

CandidateDYCORS Uses a DDS strategy...

however after reading the code and the DYCORS paper (Regis & Shoemaker, 2012), the search strategy it's actually DYCORS-LMSRBF, not DYCORS-DDSRBF.

Please confirm.

Thanks

@dme65
Copy link
Owner

dme65 commented Jun 13, 2016

DYCORS implements DYCORS-LMSRBF. The idea of perturbing fewer and fewer coordinates comes from DDS, but I agree it is confusing. I'll clarify the documentation.

@dme65 dme65 closed this as completed Jun 13, 2016
@ili3p
Copy link
Author

ili3p commented Jun 14, 2016

I have two more questions:

When set to CandidateDYCORS is pySOT using the DYCORS-LMSRBF algorithm for both integer and continuous decision variables?

Is the SO-MI ([1]) algorithm implemented in pySOT? If yes, how to use it?

Thanks

[1] Juliane Mueller, Christine A Shoemaker, and R Piche. SO-MI: A Surrogate Model Algorithm for Computationally Expensive Nonlinear Mixed-Integer, Black-Box Global Optimization Problems. Computers and Operations Research, 40(5):1383–1400, 2013.

@dme65
Copy link
Owner

dme65 commented Jun 14, 2016

That's correct. There are also methods for perturbing the continuous or integer variables separately. It should be possible to do something similar to SO-MI by cycling the adaptive sampling methods that are used in the paper. I believe they are all available in pySOT?

@ili3p
Copy link
Author

ili3p commented Jun 14, 2016

Yes! From the documentation:

search_strategies = [CandidateDYCORS(data=data, numcand=100*data.dim),
                     CandidateDYCORS_CONT(data=data, numcand=100*data.dim),
                     CandidateDYCORS_INT(data=data, numcand=100*data.dim),
                     CandidateUniform(data=data, numcand=100*data.dim)]

Which is what SO-MI is doing i.e. generate 4 groups of candidate points, and evaluate the best point from each of the groups.

So to use the SO-MI algorithm from the paper, we only need to define the search_strategy as such.

Thanks a lot, now it's all clear 👍

Edit:

Just for reference: this is not all what SO-MI is doing. Besides generating 4 groups of candidate points, the perturbations are also done differently. From the paper [1]:

Randomly chosen continuous variables of z_min are perturbed by randomly adding or subtracting small, medium and large perturbations. If k > 5, then each variable is perturbed with a probability of 5/k. Otherwise, every variable is perturbed.

Here k is the number of continuous variables.

Thus I would say for now the SO-MI algorithm is not implemented in pySOT. Although with just a few changes one can code SO-MI like algorithm using the current version of pySOT.

@dme65
Copy link
Owner

dme65 commented Jun 14, 2016

Great! :)

@dme65 dme65 reopened this Sep 11, 2016
@dme65
Copy link
Owner

dme65 commented Sep 11, 2016

I missed the edit you made and I'll look into how to add support for perturbations of different sizes.

@dme65 dme65 self-assigned this Sep 20, 2016
@dme65
Copy link
Owner

dme65 commented Dec 7, 2018

I'm closing this and I'll open a new enhancement issue for implementing SO-MI.

@dme65 dme65 closed this as completed Dec 7, 2018
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