Skip to content

DEI Analysis Methodology

This document specifies the analysis protocol for the Danish Energy Island (DEI) design regret study.

Goals

  1. Quantify design regret for each neighboring wind farm individually
  2. Compare individual vs combined regret (all 9 neighbors present simultaneously)
  3. Test sensitivity to wake model configuration
  4. Enable verification by saving layouts for cross-validation with PyWake

Analysis Protocol

Wind Resource

  • Data source: 10-year daily averaged wind data (2012-2021) from OMAE_neighbors/energy_island_10y_daily_av_wind.csv
  • Evaluation method: Full time series (3653 samples)
  • NOT binned wind rose (which introduces P(E[v]) vs E[P(v)] error)
  • Binned wind rose may be used internally during optimization for speed, but all reported AEP values must come from full time series evaluation

Optimization

  • Method: Gradient-based SGD with multi-start
  • Starts: 50 random initial layouts per strategy
  • Iterations: 2000 per start
  • Strategies:
  • Liberal: Optimize target layout ignoring neighbors
  • Conservative: Optimize target layout considering neighbors

Evaluation Cases

For each wake model configuration, run:

Case Neighbors in Optimization Neighbors in Evaluation Purpose
Farm 1 Farm 1 only Farm 1 only Individual regret
Farm 2 Farm 2 only Farm 2 only Individual regret
... ... ... ...
Farm 9 Farm 9 only Farm 9 only Individual regret
Combined All 594 turbines All 594 turbines Ring geometry effect

Output Requirements

For each case, save:

  1. Layouts (HDF5): All 100 optimized layouts (50 liberal + 50 conservative)
  2. x, y coordinates
  3. AEP with neighbor absent
  4. AEP with neighbor present
  5. Strategy label

  6. Results (JSON): Summary statistics

  7. Pareto point count
  8. Regret (GWh and %)
  9. Liberal-optimal and conservative-optimal AEP values

  10. Figures: Pareto frontier plots

PyWake Verification

Saved layouts enable verification by: 1. Loading layouts from HDF5 2. Evaluating in PyWake with matching wake model configuration 3. Comparing AEP values (should match within ~0.2%)

Wake Model Configurations

This should be our default model. The plan is to sweep the A parameter in 0.02 increments from 0.02 to 0.20. So the multistart optiizations and pareto/regret analysis should all be performed and stored as a function of A.

Parameter Value
Model TurboGaussianDeficit
A 0.04
ct2a ct2a_mom1d
ctlim 0.96
superposition SquaredSum
use_effective_ws False
use_effective_ti False
Turbulence None
Ambient TI 0.06

Turbine Specification

All analyses use the same turbine:

Parameter Value
Rotor diameter 240 m
Hub height 150 m
Rated power 15 MW
Power/CT curves PyWake GenericWindTurbine(diameter=240, hub_height=150, power_norm=15000)

Expected Outputs

For each wake model: - analysis/dei_{model}/layouts_farm{1-9}.h5 - Individual neighbor layouts - analysis/dei_{model}/layouts_combined.h5 - Combined case layouts - analysis/dei_{model}/dei_results.json - All results - analysis/dei_{model}/dei_pareto_farm{1-9}.png - Individual Pareto plots - analysis/dei_{model}/dei_pareto_combined.png - Combined Pareto plot - analysis/dei_{model}/dei_polar_summary.png - Regret by direction

parrelelization

parrelelize on the optimization case level. sudo code:

for all A values: 50 "liberal" optimizations for each farm run "conservative" case assuming only that farm is there (3 parrelel runs at a time) run all clusters case. This is memory intensive so should be run by itself. compute regret metrics, make a docs page showing computed pareto sets etc