foxes_opt.constraints.nearest_group¶
Classes¶
Keep every turbine in a sufficiently large nearby connected group. |
Module Contents¶
-
class foxes_opt.constraints.nearest_group.NearestGroupConstraint(problem: foxes_opt.core.farm_opt_problem.FarmOptProblem, max_nearest_dist: float, min_nearest_group_size: int, name: str =
'nearest_group', sel_turbines: list[int] | None =None, infer_vars: bool =True, check_only_selected: bool =False, **kwargs: Any)[source]¶ Bases:
foxes_opt.core.farm_constraint.FarmConstraintKeep every turbine in a sufficiently large nearby connected group.
For every selected turbine, this constraint finds the smallest connection radius at which its distance graph component reaches the required group size. The constraint value is that radius minus
max_nearest_dist. Requiring a group size of at least two also enforces the nearest-turbine upper bound whenmin_nearest_group_sizeis one.The connection radius is piecewise equal to the length of one graph edge. Its analytical derivative follows that active edge. At equal edge lengths, a deterministic active branch is used.
- Parameters:¶
- problem
The underlying optimization problem.
- max_nearest_dist
Maximum graph-edge distance for connected turbine groups.
- min_nearest_group_size
Minimum number of turbines in every connected group.
- name
The name of the constraint.
- sel_turbines
The selected turbines.
- infer_vars
Whether to infer the float variables automatically.
- check_only_selected
Whether groups may contain only selected turbines. By default, fixed turbines can contribute to a selected turbine’s group.
- kwargs
Additional parameters for
iwopy.Constraint.
- active_components(vars_float: numpy.ndarray, lower: numpy.ndarray, upper: numpy.ndarray) numpy.ndarray¶
Select components that can bind within a guarded variable box.
- Parameters:¶
- vars_float
Initial values in this function’s float-variable order.
- lower, upper
Enforced variable bounds in the same order. Infinite bounds must be treated conservatively.
- Returns:¶
- components
Unique local component indices. The default retains all. Overrides may omit a component only when it is guaranteed feasible throughout the box, not merely at the initial point. Full evaluation and feasibility contracts remain unchanged.
- add_to_layout_figure(ax: matplotlib.axes.Axes, **kwargs: Any) matplotlib.axes.Axes¶
Add to a layout figure
- Parameters:¶
- ax
The figure axis
-
ana_deriv(vars_int: numpy.ndarray, vars_float: numpy.ndarray, var: int, components: collections.abc.Sequence[int] | numpy.ndarray | None =
None) numpy.ndarray[source]¶ Calculate the analytical derivative for one float variable.
-
calc_individual(vars_int: numpy.ndarray, vars_float: numpy.ndarray, problem_results: Any, components: collections.abc.Sequence[int] | numpy.ndarray | None =
None) numpy.ndarray[source]¶ Calculate constraint values for one individual.
-
calc_population(vars_int: numpy.ndarray, vars_float: numpy.ndarray, problem_results: Any, components: collections.abc.Sequence[int] | numpy.ndarray | None =
None) numpy.ndarray[source]¶ Calculate constraint values for a population.
-
check_individual(constraint_values: numpy.ndarray, verbosity: int =
0) numpy.ndarray¶ Check if the constraints are fullfilled for the given individual.
-
check_population(constraint_values: numpy.ndarray, verbosity: int =
0) numpy.ndarray¶ Check if the constraints are fullfilled for the given population.
-
component_turbines(components: collections.abc.Sequence[int] | numpy.ndarray | None =
None) set[int][source]¶ Return turbines represented by constraint components.
-
finalize(verbosity: int =
0, /) None¶ -
finalize(*, verbosity: int =
0) None Finalize the object.
- Parameters:¶
- verbosity
The verbosity level, 0 = silent
-
finalize_individual(vars_int: numpy.ndarray, vars_float: numpy.ndarray, problem_results: object, verbosity: int =
1) numpy.ndarray¶ 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,)
- problem_results
The results of the variable application to the problem
- verbosity
The verbosity level, 0 = silent
- Returns:¶
- values
The component values, shape: (n_components,)
-
finalize_population(vars_int: numpy.ndarray, vars_float: numpy.ndarray, problem_results: object, verbosity: int =
1) numpy.ndarray¶ Finalization, given the final population data.
- Parameters:¶
- vars_int
The integer variable values of the final generation, shape: (n_pop, n_vars_int)
- vars_float
The float variable values of the final generation, shape: (n_pop, n_vars_float)
- problem_results
The results of the variable application to the problem
- verbosity
The verbosity level, 0 = silent
- Returns:¶
- values
The component values, shape: (n_pop, n_components)
- get_bounds() tuple[numpy.ndarray, numpy.ndarray]¶
Returns the bounds for all components.
Non-existing bounds are expressed by np.inf.
- Returns:¶
- min
The lower bounds, shape: (n_components,)
- max
The upper bounds, shape: (n_components,)
-
initialize(verbosity: int =
0) None[source]¶ Initialize the constraint.
- Parameters:¶
- verbosity
The verbosity level, where zero is silent.
- n_components() int[source]¶
Return the number of constraint components.
- Returns:¶
- value
The number of selected turbines.
- classmethod new(constraint_type: str, *args: Any, **kwargs: Any) Any¶
Run-time farm constraint factory.
- Parameters:¶
- constraint_type
The selected derived class name
- args
Additional parameters for the constructor
- kwargs
Additional parameters for the constructor
- rename_vars_float(varmap: collections.abc.Mapping[str | int, str]) None¶
Rename float variables.
- Parameters:¶
- varmap
The name mapping. Key: old name str, Value: new name str
- rename_vars_int(varmap: collections.abc.Mapping[str | int, str]) None¶
Rename integer variables.
- Parameters:¶
- varmap
The name mapping. Key: old name str, Value: new name str
- vardeps_float() numpy.ndarray[source]¶
Return float-variable dependencies for all components.
- Returns:¶
- dependencies
The dependency mask, with shape
(n_components, n_vars_float).
- vardeps_int() numpy.ndarray¶
Gets the dependencies of all components on the function int variables
- Returns:¶
- deps
The dependencies of components on function variables, shape: (n_components, n_vars_int)
-
check_only_selected =
False¶
- property component_names : list[str]¶
The names of the components
- Returns:¶
- names
The component names
-
infer_vars =
True¶
- property initialized : bool¶
Flag for finished initialization
- Returns:¶
- initialized
True if initialization has been done
- max_nearest_dist¶
- min_nearest_group_size¶
- property n_sel_turbines : int¶
The numer of selected turbines
- Returns:¶
- value
The numer of selected turbines
-
name =
'Base'¶
- problem¶
- property sel_turbines : list[int]¶
The list of selected turbines
- Returns:¶
- value
The list of selected turbines
-
tol =
1e-05¶