Pattern Search#
An implementation of the well-known Hooke and Jeeves Pattern Search [17] for single-objective optimization which makes use of exploration and pattern moves in an alternating manner. For now, we like to refer to Wikipedia for more information such as pseudo code and visualizations in the search space.
[1]:
from pymoo.algorithms.soo.nonconvex.pattern import PatternSearch
from pymoo.problems.single import Himmelblau
from pymoo.optimize import minimize
problem = Himmelblau()
algorithm = PatternSearch()
res = minimize(problem,
algorithm,
verbose=False,
seed=1)
print("Best solution found: \nX = %s\nF = %s" % (res.X, res.F))
Best solution found:
X = [-2.80511826 3.13131267]
F = [1.83946359e-12]
API#
- class pymoo.algorithms.soo.nonconvex.pattern.PatternSearch(self, init_delta=0.25, init_rho=0.5, step_size=1.0, output=SingleObjectiveOutput(), **kwargs)[source]
Hooke and Jeeves Pattern Search local optimizer.
- Parameters:
init_delta – Initial step size for exploration. Scaled relative to bounds.
init_rho – Contraction factor for step size reduction on unsuccessful moves.
step_size – Scaling factor for pattern moves along promising directions.
output – Output handler for convergence information.
**kwargs – Additional arguments passed to parent class.