foxes_opt.constraints.area_geometry

Classes

AreaGeometryConstraint

Constrains turbine positions to the inside

FarmBoundaryConstraint

Constrains turbine positions to the inside of

Module Contents

class foxes_opt.constraints.area_geometry.AreaGeometryConstraint(problem: foxes_opt.core.farm_opt_problem.FarmOptProblem, name: str, geometry: foxes.utils.geom2d.AreaGeometry, sel_turbines: list[int] | None = None, disc_inside: bool = False, D: float | None = None, infer_vars: bool = True, **kwargs: Any)[source]

Bases: foxes_opt.core.farm_constraint.FarmConstraint

Constrains turbine positions to the inside of a given area geometry.

Parameters:
problem

The underlying optimization problem

name

The name of the constraint

geometry

The area geometry

sel_turbines

The selected turbines

disc_inside

Ensure full rotor disc inside boundary

D

Use this radius for rotor disc inside condition

infer_vars

Whether to infer the float variables automatically

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.

Parameters:
vars_int

The integer variable values

vars_float

The float variable values

var

The float variable index

components

The selected components, or None for all

Returns:
deriv

The derivative values, shape: (n_sel_components,)

calc_individual(vars_int: numpy.ndarray, vars_float: numpy.ndarray, problem_results: Any, components: list[int] | None = None) → numpy.ndarray[source]

Calculate values for a single individual of the underlying problem.

Parameters:
vars_int

The integer variable values, shape: (n_vars_int,)

vars_float

The float variable values, shape: (n_vars_float,)

problem_results

The results of the variable application to the problem

components

The selected components or None for all

Returns:
values

The component values, shape: (n_sel_components,)

calc_population(vars_int: numpy.ndarray, vars_float: numpy.ndarray, problem_results: Any, components: list[int] | None = None) → numpy.ndarray[source]

Calculate values for all individuals of a population.

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)

problem_results

The results of the variable application to the problem

components

The selected components or None for all

Returns:
values

The component values, shape: (n_pop, n_sel_components)

check_individual(constraint_values: numpy.ndarray, verbosity: int = 0) → numpy.ndarray

Check if the constraints are fullfilled for the given individual.

Parameters:
constraint_values

The constraint values, shape: (n_components,)

verbosity

The verbosity level, 0 = silent

Returns:
values

The boolean result, shape: (n_components,)

check_population(constraint_values: numpy.ndarray, verbosity: int = 0) → numpy.ndarray

Check if the constraints are fullfilled for the given population.

Parameters:
constraint_values

The constraint values, shape: (n_pop, n_components,)

verbosity

The verbosity level, 0 = silent

Returns:
values

The boolean result, shape: (n_pop, n_components)

component_turbines(components: collections.abc.Sequence[int] | numpy.ndarray | None = None) → set[int]

Return turbines associated with constraint components.

Parameters:
components

The selected component indices, or None for all components.

Returns:
turbines

The associated turbine indices.

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, 0 = silent

n_components() → int[source]

Returns the number of components of the function.

Returns:
value

The number of components.

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

classmethod print_models() → None

Prints all model names.

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[tuple[int, int], numpy.dtype[numpy.bool_]][source]

Gets the dependencies of all components on the function float variables

Returns:
deps

The dependencies of components on function variables, shape

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)

D = None
property component_names : list[str]

The names of the components

Returns:
names

The component names

disc_inside = False
property farm : foxes.core.WindFarm

The wind farm

Returns:
value

The wind farm

geometry
infer_vars = True
property initialized : bool

Flag for finished initialization

Returns:
initialized

True if initialization has been done

property n_sel_turbines : int

The numer of selected turbines

Returns:
value

The numer of selected turbines

property n_vars_float : int

The number of float variables

Returns:
n

The number of float variables

property n_vars_int : int

The number of int variables

Returns:
n

The number of int variables

name = 'Base'
problem
property sel_turbines : list[int]

The list of selected turbines

