nextnanoevo.OptimizerClass module
- class nextnanoevo.OptimizerClass.Evolution(nextnanoio: IO, metric: Metric, bounds, algorithm='default', size=20)
Bases:
object
The evolution class to run the evolutionary optimization with pygmo algorithms.
- Parameters:
- nextnanoioIO
input-output object defining input file variables and output datafiles
- metricMetric
defines how to retrieve numerical (scalar or vector) metric to optimize from output files
- boundstuple of list
A tuple containing two lists, the lower and upper bounds for the input variables. Each list should have the same length as the number of input variables.
- algorithmstr, optional
The name of the algorithm to be used for the evolution. If “default”, the default algorithm is used. Default is different for single objective and multi-objective problems.
- sizeint, optional
The size of the population for the evolution. Default is 20.
Methods
add_initial_guess
(initial_guess)Adds the initial guess solutions to the population.
add_json_summary
(gen, seed, algorithm_kwargs)Adds a summary of the evolution to the JSON logger.
create_dat_file
(filename[, output_dir])Creates a .dat output file from the JSON logger data.
create_population
(seed[, initial_guess])Creates the initial population for the evolution.
load_algorithm
(algorithm)Loads the algorithm for the evolution.
Loads the default algorithm based on the problem type.
run
([gen, keep_pareto_front, interval, ...])Runs the evolution with the specified parameters. Parameters ---------- gen : int, optional The number of generations to run the evolution. Default is 20. keep_pareto_front : bool, optional If True, the Pareto front is kept and updated during the evolution. Default is False. interval : int, optional The interval at which the Pareto front is updated. Default is 1. seed : int, optional The seed for the random number generator. If not provided, a random seed is used. initial_guess : list of tuples or numpy arrays, optional A list of initial guesses for the population. Each initial guess will be added to the initial population. algorithm_kwargs : dict, optional A dictionary of keyword arguments to be passed to the algorithm. non_execution_penalty : numbers.Number, optional A penalty to be applied for simulations which are failed to execute. keep_output : str, optional Specifies which output to keep after the evolution is finished. Options are "all", "pareto", or "champion". Default is "all".
set_size
(size)Sets the population size for the evolution.
update_champion
(solutions, fits, gen)Updates the champion solution and fit if a better one is found.
update_pareto_front
(solutions, fits, gen)Updates the Pareto front with new solutions and fits.
validate_initial_guess
(initial_guess)Validates the initial guess provided by the user.
- add_initial_guess(initial_guess) None
Adds the initial guess solutions to the population.
- add_json_summary(gen, seed, algorithm_kwargs)
Adds a summary of the evolution to the JSON logger.
- create_dat_file(filename, output_dir=None)
Creates a .dat output file from the JSON logger data.
- create_population(seed, initial_guess=None)
Creates the initial population for the evolution.
- load_algorithm(algorithm: str) None
Loads the algorithm for the evolution. Only accepts the algorithms defined in defaults. If “default” is passed, the default algorithm is loaded based on the problem type (single or multi-objective).
- load_default_algorithm() None
Loads the default algorithm based on the problem type.
- run(gen: int = 20, keep_pareto_front: bool = False, interval: int = 1, seed: int | None = None, initial_guess: list[tuple[Number]] | None = None, algorithm_kwargs: dict | None = None, non_execution_penalty: Number | None = None, keep_output: str = 'all') population
Runs the evolution with the specified parameters. Parameters ———- gen : int, optional
The number of generations to run the evolution. Default is 20.
- keep_pareto_frontbool, optional
If True, the Pareto front is kept and updated during the evolution. Default is False.
- intervalint, optional
The interval at which the Pareto front is updated. Default is 1.
- seedint, optional
The seed for the random number generator. If not provided, a random seed is used.
- initial_guesslist of tuples or numpy arrays, optional
A list of initial guesses for the population. Each initial guess will be added to the initial population.
- algorithm_kwargsdict, optional
A dictionary of keyword arguments to be passed to the algorithm.
- non_execution_penaltynumbers.Number, optional
A penalty to be applied for simulations which are failed to execute.
- keep_outputstr, optional
Specifies which output to keep after the evolution is finished. Options are “all”, “pareto”, or “champion”. Default is “all”.
- Raises:
- ValueError
If keep_output is not one of “all”, “pareto”, or “champion”.
- set_size(size: int) None
Sets the population size for the evolution.
- update_champion(solutions, fits, gen) None
Updates the champion solution and fit if a better one is found. Champion is the solution with the lowest norm of the fit.
- update_pareto_front(solutions, fits, gen) None
Updates the Pareto front with new solutions and fits.
- validate_initial_guess(initial_guess) int
Validates the initial guess provided by the user.
- Returns:
- int
The number of valid initial guess solutions. Returns 0 if no initial guess is provided or if the initial guess is None.
- Raises:
- AssertionError
If the initial guess is not iterable, contains non numbers, or if the solutions do not match the bounds. If the length of the initial guess is not between 1 and population size.
- class nextnanoevo.OptimizerClass.NextnanoProblem(opt_manager)
Bases:
object
The problem class for the nextnano evolutions.
Methods
fitness
get_bounds
get_nobj
- fitness(input_variables)
- get_bounds()
- get_nobj()
- class nextnanoevo.OptimizerClass.Optimizer(nextnanoio: IO, metric: Metric, optimization_method='root', method_function=None)
Bases:
object
The optimization class to run the gradient decent optimization with methods from scipy.optimize
- Parameters:
- nextnanoioIO
input-output object defining input file variables and output datafiles
- metricMetric
defines how to retrieve numerical (scalar or vector) metric to optimize from output files
- optimization_methodstr
optimization method used from scipy.optimize
Methods
load_method
([method_function])Loads the optimization method function from scipy.optimize
run
()Runs optimization
Runs optimizationans.
set_optimization_parameters
(*args[, rewrite])Updates the optimization parameters method_args and method_kwargs
set_target
(target)Sets the target, only for root finders optimization methods
Validates the optimization parameters.
- load_method(method_function=None) Callable
Loads the optimization method function from scipy.optimize
- run()
Runs optimization
- run_optimization()
Runs optimizationans.
- Returns:
- resultscipy.optimize.OptimizeResult
- set_optimization_parameters(*args, rewrite=False, **kwargs) None
Updates the optimization parameters method_args and method_kwargs
- Parameters:
- argslist
The list of arguments to be passed to the optimization function
- rewritebool
If True, the method_args and method_kwargs are rewritten with the new values
- kwargsdict
The dictionary of keyword arguments to be passed to the optimization function
- set_target(target) None
Sets the target, only for root finders optimization methods
- validate_optimization() bool
Validates the optimization parameters. This function should do general checks, as well as function specific checks for known scipy functions.
- Raises:
- AssertionError
If the optimization parameters are not valid.