Optimizers

GEFEST provides optimizers for single and multi objective tasks.

Optimizer interface

class gefest.tools.optimizers.optimizer.Optimizer(log_dispatcher=None, **kwargs)[source]

Bases: object

Interface for optimizers.

abstract optimize(n_steps: int, **kwargs) list[Structure][source]

Must implement optimization logic.

Parameters:

n_steps (int) – Number of optimization steps.

Returns:

Optimized population.

Return type:

list[Structure]

Defalt single-objective GA

class gefest.tools.optimizers.GA.GA.BaseGA(opt_params, initial_population=None, **kwargs)[source]

Bases: Optimizer

Implemets default genetic optimization algorithm steps.

Can be used as base class for others GA based optimizers. Can be configured using modules with different realization of operations, e.g. crossover, mutation, selection operations or crossover, mutation strategies.

optimize() list[Structure][source]

Optimizes population.

Returns:

Optimized population.

Return type:

list[Structure]

SPEA2

Standard optimizer with GOLEM backend

class gefest.tools.optimizers.golem_optimizer.standard.StandardOptimizer(opt_params: OptimizationParams, initial_population=None, **kwargs)[source]

Bases: Optimizer

Wrapper for GOLEM EvoGraphOptimizer.

All GOLEM optimization features can be setted up with native GEFEST configuration file.

optimize()[source]

Optimizes population.

Golem based surrogate optimizer

class gefest.tools.optimizers.golem_optimizer.surrogate.SurrogateOptimizer(opt_params: OptimizationParams, initial_population=None, **kwargs)[source]

Bases: Optimizer

Wrapper for GOLEM SurrogateEachNgenOptimizer.

Provides optimization strategy using both physical simulator and surrogate model.

optimize() list[Structure][source]

Optimizes population.

Returns:

Optimized population.

Return type:

list[Structure]

Note: GOLEM based optimizers provides single/multiobjective optimizations and other features, e.g. adaptive mutation strategies. For details see OptimizationParams class and GOLEM docs (https://thegolem.readthedocs.io/en/latest/).