reV.bespoke.place_turbines.PlaceTurbines

class PlaceTurbines(wind_plant, objective_function, capital_cost_function, fixed_operating_cost_function, variable_operating_cost_function, balance_of_system_cost_function, include_mask, pixel_side_length, min_spacing, convex_hull_buffer=0)[source]

Bases: object

Framework for optimizing turbine locations for site specific exclusions, wind resources, and objective

Parameters:
  • wind_plant (WindPowerPD) – wind plant object to analyze wind plant performance. This object should have everything in the plant defined, such that only the turbine coordinates and plant capacity need to be defined during the optimization.

  • objective_function (str) – The objective function of the optimization as a string, should return the objective to be minimized during layout optimization. Variables available are:

    • n_turbines: the number of turbines

    • system_capacity: wind plant capacity (kW)

    • aep: annual energy production (kWh)

    • avg_sl_dist_to_center_m: Average straight-line distance to the supply curve point center from all turbine locations (in m). Useful for computing plant BOS costs.

    • avg_sl_dist_to_medoid_m: Average straight-line distance to the medoid of all turbine locations (in m). Useful for computing plant BOS costs.

    • nn_conn_dist_m: Total BOS connection distance using nearest-neighbor connections (in m). This variable is only available for the balance_of_system_cost_function equation.

    • fixed_charge_rate: user input fixed_charge_rate if included as part of the sam system config.

    • capital_cost: plant capital cost ($) as evaluated by capital_cost_function

    • fixed_operating_cost: plant fixed annual operating cost ($/year) as evaluated by fixed_operating_cost_function

    • variable_operating_cost: plant variable annual operating cost ($/kWh) as evaluated by variable_operating_cost_function

    • balance_of_system_cost: plant balance of system cost ($) as evaluated by balance_of_system_cost_function

    • self.wind_plant: the SAM wind plant object, through which all SAM variables can be accessed

  • capital_cost_function (str) – The plant capital cost function as a string, must return the total capital cost in $. Has access to the same variables as the objective_function.

  • fixed_operating_cost_function (str) – The plant annual fixed operating cost function as a string, must return the fixed operating cost in $/year. Has access to the same variables as the objective_function.

  • variable_operating_cost_function (str) – The plant annual variable operating cost function as a string, must return the variable operating cost in $/kWh. Has access to the same variables as the objective_function. You can set this to “0” to effectively ignore variable operating costs.

  • balance_of_system_cost_function (str) – The plant balance-of-system cost function as a string, must return the variable operating cost in $. Has access to the same variables as the objective_function. You can set this to “0” to effectively ignore balance-of-system costs.

  • include_mask (np.ndarray) – Supply curve point 2D inclusion mask where included pixels are set to 1 and excluded pixels are set to 0.

  • pixel_side_length (int) – Side length (m) of a single pixel of the include_mask.

  • min_spacing (float) – The minimum spacing between turbines (in meters).

  • convex_hull_buffer (float, default=0) – Buffer (in m) to apply to turbine location convex hull before computing the convex hull area and capacity density. By default, 0.

Methods

capital_cost_per_kw(capacity_mw)

Capital cost function ($ per kW) evaluated for a given capacity.

define_exclusions()

From the exclusions data, create a shapely MultiPolygon as self.safe_polygons that defines where turbines can be placed.

initialize_packing()

Run the turbine packing algorithm (maximizing plant capacity) to define potential turbine locations that will be used as design variables in the gentic algorithm.

optimization_objective(x)

The optimization objective used in the bespoke optimization

optimize(**kwargs)

Optimize wind farm layout.

place_turbines(**kwargs)

Define bespoke wind plant turbine layouts.

Attributes

aep

This is the annual energy production of the optimized plant (kWh)

area

This is the area available for wind turbine placement (km^2)

avg_sl_dist_to_center_m

This is the final avg straight line distance to center (m)

avg_sl_dist_to_medoid_m

This is the final avg straight line distance to turb medoid (m)

balance_of_system_cost

This is the balance of system cost of the optimized plant ($)

capacity

This is the final optimized plant nameplate capacity (kW)

capacity_density

This is the optimized capacity density of the wind plant defined with the area available after removing the exclusions (MW/km2)

capital_cost

This is the capital cost of the optimized plant ($)

