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

[Feature request] Adding Hill Climbing #1066

Open
jmuchovej opened this issue Jan 24, 2024 · 7 comments
Open

[Feature request] Adding Hill Climbing #1066

jmuchovej opened this issue Jan 24, 2024 · 7 comments

Comments

@jmuchovej
Copy link

πŸ‘‹ I was wondering if there's a reason that [Stochastic] Hill Climbing isn't part of Optim.jl – I definitely get that Simulated Annealing is a "better" version of [S]HC, but [S]HC is still useful for many problems. (Definitely understand that it's a local optimizer, but it's not that uncommon to use in Program Synthesis!)

I'm happy to contribute it, just wanted to get a sense of why it might not already be in Optim.jl. πŸ™‚

@pkofod
Copy link
Member

pkofod commented Jan 26, 2024

What's your intended use-case? Is the domain (multivariate) continuous?

@jmuchovej
Copy link
Author

My intended use case (at the moment) is program synthesis – programs are symbolic though (I haven't figured out how I might be able to reduce it to a vector/matrix-centric representation).

The domain is currently discrete, but will become mixed (so aspects discrete, others continuous).

I didn't see this before I opened the issue – but I don't believe I can actually specify the problem's objective using the syntax Optim.jl desires (demands?). (i.e., there's an objective, but the objective doesn't have a clear mathematical formulation, instead it relies on simulation.)

@pkofod
Copy link
Member

pkofod commented Jan 28, 2024

What's the objective?

@jmuchovej
Copy link
Author

Assemble a program which maximizes the likelihood of an action sequence in a POMDP. The program specifies rewards and beliefs for the POMDP, then simulation is used to MC-integrate a likelihood estimate. (Trying to be as high-level as possible, let me know if this is unclear. πŸ˜…)

@pkofod
Copy link
Member

pkofod commented Jan 29, 2024

Assemble a program which maximizes the likelihood of an action sequence in a POMDP. The program specifies rewards and beliefs for the POMDP, then simulation is used to MC-integrate a likelihood estimate. (Trying to be as high-level as possible, let me know if this is unclear. πŸ˜…)

Alright, that makes it a bit more clear. Are you simulating this program writing process?

@jmuchovej
Copy link
Author

I don't think so? (I don't fully understand what you're looking for. πŸ˜…)

In terms of [S]HC: You can treat the neighboring programs as mutations (a la EvoComp-style mutations) of the best program. Each mutation is then scored via simulation (processed described above). Then, we convert the likelihoods of the neighbors into a distribution via softmax and follow [S]HC accordingly. (So, either taking argmax or sample from this distribution as the proposed neighbor.)

@jmuchovej
Copy link
Author

@pkofod friendly ping about this. πŸ™‚

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