Please read the contributor agreements and if you agree, please click the checkbox below.
[x] I agree to the contributor agreements.
[!TIP]
Please follow the Quick TODO list to smoothly merge your PR.
Motivation
I wanted to learn more about Optimization algorithms and how Optuna works.
Description of the changes
It is a part of fixing #122
I have implemented the Hill Climb Search Algorithm as a Sampler. The hill climbing algorithm is an optimization technique that iteratively improves a solution by evaluating neighboring solutions in search of a local maximum or minimum. Starting with an initial guess, the algorithm examines nearby "neighbor" solutions, moving to a better neighbor if one is found. This process continues until no improvement is possible, resulting in a locally optimal solution. Hill climbing is efficient and easy to implement but can get stuck in local optima, making it suitable for simple optimization landscapes or applications with limited time constraints. Variants like random restarts and stochastic selection help overcome some limitations.
TODO List towards PR Merge
Please remove this section if this PR is not an addition of a new package.
Otherwise, please check the following TODO list:
[x] Copy ./template/ to create your package
[x] Replace <COPYRIGHT HOLDER> in LICENSE of your package with your name
[x] Fill out README.md in your package
[x] Add import statements of your function or class names to be used in __init__.py
[x] (Optional) Add from __future__ import annotations at the head of any Python files that include typing to support older Python versions
[x] Apply the formatter based on the tips in README.md
[ ] Check whether your module works as intended based on the tips in README.md
Contributor Agreements
Please read the contributor agreements and if you agree, please click the checkbox below.
Motivation
I wanted to learn more about Optimization algorithms and how Optuna works.
Description of the changes
It is a part of fixing #122
I have implemented the Hill Climb Search Algorithm as a Sampler. The hill climbing algorithm is an optimization technique that iteratively improves a solution by evaluating neighboring solutions in search of a local maximum or minimum. Starting with an initial guess, the algorithm examines nearby "neighbor" solutions, moving to a better neighbor if one is found. This process continues until no improvement is possible, resulting in a locally optimal solution. Hill climbing is efficient and easy to implement but can get stuck in local optima, making it suitable for simple optimization landscapes or applications with limited time constraints. Variants like random restarts and stochastic selection help overcome some limitations.
TODO List towards PR Merge
Please remove this section if this PR is not an addition of a new package. Otherwise, please check the following TODO list:
./template/
to create your package<COPYRIGHT HOLDER>
inLICENSE
of your package with your nameREADME.md
in your package__init__.py
from __future__ import annotations
at the head of any Python files that include typing to support older Python versionsREADME.md
README.md