Skip to main content

HyperHeuristic

Module: opytimizer.core.hyperheuristic

A HyperHeuristic class that manages multiple low-level optimizers and provides high-level strategies for algorithm selection and adaptation.

It supports both single-objective and multi-objective optimization by allowing a custom performance_metric function to be passed (e.g., min_fitness, hypervolume, etc).

It also supports parameter adaptation and strategy adaptation mechanisms.

Constructor​

HyperHeuristic(optimizers: Optional[List[opytimizer.core.optimizer.Optimizer]] = None, performance_metric: Optional[Callable[[Any], float]] = None) -> None

Parameters​

ParameterTypeDefaultDescription
optimizersOptional[List[opytimizer.core.optimizer.Optimizer]]None—
performance_metricOptional[Callable[[Any], float]]None—

Methods​

add_optimizer​

add_optimizer(self, optimizer: opytimizer.core.optimizer.Optimizer) -> None

Parameters​

ParameterTypeDefaultDescription
optimizeropytimizer.core.optimizer.Optimizer—

compile​

compile(self, space: Union[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace]) -> None

Compiles additional information that is used by this optimizer.

This method is called before the optimization procedure and makes sure that the additional variable is available as a property.

Parameters​

ParameterTypeDefaultDescription
spaceUnion[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace]—

evaluate​

evaluate(self, space: Union[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace], function: opytimizer.core.function.Function) -> None

Evaluates the search space according to the objective function.

If you need a specific evaluate method, please re-implement it on child's class.

Also, note that function only accept arguments that are found on Opytimizer class.

Parameters​

ParameterTypeDefaultDescription
spaceUnion[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace]A Space object that will be evaluated.
functionopytimizer.core.function.FunctionA Function object serving as an objective function.

get_average_performance​

get_average_performance(self, optimizer_name: str) -> Optional[float]

Parameters​

ParameterTypeDefaultDescription
optimizer_namestr—

get_best_performance​

get_best_performance(self, optimizer_name: str) -> Optional[float]

Parameters​

ParameterTypeDefaultDescription
optimizer_namestr—

get_statistics​

get_statistics(self) -> Dict[str, Any]

remove_optimizer​

remove_optimizer(self, optimizer_name: str) -> None

Parameters​

ParameterTypeDefaultDescription
optimizer_namestr—

select_optimizer​

select_optimizer(self, space: Union[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace], function: opytimizer.core.function.Function) -> opytimizer.core.optimizer.Optimizer

Parameters​

ParameterTypeDefaultDescription
spaceUnion[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace]—
functionopytimizer.core.function.Function—

update​

update(self, space: Union[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace], function: opytimizer.core.function.Function = None) -> None

Updates the agents' position array.

As each child has a different procedure of update, you will need to implement it directly on its class.

Parameters​

ParameterTypeDefaultDescription
spaceUnion[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace]—
functionopytimizer.core.function.FunctionNone—

update_performance​

update_performance(self, optimizer: opytimizer.core.optimizer.Optimizer, space: Union[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace]) -> None

Parameters​

ParameterTypeDefaultDescription
optimizeropytimizer.core.optimizer.Optimizer—
spaceUnion[opytimizer.core.space._SingleObjectiveSpace, opytimizer.core.space._MultiObjectiveSpace]—