Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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

Suggestions for optimization algorithms to test #23

Closed
sgbaird opened this issue Aug 22, 2022 · 4 comments
Closed

Suggestions for optimization algorithms to test #23

sgbaird opened this issue Aug 22, 2022 · 4 comments

Comments

@sgbaird
Copy link
Member

sgbaird commented Aug 22, 2022

design of experiments (DOE)

(suggestion by @kjelljorner, see twitter post)

L-BGFS

(suggestion by @CompRhys, see twitter post)

derivative-free method, e.g. simplex

(suggestion by @WardLT, see twitter post)

Olympus

Supports various optimization algorithms in addition to benchmarks (suggestion by Alan Aspuru-Guzik, see twitter post, cc @rileyhickman). Includes many options from above.

Supported algorithms in Olympus

From Colab notebook

['BasinHopping',
 'Cma',
 'ConjugateGradient',
 'DifferentialEvolution',
 'Genetic',
 'Gpyopt',
 'Grid',
 'Hyperopt',
 'LatinHypercube',
 'Lbfgs',
 'ParticleSwarms',
 'Phoenics',
 'RandomSearch',
 'Simplex',
 'Slsqp',
 'Snobfit',
 'Sobol',
 'SteepestDescent']

Olympus also has a nice page categorizing the algorithms into "Bayesian", "Evolutionary", "Gradient", "Grid-like", and "Other". This is right in line with a results figure I'm thinking about that using plotly legend groups (see group click toggle behavior).

@WardLT
Copy link

WardLT commented Aug 22, 2022

A quick note: The "simplex" I was referring to is this one - https://docs.scipy.org/doc/scipy/reference/optimize.minimize-neldermead.html#optimize-minimize-neldermead. It could be the same as the "Simplex" mentioned in Olympus.

This simplex is a local optimizer, but you can make it "global" by just running it with different starting guesses (i.e., 'multi-start' optimization).

@sgbaird
Copy link
Member Author

sgbaird commented Aug 22, 2022

@WardLT thanks for clarifying! Looks like Olympus also uses Nelder Mead via scipy.

@kjelljorner
Copy link

@sgbaird Not really an expert on DoE myself. People seemed to use proprietary software like MODDE and also in an iterative manner depending on how many experiments could be run in a batch etc. I'm not sure if it is possible to reproduce that workflow with open-source tools and how easy it would be to automate.

@sgbaird
Copy link
Member Author

sgbaird commented Aug 26, 2022

I think Latin Hypercube Sampling might be a good option for DOE. Might try to use one of the proprietary softwares as well.

A visualization that I'm interested in is grouping the algorithms into categories (as mentioned above) and making it an interactive Plotly figure with legend groups and the ability to toggle individual traces.

@sparks-baird sparks-baird locked and limited conversation to collaborators Sep 10, 2022
@sgbaird sgbaird converted this issue into discussion #57 Sep 10, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants