optimizer
The optimizer module provides wrappers which connect optimization packages to Evaluators. Currently we support platypus and rbf_opt
The supported Platypus algorithms are:
GeneticAlgorithm
EvolutionaryStrategy
NSGAII
EpsMOEA
GDE3
SPEA2
MOEAD
NSGAIII
ParticleSwarm
OMOPSO
SMPSO
CMAES
IBEA
PAES
PESA2
EpsNSGAII
These algorithms have the same configuration options as their counterparts in platypus, with the parts provided by besos evaluators filled automatically.
- optimizer.df_solution_to_solutions(df: DataFrame, platypus_problem: Problem, besos_problem: Problem) List[Solution] [source]
Converts a solution DataFrame to a list of platypus solutions, with each row converted to one solution
- Parameters:
df – DataFrame to convert
platypus_problem – platypus problem that the solutions apply to
besos_problem – besos problem that the solutions apply to
- Returns:
a list of platypus solutions
- optimizer.df_to_solutions(df: DataFrame, problem: Problem) List[Solution] [source]
Converts a DataFrame to a list of platypus solutions, with each row converted to one solution
- Parameters:
df – DataFrame to convert
problem – platypus problem that the solutions apply to
- Returns:
a list of platypus solutions
- optimizer.get_operator(problem: Problem, mutation=False)[source]
Creates a valid operator for the given platypus Problem. This is provided to help when optimizing over problems with mixed types.
- Parameters:
problem – the platypus problem this operator should apply to
mutation – if True create a mutation operator, if False create a variation operator
- Returns:
- optimizer.platypus_alg(evaluator: AbstractEvaluator, algorithm: Type[Algorithm], evaluations: int = 1000, *args, **kwargs) DataFrame [source]
Uses a platypus algorithm to optimise over an evaluator.
- Parameters:
evaluator – An evaluation function to optimise over.
algorithm – The platypus algorithm to use.
evaluations – The algorithm will be stopped once it uses more than this many evaluations.
args – arguments to pass to algorithm
kwargs – keyword arguments to pass to algorithm.
- Returns:
the non-dominated solutions found by the algorithm.
- optimizer.rbf_opt(evaluator, evaluations, hide_output: bool = True, bonmin_path=None, rand_seed=None)[source]
This is wrapper to the rbfopt function.
- Parameters:
evaluator – An evaluation function to optimise over.
evaluations – The algorithm will be stopped once it uses more than this many evaluations.
hide_output – Whether to suppress output from the rbf_opt algorithm
bonmin_path – The path to Bonmin, a specific feature useful for the cluster.
rand_seed – Give a seed number to make sure the random has numbers.
- Returns:
a list of solutions
- optimizer.solution_to_values(solution: Solution, parts='all') list [source]
Converts a platypus solution to a list containing the same values
- Parameters:
solution – a platypus solution to convert
parts – which parts of the solution should be kept
- Returns:
a list of the requested values from the solution
- optimizer.solutions_to_df(solutions: List[Solution], problem, parts='all', flag_optimal=True) DataFrame [source]
Converts a list of platypus solutions to a DataFrame, with one row corresponding to each solution
- Parameters:
solutions – list of solutions to convert
problem – the column names for DataFrame
parts – which parts of the solutions should be kept
flag_optimal – whether to include a boolean column denoting whether each solution is pareto-optimal
- Returns:
a DataFrame
- optimizer.values_to_solution(values: list, problem: Problem, evaluate=True) Solution [source]
Produces an unevaluated platypus solution with the given inputs
- Parameters:
values – a list of input values to convert to a platypus solution
problem – the platypus problem this solution applies to
evaluate – whether to evaluate the solution before returning (solution will be unevaluated otherwise)
- Returns:
the corresponding platypus.Solution object