Returns:
value

The list of selected turbines

tol = 1e-05
property var_names_float : list[str]

The names of the float variables

Returns:
names

The float variable names

property var_names_int : list[str]

The names of the integer variables

Returns:
names

The integer variable names

class foxes_opt.constraints.area_geometry.FarmBoundaryConstraint(problem: foxes_opt.core.farm_opt_problem.FarmOptProblem, name: str = 'boundary', **kwargs: Any)[source]

Bases: AreaGeometryConstraint

Constrains turbine positions to the inside of the wind farm boundary

Parameters:
problem

The underlying optimization problem

name

The name of the constraint

kwargs

Additional parameters for AreaGeometryConstraint

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

Calculate the analytical derivative for one float variable.

Parameters:
vars_int

The integer variable values

vars_float

The float variable values

var

The float variable index

components

The selected components, or None for all

Returns:
deriv

The derivative values, shape: (n_sel_components,)

calc_individual(vars_int: numpy.ndarray, vars_float: numpy.ndarray, problem_results: Any, components: list[int] | None = None) → numpy.ndarray

Calculate values for a single individual of the underlying problem.

Parameters:
vars_int

The integer variable values, shape: (n_vars_int,)

vars_float

The float variable values, shape: (n_vars_float,)

problem_results

The results of the variable application to the problem

components

The selected components or None for all

Returns:
values

The component values, shape: (n_sel_components,)

calc_population(vars_int: numpy.ndarray, vars_float: numpy.ndarray, problem_results: Any, components: list[int] | None = None) → numpy.ndarray

Calculate values for all individuals of a population.

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)

problem_results

The results of the variable application to the problem

components

The selected components or None for all

Returns:
values

The component values, shape: (n_pop, n_sel_components)

check_individual(constraint_values: numpy.ndarray, verbosity: int = 0) → numpy.ndarray

Check if the constraints are fullfilled for the given individual.

Parameters:
constraint_values

The constraint values, shape: (n_components,)

verbosity

The verbosity level, 0 = silent

Returns:
values

The boolean result, shape: (n_components,)

check_population(constraint_values: numpy.ndarray, verbosity: int = 0) → numpy.ndarray

Check if the constraints are fullfilled for the given population.

Parameters:
constraint_values

The constraint values, shape: (n_pop, n_components,)

verbosity

The verbosity level, 0 = silent

Returns:
values

The boolean result, shape: (n_pop, n_components)

component_turbines(components: collections.abc.Sequence[int] | numpy.ndarray | None = None) → set[int]

Return turbines associated with constraint components.

Parameters:
components

The selected component indices, or None for all components.

Returns:
turbines

The associated turbine indices.

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

Initialize the constraint.

Parameters:
verbosity

The verbosity level, 0 = silent

n_components() → int

Returns the number of components of the function.

Returns:
value

The number of components.

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

classmethod print_models() → None

Prints all model names.

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[tuple[int, int], numpy.dtype[numpy.bool_]]

Gets the dependencies of all components on the function float variables

Returns:
deps

The dependencies of components on function variables, shape

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)

D = None
property component_names : list[str]

The names of the components

Returns:
names

The component names

disc_inside = False
property farm : foxes.core.WindFarm

The wind farm

Returns:
value

The wind farm

geometry
infer_vars = True
property initialized : bool

Flag for finished initialization

Returns:
initialized

True if initialization has been done

property n_sel_turbines : int

The numer of selected turbines

Returns:
value

The numer of selected turbines

property n_vars_float : int

The number of float variables

Returns:
n

The number of float variables

property n_vars_int : int

The number of int variables

Returns:
n

The number of int variables

name = 'Base'
problem
property sel_turbines : list[int]

The list of selected turbines

Returns:
value

The list of selected turbines

tol = 1e-05
property var_names_float : list[str]

The names of the float variables

Returns:
names

The float variable names

property var_names_int : list[str]

The names of the integer variables

Returns:
names

The integer variable names