convex_hull

This is the convex hull of the turbine locations

convex_hull_area

This is the area of the convex hull of the turbines (km^2)

convex_hull_capacity_density

This is the optimized capacity density of the wind plant defined with the convex hull area of the turbine layout (MW/km2)

fixed_charge_rate

Fixed charge rate if input to the SAM WindPowerPD object, None if not found in inputs.

fixed_operating_cost

This is the annual fixed operating cost of the optimized plant ($/year)

full_cell_area

This is the full non-excluded area available for wind turbine placement (km^2)

full_cell_capacity_density

This is the optimized capacity density of the wind plant defined with the full non-excluded area of the turbine layout (MW/km2)

nn_conn_dist_m

This is the final avg straight line distance to turb medoid (m)

nturbs

This is the final optimized number of turbines

objective

This is the optimized objective function value

turbine_x

This is the final optimized turbine x locations (m)

turbine_y

This is the final optimized turbine y locations (m)

variable_operating_cost

This is the annual variable operating cost of the optimized plant ($/kWh)

define_exclusions()[source]

From the exclusions data, create a shapely MultiPolygon as self.safe_polygons that defines where turbines can be placed.

initialize_packing()[source]

Run the turbine packing algorithm (maximizing plant capacity) to define potential turbine locations that will be used as design variables in the gentic algorithm.

optimization_objective(x)[source]

The optimization objective used in the bespoke optimization

optimize(**kwargs)[source]

Optimize wind farm layout.

Use a genetic algorithm to optimize wind plant layout for the user-defined objective function.

Parameters:

**kwargs – Keyword arguments to pass to GA initialization.

See also

GeneticAlgorithm

GA Algorithm.

place_turbines(**kwargs)[source]

Define bespoke wind plant turbine layouts.

Run all functions to define bespoke wind plant turbine layouts.

Parameters:

**kwargs – Keyword arguments to pass to GA initialization.

See also

GeneticAlgorithm

GA Algorithm.

capital_cost_per_kw(capacity_mw)[source]

Capital cost function ($ per kW) evaluated for a given capacity.

The capacity will be adjusted to be an exact multiple of the turbine rating in order to yield an integer number of turbines.

Parameters:

capacity_mw (float) – The desired capacity (MW) to sample the cost curve at. Note as mentioned above, the capacity will be adjusted to be an exact multiple of the turbine rating in order to yield an integer number of turbines. For best results, set this value to be an integer multiple of the turbine rating.

Returns:

capital_cost (float) – Capital cost ($ per kW) for the (adjusted) plant capacity.

property fixed_charge_rate

Fixed charge rate if input to the SAM WindPowerPD object, None if not found in inputs.

property turbine_x

This is the final optimized turbine x locations (m)

property turbine_y

This is the final optimized turbine y locations (m)

property avg_sl_dist_to_center_m

This is the final avg straight line distance to center (m)

property avg_sl_dist_to_medoid_m

This is the final avg straight line distance to turb medoid (m)

property nn_conn_dist_m

This is the final avg straight line distance to turb medoid (m)

property nturbs

This is the final optimized number of turbines

property capacity

This is the final optimized plant nameplate capacity (kW)

property convex_hull

This is the convex hull of the turbine locations

property area

This is the area available for wind turbine placement (km^2)

property convex_hull_area

This is the area of the convex hull of the turbines (km^2)

property full_cell_area

This is the full non-excluded area available for wind turbine placement (km^2)

property capacity_density

This is the optimized capacity density of the wind plant defined with the area available after removing the exclusions (MW/km2)

property convex_hull_capacity_density

This is the optimized capacity density of the wind plant defined with the convex hull area of the turbine layout (MW/km2)

property full_cell_capacity_density

This is the optimized capacity density of the wind plant defined with the full non-excluded area of the turbine layout (MW/km2)

property aep

This is the annual energy production of the optimized plant (kWh)

property capital_cost

This is the capital cost of the optimized plant ($)

property fixed_operating_cost

This is the annual fixed operating cost of the optimized plant ($/year)

property variable_operating_cost

This is the annual variable operating cost of the optimized plant ($/kWh)

property balance_of_system_cost

This is the balance of system cost of the optimized plant ($)

property objective

This is the optimized objective function value