8a OPTIMIZE
8a.1 Introduction .......................................................................................................................................... 2
8a.1.1 Offshore Vs Onshore optimization ......................................................................................... 2
8a.1.2 The GUI tree-structure and its levels: Site>WTG>Size>Run ................................................ 2
8a.2 Which decision to optimize? .............................................................................................................. 7
8a.2.1 Design of layout (given park size) ......................................................................................... 8
8a.2.2 Number of WTGs (park size) ................................................................................................. 9
8a.2.3 Choice of turbine model ....................................................................................................... 10
8a.2.4 Fulfillment of constraints (spacing, noise, lifetime, wake) ................................................... 11
8a.3 Optimization algorithm ...................................................................................................................... 12
8a.3.1 Start model .......................................................................................................................... 13
8a.3.2 Step model ........................................................................................................................... 14
8a.3.3 Stop criteria .......................................................................................................................... 14
8a.3.4 Objective & Constraints ....................................................................................................... 15
8a.4 Objectives ........................................................................................................................................... 16
8a.4.1 AEP ...................................................................................................................................... 16
8a.4.2 Costs .................................................................................................................................... 16
8a.4.3 LCOE ................................................................................................................................... 18
8a.4.4 NPV...................................................................................................................................... 18
8a.5 Constraints ......................................................................................................................................... 20
8a.5.1 Area & distance (sub-areas) ................................................................................................ 20
8a.5.2 Wake loss ............................................................................................................................ 20
8a.5.3 Noise .................................................................................................................................... 20
8a.5.4 Component Lifetime (loads) ................................................................................................ 21
8a.6 Practical recommendations .............................................................................................................. 22
8a.6.1 WTG Area import ................................................................................................................. 22
8a.6.2 Example projects ................................................................................................................. 22
8a.7 References .......................................................................................................................................... 24
Introduction 2
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.1 Introduction
The Classical Optimizer in windPRO was released around year 2000. It has performed well for the tasks it was
designed to solve in the youth of the wind energy business. Since then, the development of the wind industry
has been fast, and many new requirements and challenges have become relevant. The size of wind farms and
the complexity of wind farm areas has increased dramatically. But also, the basis on which decisions are made
has matured, so that financial parameters such as costs of developing the farm and even the expectation for
future electricity prices should be included already in the windfarm design phase. In addition, new constraining
factors emerged that must be considered, such as wake effects from new wind turbines on existing wind turbines.
These developments have led to the need for a new windPRO Optimizer has been released in 2022 in windPRO
3.6. This was just the start of journey towards optimal design and operation of wind farms, and new features
have been integrated since into the new windPRO 4.0. Now, in addition to layout optimization, a long-awaited
noise curtailment optimization is offered, which is explained in detail in the Noise Curtailment Optimize manual.
The journey has not ended here; a wider range of cases will be supported, and more features will be included in
windPRO versions to come. If you experience limitations, have wishes or ideas please do not hesitate to reach
out and contact us we are more than happy to listen to your input!
8a.1.1 Offshore Vs Onshore optimization
The New Optimizer in windPRO covers both onshore and offshore optimization. For offshore layouts the
geometry is not fixed, for this functionality the user is referred to the Classical windPRO optimizer. The key
differences between onshore and offshore optimizations lie in the setup of the wake decay constant for the
annual energy production (AEP) calculation and in the model for calculating the cost of building the wind farm (if
costs are included in the objective). Hence, for pure optimizations of AEP there is no difference in the way that
the Optimizer operates. However, the performance will of course be guided by the user-provided information
such as WTG area and resource, which typically have distinct characteristics offshore and will be reflected in
the resulting optimization solutions. A new feature that is particularly useful for offshore applications that comes
with the release of 4.0 is the integration of cost surfaces. This feature allows to better integrate costs that change
over space into the cost analysis. Further details of onshore and offshore cost models are given in section 8a.4.2.
8a.1.2 The GUI tree-structure and its levels: Site>WTG>Size>Run
A flexible graphical user interface (GUI) has been developed for the New Optimizer to accommodate several
different scenarios of use (see section 8a.2 for a description of the scenarios). This flexible GUI is represented
by a tree located on the left side of the Optimizer window. The tree will be gradually built-up by the user with the
required input information and with the different optimization scenarios run by the user. A lot of information needs
to be defined and setup prior to running the optimizations. This setup of pre-defined data and pre-calculated
information is a prerequisite for gaining sufficiently fast, yet accurate, optimization results.
Figure 1: The basic components and levels of the GUI tree: Site, WTG, Size and Run, with Run highlighted.
Building the tree, setting up and preparing the optimization, different information and decisions must be defined
and entered. When a level or item is selected and highlighted in the GUI tree (see Figure 1) the window on the
right shows the contents associated to this item, e.g. Site. Adding new levels to build the tree is done using the
three buttons below the tree. On the first occasion of adding a level the relevant button is highlighted in green.
Figure 2: Building the GUI tree for the optimization and adding levels. Next step is always highlighted in green.
The following sub-sections go through the setup that needs to be defined at each level of the GUI tree. While
setting up and running optimizations the main window of the Optimizer should be on the tab Setup & run.
Introduction 3
© EMD International www.emd.dk windPRO 4.0 September 2023
Figure 3: When setting up and running optimizations the tab of main window should be on ‘Setup & run’.
8a.1.2.1 Site
The Site level is the fundamental level of the optimization, but there can be multiple Sites in the tree to allow
studying the effect of different basic assumptions. In the Site, the following information and settings must be
defined:
Site Climate/Resources - here the pre-calculated wind resource across the site must be defined by selecting an
‘rsf’ or ‘siteres’ file. Ideally, the resource has a grid resolution of 0.5 times the turbine rotor diameter or less as
this leads to a good balance between resolution and performance.
Objective this is the choice of what the user wants to optimize: AEP (annual energy production), LCOE (cost
of electricity) or NPV (profit of project). These are described in detail in section 8a.4. For each choice of objective
several associated decisions are required. For instance, Wake Decay constant in the PARK calculation (all
objectives), setting up a Cost Model (LCOE and NPV) or setting the expectation for the future average Electricity
Price.
Constraints - The particular requirements for the site must be defined and ALWAYS requires definition of a WTG
Area. This defines the limits of the site area or sub-areas where turbine placement is allowed, any requirements
for minimum and maximum turbine numbers or capacity in each sub-area. It also defines exclusion zones and
set-back buffers as well as minimal spacing requirements for turbines in each sub-area. In addition to this the
spacing or inter-turbine Distance defined in the WTG area may be activated or deactivated. Finally, constraints
on turbine component Lifetime, turbine noise at noise sensitive areas, and Wake constraints for new and existing
WTGs may be activated (see section 8a.5 for further details).
Connection points Objectives which require cost calculation (LCOE and NPV) may include known connection
points for external grid and road connection. These points must be pre-defined as Control points and selected
here.
Existing WTGs If there are known turbines in the area from other projects which will create wakes on this
project they must be defined as existing WTGs and selected here. Their wake effect on the new turbines will be
included and the additional wake that they might experience can be considered.
Noise sensitive areas If noise constraint is activated one or more noise sensitive area (NSA) points must be
selected here.
Figure 4: Setting up the Site level of an optimization and building the GUI tree.
Introduction 4
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.1.2.2 WTG
At the WTG level the required data must be defined for the objective and constraints selected on the Site level.
All new turbines in optimizations in this branch of the tree will be done using the selected turbine and data.
WTG & Mode - Any optimization requires the selection of a turbine model from windPRO’s WTG catalogue, a
Hub height, and the Power curve/Mode for that turbine model. This is the basis for the AEP and wake loss
calculations. For traditional power curve data the appropriate power curve is selected and for Power Matrix data
the operation mode is also selected.
Lifetime/Loads If lifetime constraint is activated the turbine Design Standard and Design Class must be defined
as well as the Load Response Model for use in the calculation of loads and lifetime.
Noise Data When noise constraint has been activated the noise data must be selected. For Power Matrix the
noise data are pre-defined via the selected mode.
Use individual WTG cost model - When multiple WTG types are defined for the same Site, it might be relevant
to define different cost models for each WTG type individually. In that case this option must be activated and the
cost model for the current WTG type defined here. This will override the cost model selected on the Site level.
Figure 5: Setting up the WTG level of an optimization.
8a.1.2.3 Size (and ‘Add Sizes & Runs’ button)
The Size level has no setting up on the window to the right. Instead, it is created in a single step together with at
least one Run at it its sub-level (child). This is done via the Add Sizes & Runs button (see green highlight in
Figure 5).
Once the Sizes and Runs have been created this window shows an overview of all the runs for this size. In this
regard a run is simply an optimization for the park size in question and subject to optimization settings.
The benefit from adding Sizes & Runs in a single step is mainly efficiency, so that more park sizes can be created
at once with identical optimization settings without further effort.
Define Park size(s) - Here the user can define the park sizes of interest. Note that ALL sizes from minimum
through to maximum will be created once the button Create & queue runs is pressed after which a separate
optimization will be run for each size. It is therefore recommended to limit the range of sizes such that it results
in a reasonable number of optimizations. The table above the size selection summarizes the requirements for
minimum and maximum turbine numbers in the WTG area. Limits on capacity are automatically converted to
Introduction 5
© EMD International www.emd.dk windPRO 4.0 September 2023
turbine numbers given the selected WTG. Alternatives, to defining a range of sizes are either to define a User
layout where the user must select the initial positions for the optimization or Fill max which will seek to fill the
maximum number of turbine units (see section 8a.3 for further details).
Run setup for each Size This setup defines the optimization strategy for each created optimization run. Default
is Smart with the alternatives Random and Custom. The latter unlocks the lower section of the window
unleashing the full flexibility of the optimization solution (see section 8a.3 for details). The Realizations setting
available for Random simply defines how many times to repeat the experiment of starting an optimization run
from a random initial layout. Setting realizations to, for example, five will yield five different random runs for each
size.
When setup is done in the Setup & Run window the optimizations can either be put in the queue directly by
pressing Create & queue runs or be parked for now to be run later by pressing Create & park runs.
Figure 6: Setting up the Size and Run level in one go via the button ‘Add Sizes & Runs’.
Introduction 6
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.1.2.4 Run
The deepest level of the GUI tree is the Run level. At this level each optimization run is presented and when
they are completed a resulting optimized layout can be created in the windPRO object list and map window by
pressing Realize Final Layout. Through the course of the optimization the positions of WTGs at the current step
of the optimization run are visible and updated in the Layout plot. Similarly, the Steps list will show the current
and history of the Objective. Alternatively, the Wake loss (available for all objective) or AEP, Wake loss or Cost
1
are plotted (only available for LCOE and NPV objectives. This information is also available in the Convergence
plot. At the top of the view is a detailed summary of the settings for the run, including a Status indication whether
it is running, done or failed.
Details of constraints and/or individual turbine production and wake loss information may be viewed via the
buttons Show AEP/Wake and Show Constraints to the lower left of the Optimizer window.
Figure 7: The Run level of the GUI tree. This documents the course the optimization run selected in the tree.
The current status of a run is indicated in the Status line in the Summary when the run is selected in the tree.
The status is also in the tree itself on the level of the run and via the icons shown to the left on that line. The
legend for these icons and a summary status of all current runs within the tree are shown just below the tree
(see Figure 7).
1
Note that shown cost values are not discounted only index corrected (if set) and summed over the lifetime.
Which decision to optimize? 7
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.2 Which decision to optimize?
Many important decisions need to be taken when developing a wind farm. Several of these decisions can benefit
from an optimization approach but may not fit well into a traditional optimization setup. In some of the cases the
variables on which the decisions are based on (the objective) such as AEP, or financial metrics as cost-of-energy
(COE) may not be suitable or sufficiently sensitive to the decisions in question. One such example is the size of
a wind farm. The relation between the number of WTGs in the farm and the associated AEP, is simply an increase
with the number of WTGs. COE on the other hand typically decreases smoothly with the number of WTGs. This
makes AEP and COE unsuitable for determining the optimal size of a wind farm on their own [1]. To
accommodate these additional and important decisions in the optimization setup, but not directly in the actual
algorithmic optimization process, the decision of these variables is supported by the structure of the GUI. The
main use-scenarios are described in the following and includes the following key decisions in wind farm
development:
Design of a layout
Number of WTGs in the park
Choice of turbine model
Fulfillment of constraints
Section 8a.1.2 has described how to establish the tree with a Site, WTG and one or more optimization runs and
the settings and inputs needed at each level of the GUI tree. All these settings are done on the Setup & Run tab
(cf. Figure 8), which basically is the action mode of the Optimizer, where optimizations can be added and setup
and details can be viewed.
Figure 8: The Compare and Setup & Run tabs. Here Compare is selected.
To compare multiple finalized optimizations the Optimizer has a ‘comparison mode’ which is available via the
Compare tab (cf. Figure 8). In compare mode, the GUI allows for easy comparison across results for different
WTGs, sizes and runs mainly showing the results and some overall settings. Once in compare mode (i.e. on the
Compare tab) the GUI tree will behave slightly differently as it will start highlighting the runs which are being
compared in mustard color (cf. Figure 9). The highlight shows the level selected by the user below which runs
will be compared. When a site is selected results will be compared for WTGs defined for that site. For each WTG
the best run across all sizes will be chosen and highlighted in mustard color. When selecting a WTG all sizes
below that level will be compared, for each size the best run will be chosen if there is more than one run. Selecting
a size will simply compare all runs for that size.
At the current stage it is not possible to compare across sites, as they may have different objectives and
constraints which cannot easily be compared.
Figure 9: Appearance of the GUI-tree when in compare mode.
Which decision to optimize? 8
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.2.1 Design of layout (given park size)
Designing a layout with a single fixed number of WTGs is the basic and simplest mode of use for the Optimizer.
Just one optimization needs to be set up and run once the data and settings on the Site and WTG levels have
been defined. The flexibility of the GUI tree helps to compare different strategies for the optimization, described
in further detail in section 8a.3. Such strategies could include the default, which is called Smart, a user defined
initial layout (via User Layout), or perhaps relying more on stochasticity by including random runs. In the last
case, several random runs can be started via Realizations.
Once a single run has been added for the park size in question more runs can be added by selecting the size in
the tree and pressing the button Add Runs, which in this case has replaced the Add Sizes & Runs button (shown
when the WTG level is selected). If, on the other hand, a particular run in the tree is selected, then the button
renames to Clone Run this will allow to use the result of that run at starting point for another run. This can be
useful for continuing an optimization or doing an optimization with multiple stages. The three variants of the
Add…’ button are shown in Figure 10.
Figure 10: Different variants of the ’Add…’ button. The variant Add Sizes & Runs occurs when a WTG is selected
in the tree, Add Runs when a Size is selected and Clone Run when an existing finalized run is selected.
An example of a size with several runs is demonstrated in Figure 11 showing the view on Setup & Run tab.
Figure 12 shows the view on the Compare tab, which is more focused on comparing the objective for the final
layout across the runs.
Figure 11: Setup & Run tab for a park size (10 WTGs) with several runs. See Figure 12 for Compare tab.
Which decision to optimize? 9
© EMD International www.emd.dk windPRO 4.0 September 2023
Figure 12: Compare tab showing several runs for the same size (10 WTGs) also shown in Figure 11.
8a.2.2 Number of WTGs (park size)
The New Optimizer can be used to analyze parks with different sizes, but it does not optimize for the number of
turbines since the objectives are not well suited to optimize the park size: If the objective is to maximize the AEP,
it is generally best to place as many wind turbines as possible into the park. In such case the Fill max option can
be used. On the contrary, if the objective is to minimize the costs, it would be optimal to place none. In practice,
the problem is often to find the wind turbine positions that are optimal for the specified objective with a given
park size, and it is more useful to analyse different set-ups per park size and for different park sizes.
To analyze the park size, simply set the appropriate range of sizes from min to max in the Add Sizes & Runs
setup as shown in Figure 13. Then choose the preferred setup of the runs which will be created for each size
(see section 8a.1.2.3 for further details). The Optimizer uses parallelization so several runs will start and run
simultaneously to speed-up performance.
Figure 13: Setting a range of park sizes in the Add Sizes & Runs window. An optimization run (or more via
Realizations) will be created for each size.
Once completed, the results can be visualized and analyzed on the Compare tab and by selecting the relevant
WTG in the tree.
Which decision to optimize? 10
© EMD International www.emd.dk windPRO 4.0 September 2023
Figure 14: Example Compare view for a range of sizes. The optimizations are run using LCOE objective.
In some cases, the runs for the largest park sizes will fail before all turbines could be placed by the start model.
This can indicate the maximum number of turbines which is possible to place, but care must be taken as several
factors influence this outcome. One thing is making sure that the grid resolution is not too coarse, generally
around 0.5 RD ensures good performance. Another possibility is that the default start model (Smart) places
turbines according to the objective but that the maximum is determined by a constraint, hence placement may
not be ideal regarding minimizing constraint exceedance. Section 8a.2.4 describes a procedure that improves
chances of finding a valid layout in such cases.
8a.2.3 Choice of turbine model
To analyze the choice of WTG model, simply add all the relevant WTG models to the Site. In such cases setting
the maximum allowed capacity of the grid in the WTG area is beneficial as this will automatically influence the
maximum number of turbines for each model, given its capacity. It may also be relevant to set individual cost
models for each WTG if detailed cost information is available. However, this is not required as the default cost
model will automatically account for the difference in rotor size and generator capacity of each WTG type.
Figure 15: Setting individual cost models for each WTG type.
The results across the WTGs may be compared on the Compare tab by selecting the relevant site in the tree. If
there are more sizes and runs for each WTG the best run (with regard to the selected objective) is chosen to
Which decision to optimize? 11
© EMD International www.emd.dk windPRO 4.0 September 2023
represent each WTG type. Figure 16 shows an example of comparing NPV optimizations across three turbine
types.
Figure 16: Compare tab showing results for three different WTG models for a site.
8a.2.4 Fulfillment of constraints (spacing, noise, lifetime, wake)
In some cases, the optimization is more driven by the constraints (noise or loads) than by the objective (AEP,
LCOE or NPV). This does not mean that the objective is irrelevant, but rather that the design space is very
difficult to navigate in for the Optimizer because large parts are invalid due to the constraints. In some cases,
this may lead to runs failing for particular sizes because the start model cannot generate a valid layout, i.e.
place all turbines without violating the constraints. If this happens it can be beneficial to add several runs with
the Random run setup for a failed size and with the setting Allow invalid start model activated. This will allow
the start model to place all the required turbines but disregard the constraints (except the WTG area). The step
model will then seek to minimize the constraint exceedance first, and if that succeeds then optimize the
objective function.
Figure 17: Setup of a run showing how Allow invalid start model is activated. This option is only supported for
Random start models.
Optimization algorithm 12
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.3 Optimization algorithm
The wind farm optimization problem is a difficult problem mainly due to the occurrence of several local minima
and so-called non-linearity and interaction in the objective functions, chiefly arising from the turbine wake
interaction. If one turbine is moved the optimum position for all other turbines in the park may change or they
may exceed a constraint they did not before. These effects may be accentuated by too coarse a resource grid
and too coarse a directional resolution in the wake model or simply by multi-directional wind roses. When
constraints are included, these may also prevent otherwise beneficial layout changes and effectively split the
solution space into many smaller un-connected “islands” (in a high dimensional sense), which are extremely
difficult to navigate for an optimization algorithm. The supported objectives and constraints are described in
section 0.
The structure of the New Optimizer reflects the structure of the underlying solution approach, which is a classical
iterative search, but with many built-in smart features that improve its performance and efficiency. In this
framework, an optimization needs a Start model, an initial ‘first guess’ and then a Step model that subsequently
seeks to make iterative, incremental improvements to further improve and optimize the Start model. As the final
optimal model is not known a priori, one or more Stop criteria are needed to decide when to halt the search of
the Step model. This could be once a maximum time or a maximum number of fruitless attempts to take a new
step improvement have been tried.
The better the initial Start model the more focused the iterative Step model can perform its search. In fact, the
wind farm optimization problem is so complex that with many turbines it is very difficult for an iterative solution
to find a good optimum. Increasing the likelihood of ending up in an only modestly good local optimum. In this
sense the old saying “Well begun is half done is extremely pertinent and the reason for the development of the
Smart Start models described in section 8a.3.1.
Figure 18 shows the basic options available for setting up optimization runs. The Optimizer includes multiple
options both for the Start model, Step model and Stop criteria and is quite flexible in this sense. However, the
basic options shown represent the main recommended combinations of Start and Step models.
Figure 18: The basic setup options for optimization runs.
The full flexibility is available when choosing the Custom option where all the Start, Step and Stop options
become available. These options are summarized in the bullet points below including the two additional options,
Seed and Realization, which are explained in their respective parentheses.
Custom
o Start: Fill; Manual; Resource Greedy; Random; Smart
o Step: Random, Local; Random, Regional; Random, Global
Resolution: Discrete (Limit to grid points), Continuous
o Stop: Max runtime, Max fruitless tries, (exhausted neighborhood)
o Stochastic (use of random numbers)
o Seed (to ensure reproducibility of stochastic methods)
o Realizations (how many runs to generate for a stochastic method)
Optimization algorithm 13
© EMD International www.emd.dk windPRO 4.0 September 2023
The last listed Stop criterion, exhausted neighborhood, is in parentheses as it is never selectable for the end-
user and always applied when the optimization runs with the Discrete resolution setting, where turbine positions
are limited to the grid points in the resource grid. This Resolution setting with options Discrete or Continuous is
a property of the step model as it is referred to as Limit to grid points in the basic options setup (i.e. not Custom).
Figure 19: The detailed setup options available when choosing the Custom option.
To keep the GUI user-friendly, we have pre-defined combinations of Start model and Step model (cf. Figure 18)
that are known to perform well together. Above all the Smart option which is the default option will perform the
best in the majority of cases. The pre-defined (default) combinations are listed below indicating the Start and
Step models
User Layout
o Start: Manual (i.e., user defined)
o Step: Random, Regional
Fill max
o Start: Fill
o Step: Random, Local
Smart
o Start: Smart
o Step: Random, Local
Random
o Start: Random
o Step: Random, Regional
The following sections describe the Start, Step and Stop options in further detail.
8a.3.1 Start model
The purpose of the Start model is to define the initial guess of the optimization solution and to make that guess
as good as possible. As described earlier, for complex optimization problems well begun really is half done”,
and most likely much more than just half done. A poor starting model will be more likely to end up in modest
local optimal solutions. All the start models operate strictly on the resource grid. If this grid is excessively coarse
relative to the rotor diameter of the turbine model, that is to say >1RD, the performance of the Start models may
deteriorate, in particular the more advanced ones like the Smart Start model. The optimal trade-off between
speed and resolution lies around 0.5RD for the resource grid spacing relative to the turbine rotor diameter.
Unless the Allow invalid start model is activated the Start model will respect all activated constraints. The option
can only be activated for the Random start model. See section 8a.2.4 for further information.
The Smart Start model picks the optimal position (approximately) for each new WTG it places, regarding the
actual chosen objective and the effects of already-placed turbines. If stochastic is activated a measure of
randomness is added in the placement of each individual turbine.
The Random Start model is fully stochastic and picks the positions at random across the entire grid. More than
one Realization is recommended for this model, typically 7-8 or more, which simply means doing several similar
runs with different sets of random numbers. This model can be beneficial particularly if the optimization is strongly
Optimization algorithm 14
© EMD International www.emd.dk windPRO 4.0 September 2023
influenced by restrictive constraints. A fixed Seed may be set to exactly reproduce random numbers as this seed
is used both for the start and step models to ensure full consistency. A fixed seed cannot be used with multiple
realizations.
The Resource Greedy option is mainly included for historic reasons and for comparisons with the Classical
windPRO Optimizer. It picks each turbine position according to the best available resource position disregarding
wake effects and any objective function. This option performs well for sites with strong resource variation (e.g. a
ridge) using the AEP objective.
The Fill Start model will simply disregard the resource and start filling turbines from one corner only respecting
the constraints until the required number have been placed. If selected via the Fill max option, the filling will
continue until no more turbines can be placed due to the constraints this option is particularly vulnerable to too
coarse a resource grid.
The Manual Start model is defined by the user who selects the turbine’s starting positions.
8a.3.2 Step model
The Step model iteratively seeks to improve the Start model until a Stop criterion is met. All the Step models are
stochastic, which means that they rely on random numbers. This means that both a turbine is selected at random
and that a new position for that turbine is selected at random. The main difference between the Step models is
the pool of positions from which these new positions are drawn.
The Random, Local Step model assumes that the current layout and turbine positions are relatively close to the
optimum. The assumption is typically valid for Smart Start models and Manual user defined Start models. The
local step model draws random positions from a local area around the turbine.
The Random, Regional Step model draws the random positions from a relatively large region around the turbine,
expecting improvements to be found further away, and the optimum position is not in the direct neighborhood.
The Random, Global Step model draws new positions from the entire domain. It is not utilized in any of the
standard options as convergence is inefficient. However, as a first broad search phase it can be useful followed
by a Random, Regional step model initiated via a Clone run, for example.
When grid spacing is finer than the expected optimal trade-off at around 0.5RD, the default option is Limit to grid
points (Discrete). When grid spacing exceeds 0.5RD, the default option is Continuous, which will allow turbines
to move away from grid points and prevent local optima due to a grid that is too coarse which is important. The
drawback is that the most natural Stop criterion cannot be used as will be described in the next section.
The main difference between the local, regional, and global set-up is the areas around the turbines considered
for steps. In a local step, the local area is 5D at the start of the optimization run and becomes iteratively smaller
until it reaches 1D at the end of the run in the discrete case or 0.5D in the continuous case. The distance that
defines the regional area is a square root of the vertical and horizontal distance of the whole WTG area, but at
least 5D in case of small WTG areas, at the start of the optimization run. It also ends up at 1D in the discrete
case and 0.5D in the continuous case. In the global step, the whole area is constantly considered during the run.
8a.3.3 Stop criteria
The purpose of the Stop criteria is to detect if an optimization is converged or so close to being converged that
further improvement will be insignificant. Another purpose is to give the user a chance to set a maximum waiting
time (with the risk of stopping prematurely far from an optimum).
Max runtime is the maximum time Step model is allowed to run. When the time is up the optimization is stopped.
The time to generate the starting model is not included in the timing.
Max fruitless tries simply defines the maximum number of unsuccessful attempts to take a step which accepted
before stopping. Both invalid steps (i.e., failed constraints) and steps without improved objective values are
counted.
Exhausted neighborhood is an option hidden from the user which is the most efficient stopping criterion. It can
only be used for runs with the resolution set to Limit to grid points (Discrete). It is a memory that tests if all
possible positions in the search neighborhood for all turbines have been tried in vain and if so, the current
Optimization algorithm 15
© EMD International www.emd.dk windPRO 4.0 September 2023
layout is by definition an optimum and the run is stopped. For continuous runs the search neighborhood is always
infinite no matter how small it is, and this Stop criterion cannot be employed.
8a.3.4 Objective & Constraints
Put simply, the Objective of an optimization is what we seek to optimize. The design variables are the degrees
of freedom given to the Optimizer, which are allowed to be modified to find the best possible objective. In this
Optimizer only the turbine positions, their X and Y coordinates are explicit design variables. The number of
turbines and the turbine models are implicit design variables which the user can analyze and optimize via the
flexible structure of the GUI-tree. The choice of objective may differ for different users, the supported objectives
are described in next section.
Constraints are known limitations which must be fulfilled for a solution to be accepted, hence, we call a solution
which fulfills all constraints Valid. A solution where at least one constraint is violated is Invalid (and will not be
accepted).
Objectives 16
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.4 Objectives
An optimization needs a quantity that must be optimized, the Objective, given a set of design variables that may
be varied. For some objectives optimization implies maximization, which is the case when wind farm production
(AEP) or project profit is the objective. For other objectives optimization implies minimization, which is the case
for cost-of-energy optimization.
8a.4.1 AEP
AEP is simply the Annual Energy Production including wake losses. The AEP calculation is based on the
resource data in the selected .rsf or .siteres file, containing sector-wise Weibull parameters (A and k) and
frequencies (f). Wake effects are calculated using the PARK2 wake model and the user-defined wake decay
constant.
Wind farm layout optimizations using AEP as the objective have a drawback, particularly if the available WTG
area is large: The optimization may lead to very spread-out layouts that would incur excessive costs for building
roads and grid connection. This is the main motivation for choosing other objectives, in particular, objectives
which include the costs of building the wind farm.
8a.4.2 Costs
Costs are not included as an objective on its own in the New Optimizer, at least not directly. However, the
estimation of costs is an important input to financial objectives such as cost-of-energy (COE) or profit (NPV), to
account for the balance between the created value (i.e., AEP) and the expected costs required to realize that
potential. Costs in the New Optimizer are estimated using the windPRO Cost tool. This tool estimates costs
using parameterized formulas fitted to a large amount of real historic costs and based on extensive literature
reviews. As an example, turbine costs scale with generator capacity (MW), specific capacity (MW/m
2
), rotor size
(m
2
) and hub height (m) via an elaborate regression expression. The cost tool comes with six predefined cost
models, three price levels ‘high’, ‘mid’ and ‘low’ for onshore and offshore, respectively.
Figure 20: Selection of the cost model showing the two default cost models for onshore and offshore
respectively.
In the cost tool, the costs are divided into four main categories as listed below.
Devex: development expenditure
Capex: capital expenditure
Opex: operational expenditure
Abex: abandonment expenditure
Development expenditures (Devex) quantify the cost associated with developing the project, getting permissions
to build the wind farm etc. Capital expenditures (Capex) represent the main investment of building the wind farm.
Operational expenditures (Opex) represent the costs of keeping the wind farm running through its lifetime, and
abandonment expenditures (Abex) quantify the estimated amount of money to eventually remove the wind park.
Capex is the only cost category which depends on the actual design of the layout via the costs for the internal
grid connection between the turbines (and roads for onshore).
For each cost a Cost Index may be defined to account for expected future trends in the price development. This
index should exclude the effect of the general baseline inflation.
Objectives 17
© EMD International www.emd.dk windPRO 4.0 September 2023
Figure 21: Extract from the Cost tool showing the possibility to enter Price Indices for each cost component, but
also the possibility to include replacement costs, e.g. for gearboxes.
In Figure 21 please note the possibility to insert adjustments to the baseline costs via entries in the table column
Cost function value. It is via values in this column that the high and low alternative cost models are defined, by
an increase or decrease of these factors.
In the Optimizer the wind farm is assumed to be built and put into operation the year after the current year, which
for 2023 would be 2024. Devex is assumed to occur the year before the installation, i.e. the current year. When
the reference year defined in the cost tool deviates from the year that a cost occurs the price index (if set) will
be used to adjust the costs accordingly. The default cost index is zero through the lifetime.
Note that the total cost values shown in the optimizer are not discounted only index corrected (if set by the user)
and summed over the lifetime.
For the grid (offshore and onshore) and road connection costs (onshore only) an additional sub-optimization is
solved for finding the shortest possible way to connect the turbines in the layout. Either to each other or to any
of the Connection points if defined for the Site. The resulting inter-connection distance is what enters the cost
calculation. The solution to this sub-optimization relies on graph theory and the optimization problem is referred
to as the minimum spanning tree. The connections of the minimum spanning tree are visualized in the Layout
plot for each run as the black connection lines between the WTGs (and connection points, if any).
Figure 22: Layout plot from for a run with LCOE optimization showing the black connection lines.
As a final remark it is important to stress that the cost model is deliberately kept relatively simple with a minimum
of assumptions which are calibrated against actual project costs. Hence, the user does not need, in fact cannot,
set a large range of particular cost items such as the cost of crossing a stream or railway. Although that degree
of flexibility might appear beneficial, if the input quantities are not known the values will be associated with a
very large uncertainty, as will the resulting overall cost estimates.
The current cost tool seeks to strike an ideal balance between accuracy and detail/flexibility, but with a
preference for accuracy over detail. In the end what is important is getting the right order of magnitude of costs
as input to the financial objectives described in the following sections.
Objectives 18
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.4.2.1 Offshore Vs Onshore costs
The onshore and offshore cost setups share many cost components, and both include costs for the internal grid
connection, but with very different price constants. A main difference is that the onshore cost model includes the
cost of connecting roads where the offshore model includes the cost of a main grid connection (to the shore).
Also, the foundation and area are calculated differently. See the manual for the Cost tool for further details
(windPRO BASIS manual, chapter 2 section 18).
8a.4.3 LCOE
Levelized cost of energy (LCOE) is often preferred as an objective in optimizations, as on the one hand it includes
the effect of costs, in particular Capex, the cost of building the wind farm project. On the other hand, LCOE does
not require further assumptions of uncertain quantities such as the future development of the electricity price. In
addition, a discount rate must also be assumed for the costs to calculate LCOE, to discount future costs to
present day values. The discount rate is a baseline interest rate often representing the average interest rate for
secure investments such as bonds or set as the baseline return of investment in a company. windPRO uses the
so-called real discount rate, which is corrected for the general inflation (i.e., it excludes inflation). Hence, future
costs in the windPRO cost tool should not account for inflation.
In LCOE the future AEP is discounted similarly, which might seem counter-intuitive. However, the AEP of each
year through the lifetime will lead to a cash flow via the sale of the produced electricity. In this regard the AEP
produced next year is worth more than AEP produced in say 15 years (for positive discount rates), assuming a
constant electricity price. Thus, LCOE accounts for the discount effect of both future costs and future sale of
electricity and calculates the average cost of electricity from these, as expressed in the equation below (e.g. [2]
or [3]):






  

  
In the above expression, costs are condensed to a single sum for each year. In practical terms, the Capex will
occur in year zero, the installation year, and the Opex occurs in all the following years until end of lifetime,
possibly increasing over time if the user has set a cost index for the future years.
The LCOE has the drawback in that it tends to increase (i.e., deteriorate) with increasing size of a wind farm, as
the best resource positions get taken first and wake effects tend to increase with park size. The total profit of the
project on the other hand would typically increase with the size of the wind farm. Hence, LCOE will generally
lead to too small a wind farm if used as an objective to determine the wind farm size. When comparing wind
farms of equal capacity LCOE does not suffer from this shortcoming.
8a.4.4 NPV
The Net Present Value (NPV) for a wind farm project is simply put the total profit of the wind farm through its
lifetime converted to present day value. NPV bares many similarities with the LCOE, and addresses the main
drawback of LCOE, that it under evaluates the value of larger projects. Still NPV includes the penalizing effect
of Capex costs for spread-out layouts. The main difference between NPV and LCOE is the fact that the AEP in
future years is explicitly converted to a cash flow. This requires the assumption of a future electricity price (P) in
addition to the discount rate (d), which by default is constant, but may include future projections via a price index
similar to the cost components. The equation below summarizes the calculation of NPV (e.g. [3]).
 

 
 
  
NPV is the most flexible objective function of the three objectives supported in the Optimizer. In fact, NPV can
give similar results to both AEP optimizations and LCOE optimizations. The performance is controlled by the
trade-off between costs and AEP, which is defined by the assumed electricity price. For very high electricity
prices, costs lose importance and the NPV objective approaches the AEP objective. For very low electricity
prices AEP loses its importance and the optimization will be driven mainly by costs to minimize expenses. If the
Objectives 19
© EMD International www.emd.dk windPRO 4.0 September 2023
electricity price is set to be equal to the LCOE from another optimization, then the performance of the NPV
objective will yield results very similar to the LCOE optimization.
The NPV has several advantages compared to AEP and LCOE and addresses their shortcomings. NPV also
works well as an objective for determining the size of a wind farm as it will seek to maximize the lifetime profit of
the project. But as profit in absolute terms tend to grow with project size, the optimal size will often be the
maximum allowed park size, as is the case for AEP. The main drawback when using NPV as an objective is that
an assumption of a future electricity price is required, and that this assumption is associated with a large or even
very large uncertainty. At the same time the assumed electricity price may significantly influence the performance
of the NPV objective as described above.
Constraints 20
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.5 Constraints
The following sections describe the constraints supported by the New Optimizer. The supported constraints are
shown in Figure 23. Note that including Lifetime or Noise constraints are subject to additional windPRO license
requirements as they draw on calculation functionality in the LOAD RESPONSE and DECIBEL modules,
respectively.
Figure 23: Constraint options.
8a.5.1 Area & distance (sub-areas)
Defining a WTG area object is a prerequisite for all optimizations. The WTG area object serves the purpose to
define the area limitations for turbine placement. A site may be split into arbitrarily many sub-areas and each
sub-area may have individual limitations on minimum and maximum numbers of turbines or installed capacities.
Sub-areas may also have individual requirements for turbine spacing typically defined as an elliptical constraint
in terms of rotor diameters oriented along the prevalent wind direction. The Optimizer will always adhere to the
areal requirements defined in the selected WTG area, whereas minimum requirements for inter-turbine distances
must be separately activated via the Distance constraint. Even if no distance constraint is activated the Optimizer
will not accept a turbine spacing below 1RD. Some tips and considerations to the WTG area import are available
in section 8a.6.1, and detailed information about the WTG area object is available at Appendix 8 OPTIMIZE
Classic in section 8.0.1.5.
8a.5.2 Wake loss
The maximum wake loss constraint is a new feature in windPRO 4.0 (cf. Figure 23). It allows to define maximum
wake losses for both new WTG and existing WTG objects; the maximum wake losses can be specified
independently from each other.
8a.5.3 Noise
The noise constraint requires an activated license for the DECIBEL module. The calculation is a stripped-down
version of the ISO 9613-2 standard. The noise constraint is defined for a single wind speed selected in the Model
settings for the noise requirement (Figure 24). Noise sensitive areas must be selected on the Site level (Figure
25) and WTG source noise data on the WTG level (Figure 26).
Figure 24: Model settings for the Noise constraint (Site level), showing the selection of wind speed.
Constraints 21
© EMD International www.emd.dk windPRO 4.0 September 2023
Figure 25: Selection of noise sensitive areas (NSAs) on the Site level in the tree.
Figure 26: Selection of noise data on the WTG level in tree.
8a.5.4 Component Lifetime (loads)
The lifetime constraint requires an active license for the LOAD RESPONSE module and sets a constraint on
required minimum lifetimes for selected turbine components for each WTG position.
The calculation of lifetimes and activation of the lifetime constraint requires a resource file including all the siting
parameters for fatigue calculation, i.e., a .siteres file. Such a file may be calculated using the RESOURCE
calculation in windPRO drawing upon the IEC61400-1 ed. 4 calculation functionality in SITE COMPLIANCE, or
can be downloaded from the free online GASP dataset. The calculation options are a stripped-down version of
LOAD RESPONSE as can been from the Model settings in Figure 27.
Figure 27: Model Settings for the Lifetime constraint accessed on the Site level.
The lifetime calculation also requires the setup of the wind turbine Design Standard and Class as well as
selection of the Load Response Model which can be either a generic model or a specific model provided by a
manufacturer. For the response model, a set of sensors must be selected for the constraint, here it is
recommended to focus on the key components such as blade root and tower bottom, and perhaps low speed
shaft (LDD).
Figure 28: Turbine design class and response model selection on WTG level.
Practical recommendations 22
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.6 Practical recommendations
8a.6.1 WTG Area import
A convenient approach is to import pre-defined WTG Areas (cf. Figure 29: WTG area Import from file.) as
shapefile format (.shp). Each feature of the shapefile a WTG area is handled separately for which properties can
be defined, e.g., whether the area is an exclusion zone or a WTG area, the minimum and maximum number of
WTGs to be placed, the minimum distance between WTG (cf. Figure 29). Moreover, a buffer zone can be
specified (cf. Figure 30) for the optimization.
Figure 29: WTG area Import from file.
Figure 30: WTG area settings.
The WTG area object handling is quite strict. In windPRO 4.0, WTG area intersections are not allowed, neither
are features within features (so-called islands). If such features must be imported, it is necessary to use
Geoinformation Systems to cut a part of the outer ring of the polygon feature (cf. Figure 31). An enhanced and
user-friendly version of WTG area import is planned for future versions.
Figure 31: Feature within feature (island). The yellow part of the feature has been cut out of the outer ring and
is handled as a third WTG area object. This prevents an intersection error message in the optimization.
8a.6.2 Example projects
Three sample projects are provided to show the range of utilities of the optimizer tool: a sample on-shore project,
a sample off-shore project, and a sample project for the new noise curtailment optimizer.
The onshore sample project Aparados da Serra.w40p provides a variety of optimization scenarios. These include
runs with AEP, LCOE and NPV objectives, runs with different constraints and on different WTG area structures.
Lastly, it shows a performance comparison for different turbine types and a performance comparison for different
optimization configurations.
Practical recommendations 23
© EMD International www.emd.dk windPRO 4.0 September 2023
The offshore sample Cost model offshore.w40p showcases the new option of including cost maps in the cost
set-up that can be used to represent a whole variety of costs, e.g., bathymetry-based costs, soil structure
foundation costs, or travel costs.
The noise curtailment Curtailment optimizer demo project.w40p shows how a non-compliant wind farm layout
can be made compliant with noise regulations while still obtaining the maximum possible energy yield from
optimal curtailment strategies.
References 24
© EMD International www.emd.dk windPRO 4.0 September 2023
8a.7 References
[1] A. P. J. Stanley, O. Roberts, J. King, and C. J. Bay, “Objective and algorithm
considerations when optimizing the number and placement of turbines in a wind power
plant,” Wind Energy Sci., vol. 6, no. 5, pp. 11431167, 2021, doi: 10.5194/wes-6-1143-
2021.
[2] T. Rubert, D. McMillan, and P. Niewczas, “A decision support tool to assist with lifetime
extension of wind turbines,” Renew. Energy, vol. 120, pp. 423433, 2018, doi:
10.1016/j.renene.2017.12.064.
[3] W. Short, D. J. Packey, and T. Holt, “A manual for the economic evaluation of energy
efficiency and renewable energy technologies,” 1995. doi: NREL/TP-462-5173.