foxes_opt.problems.layout.regular_layout¶
Classes¶
Places turbines on a regular grid and optimizes |
Module Contents¶
-
class foxes_opt.problems.layout.regular_layout.RegularLayoutOptProblem(name: str, algo: foxes.core.Algorithm, min_spacing: float, initial_values: dict[str, float] | None =
None, **kwargs: Any)[source]¶ Bases:
foxes_opt.core.FarmVarsProblemPlaces turbines on a regular grid and optimizes its parameters.
- Parameters:¶
- name
The problem’s name
- algo
The algorithm
- min_spacing
The minimal turbine spacing
- initial_values
Initial values for opt variables, key: spacing_x, spacing_y, offset_x, offset_y, angle
- kwargs
Additional parameters for FarmVarsProblem
-
add_constraint(constraint, varmap_int=
None, varmap_float=None, verbosity=0)¶ Add a constraint to the problem.
- Parameters:¶
- constraint: iwopy.Constraint
The constraint
- varmap_int: dict, optional
Mapping from objective variables to problem variables. Key: str or int, value: str or int
- varmap_float: dict, optional
Mapping from objective variables to problem variables. Key: str or int, value: str or int
- verbosity: int
The verbosity level, 0 = silent
-
add_objective(objective, varmap_int=
None, varmap_float=None, verbosity=0)¶ Add an objective to the problem.
- Parameters:¶
- objective: iwopy.Objective
The objective
- varmap_int: dict, optional
Mapping from objective variables to problem variables. Key: str or int, value: str or int
- varmap_float: dict, optional
Mapping from objective variables to problem variables. Key: str or int, value: str or int
- verbosity: int
The verbosity level, 0 = silent
- add_to_layout_figure(ax: matplotlib.axes.Axes, **kwargs: Any) matplotlib.axes.Axes¶
Add to a layout figure
- Parameters:¶
- ax
The figure axis
- apply_individual(vars_int: numpy.ndarray, vars_float: numpy.ndarray) Any¶
Apply new variables to the problem.
- apply_population(vars_int: numpy.ndarray, vars_float: numpy.ndarray) Any¶
Apply new variables to the problem, for a whole population.
-
calc_gradients(vars_int, vars_float, func, components, ivars, fvars, vrs, pop=
False, verbosity=0)¶ The actual gradient calculation, not to be called directly (call get_gradients instead).
Can be overloaded in derived classes, the base class only considers analytic derivatives.
- Parameters:¶
- vars_int: np.array
The integer variable values, shape: (n_vars_int,)
- vars_float: np.array
The float variable values, shape: (n_vars_float,)
- func: iwopy.core.OptFunctionList, optional
The functions to be differentiated, or None for a list of all objectives and all constraints (in that order)
- components: list of int, optional
The function’s component selection, or None for all
- ivars: list of int
The indices of the function int variables in the problem
- fvars: list of int
The indices of the function float variables in the problem
- vrs: list of int
The function float variable indices wrt which the derivatives are to be calculated
- pop: bool
Flag for vectorizing calculations via population
- verbosity: int
The verbosity level, 0 = silent
- Returns:¶
- gradients: numpy.ndarray
The gradients of the functions, shape: (n_components, n_vrs)
-
check_constraints_individual(constraint_values, verbosity=
0)¶ Check if the constraints are fullfilled for the given individual.
-
check_constraints_population(constraint_values, verbosity=
0)¶ Check if the constraints are fullfilled for the given population.
-
evaluate_individual(vars_int, vars_float, ret_prob_res=
False)¶ Evaluate a single individual of the problem.
- Parameters:¶
- vars_int: np.array
The integer variable values, shape: (n_vars_int,)
- vars_float: np.array
The float variable values, shape: (n_vars_float,)
- ret_prob_res: bool
Flag for additionally returning of problem results
- Returns:¶
- objs: np.array
The objective function values, shape: (n_objectives,)
- con: np.array
The constraints values, shape: (n_constraints,)
- prob_res: object, optional
The problem results
-
evaluate_population(vars_int, vars_float, ret_prob_res=
False)¶ Evaluate all individuals of a population.
- Parameters:¶
- vars_int: np.array
The integer variable values, shape: (n_pop, n_vars_int)
- vars_float: np.array
The float variable values, shape: (n_pop, n_vars_float)
- ret_prob_res: bool
Flag for additionally returning of problem results
- Returns:¶
- objs: np.array
The objective function values, shape: (n_pop, n_objectives)
- cons: np.array
The constraints values, shape: (n_pop, n_constraints)
- prob_res: object, optional
The problem results
-
finalize(verbosity=
0)¶ Finalize the object.
- Parameters:¶
- verbosity: int
The verbosity level, 0 = silent
-
finalize_individual(vars_int: numpy.ndarray, vars_float: numpy.ndarray, verbosity: int =
1) Any[source]¶ Finalization, given the champion data.
- Parameters:¶
- vars_int
The optimal integer variable values, shape: (n_vars_int,)
- vars_float
The optimal float variable values, shape: (n_vars_float,)
- verbosity
The verbosity level, 0 = silent
- Returns:¶
- problem_results
The results of the variable application to the problem
- objs
The objective function values, shape: (n_objectives,)
- cons
The constraints values, shape: (n_constraints,)
-
finalize_population(vars_int, vars_float, verbosity=
0)¶ Finalization, given the final population data.
- Parameters:¶
- vars_int: np.array
The integer variable values of the final generation, shape: (n_pop, n_vars_int)
- vars_float: np.array
The float variable values of the final generation, shape: (n_pop, n_vars_float)
- verbosity: int
The verbosity level, 0 = silent
- Returns:¶
- problem_results: Any
The results of the variable application to the problem
- objs: np.array
The final objective function values, shape: (n_pop, n_components)
- cons: np.array
The final constraint values, shape: (n_pop, n_constraints)
-
get_gradients(vars_int, vars_float, func=
None, components=None, vars=None, pop=False, verbosity=0)¶ Obtain gradients of a function that is linked to the problem.
The func object typically is a iwopy.core.OptFunctionList object that contains a selection of objectives and/or constraints that were previously added to this problem. By default all objectives and constraints (and all their components) are being considered, cf. class ProblemDefaultFunc.
- Parameters:¶
- vars_int: np.array
The integer variable values, shape: (n_vars_int,)
- vars_float: np.array
The float variable values, shape: (n_vars_float,)
- func: iwopy.core.OptFunctionList, optional
The functions to be differentiated, or None for a list of all objectives and all constraints (in that order)
- components: list of int, optional
The function’s component selection, or None for all
- vars: list of int or str, optional
The float variables wrt which the derivatives are to be calculated, or None for all
- verbosity: int
The verbosity level, 0 = silent
- pop: bool
Flag for vectorizing calculations via population
- Returns:¶
- gradients: numpy.ndarray
The gradients of the functions, shape: (n_components, n_vars)
- initial_values_float() list[float][source]¶
The initial values of the float variables.
- Returns:¶
- values
Initial float values, shape: (n_vars_float,)
- initial_values_int()¶
The initial values of the integer variables.
- Returns:¶
- values: numpy.ndarray
Initial int values, shape: (n_vars_int,)
-
initialize(verbosity: int =
1, model_vars: dict[str, list[str]] | list[str] | None =None, **kwargs: Any) None[source]¶ Initialize the object.
- Parameters:¶
- verbosity
The verbosity level, 0 = silent
- kwargs
Additional parameters for super class init
- max_values_float() numpy.ndarray[source]¶
The maximal values of the float variables.
Use numpy.inf for unbounded.
- Returns:¶
- values
Maximal float values, shape: (n_vars_float,)
- max_values_int()¶
The maximal values of the integer variables.
Use self.INT_INF for unbounded.
- Returns:¶
- values: numpy.ndarray
Maximal int values, shape: (n_vars_int,)
- min_values_float() numpy.ndarray[source]¶
The minimal values of the float variables.
Use -numpy.inf for unbounded.
- Returns:¶
- values
Minimal float values, shape: (n_vars_float,)
- min_values_int()¶
The minimal values of the integer variables.
Use -self.INT_INF for unbounded.
- Returns:¶
- values: numpy.ndarray
Minimal int values, shape: (n_vars_int,)
- classmethod new(problem_type: str, *args: Any, **kwargs: Any) Any¶
Run-time farm vars opt problem factory.
- Parameters:¶
- problem_type
The selected derived class name
- args
Additional parameters for the constructor
- kwargs
Additional parameters for the constructor
- opt2farm_vars_individual(vars_int: numpy.ndarray, vars_float: numpy.ndarray) dict[str, numpy.ndarray][source]¶
Translates optimization variables to farm variables
- opt2farm_vars_population(vars_int: numpy.ndarray, vars_float: numpy.ndarray, n_states: int) dict[str, numpy.ndarray][source]¶
Translates optimization variables to farm variables
- classmethod parse_tvar(tvr: str) tuple[str, int]¶
Parse foxes variable name and turbine index from turbine variable
- prob_res_einsum_individual(prob_res_list, coeffs)¶
Calculate the einsum of problem results
- prob_res_einsum_population(prob_res_list, coeffs)¶
Calculate the einsum of problem results
- update_problem_individual(vars_int: numpy.ndarray, vars_float: numpy.ndarray) None¶
Update the algo and other data using the latest optimization variables.
This function is called before running the farm calculation.
- Parameters:¶
- vars_int
The integer variable values, shape: (n_vars_int,)
- vars_float
The float variable values, shape: (n_vars_float,)
- update_problem_population(vars_int: numpy.ndarray, vars_float: numpy.ndarray) None¶
Update the algo and other data using the latest optimization variables.
This function is called before running the farm calculation.
- Parameters:¶
- vars_int
The integer variable values, shape: (n_pop, n_vars_int,)
- vars_float
The float variable values, shape: (n_pop, n_vars_float,)
- var_names_float() list[str][source]¶
The names of float variables.
- Returns:¶
- names
The names of the float variables
- var_names_int()¶
The names of integer variables.
- Returns:¶
- names: list of str
The names of the integer variables
-
ANGLE =
'angle'¶
-
INT_INF =
-999999¶
-
OFFSET_X =
'offset_x'¶
-
OFFSET_Y =
'offset_y'¶
-
SPACING_X =
'spacing_x'¶
-
SPACING_Y =
'spacing_y'¶
- algo¶
- property all_turbines : bool¶
Flag for all turbines optimization
- Returns:¶
- value
True if all turbines are subject to optimization
- calc_farm_args¶
- cons¶
- property constraints_tol¶
Gets the tolerance values of constraints
- Returns:¶
- ctol: numpy.ndarray
The constraint tolerance values, shape: (n_constraints,)
- property counter : int | None¶
The current value of the application counter
- Returns:¶
- value
The current value of the application counter
-
initial_values =
None¶
- property initialized¶
Flag for finished initialization
- Returns:¶
- bool
True if initialization has been done
- property max_values_constraints¶
Gets the maximal values of constraints
- Returns:¶
- cma: numpy.ndarray
The maximal constraint values, shape: (n_constraints,)
- property maximize_objs¶
Flags for objective maximization
- Returns:¶
- maximize: numpy.ndarray
Boolean flag for maximization of objective, shape: (n_objectives,)
-
memory =
None¶
- min_spacing¶
- property min_values_constraints¶
Gets the minimal values of constraints
- Returns:¶
- cmi: numpy.ndarray
The minimal constraint values, shape: (n_constraints,)
- property n_constraints¶
The total number of constraints, i.e., the sum of all components
- Returns:¶
- n_con: int
The total number of constraint functions
- property n_objectives¶
The total number of objectives, i.e., the sum of all components
- Returns:¶
- n_obj: int
The total number of objective functions
- property n_sel_turbines : int¶
The numer of selected turbines
- Returns:¶
- value
The numer of selected turbines
- name¶
- objs¶
-
points =
None¶