Summary
This experiment investigates beach nourishment longevity. Plackett-Burman screening of sand grain size, berm width, dune height, groin spacing, and nourishment volume for retention and storm resilience.
The design varies 5 factors: grain mm (mm), ranging from 0.3 to 1.0, berm width m (m), ranging from 20 to 60, dune height m (m), ranging from 2 to 5, groin spacing m (m), ranging from 100 to 400, and volume m3 m (m3/m), ranging from 30 to 100. The goal is to optimize 2 responses: retention yrs (yrs) (maximize) and storm resilience (pts) (maximize). Fixed conditions held constant across all runs include wave climate = moderate, longshore drift = southward.
A Plackett-Burman screening design was used to efficiently test 5 factors in only 8 runs. This design assumes interactions are negligible and focuses on identifying the most influential main effects.
Key Findings
For retention yrs, the most influential factors were dune height m (49.8%), groin spacing m (14.8%), grain mm (14.8%). The best observed value was 10.3 (at grain mm = 1.0, berm width m = 60, dune height m = 5).
For storm resilience, the most influential factors were dune height m (60.5%), volume m3 m (26.6%), groin spacing m (8.5%). The best observed value was 8.8 (at grain mm = 1.0, berm width m = 60, dune height m = 5).
Recommended Next Steps
- Follow up with a response surface design (CCD or Box-Behnken) on the top 3–4 factors to model curvature and find the true optimum.
- Consider whether any fixed factors should be varied in a future study.
- The screening results can guide factor reduction — drop factors contributing less than 5% and re-run with a smaller, more focused design.
Experimental Setup
Factors
| Factor | Low | High | Unit |
grain_mm | 0.3 | 1.0 | mm |
berm_width_m | 20 | 60 | m |
dune_height_m | 2 | 5 | m |
groin_spacing_m | 100 | 400 | m |
volume_m3_m | 30 | 100 | m3/m |
Fixed: wave_climate = moderate, longshore_drift = southward
Responses
| Response | Direction | Unit |
retention_yrs | ↑ maximize | yrs |
storm_resilience | ↑ maximize | pts |
Configuration
{
"metadata": {
"name": "Beach Nourishment Longevity",
"description": "Plackett-Burman screening of sand grain size, berm width, dune height, groin spacing, and nourishment volume for retention and storm resilience"
},
"factors": [
{
"name": "grain_mm",
"levels": [
"0.3",
"1.0"
],
"type": "continuous",
"unit": "mm"
},
{
"name": "berm_width_m",
"levels": [
"20",
"60"
],
"type": "continuous",
"unit": "m"
},
{
"name": "dune_height_m",
"levels": [
"2",
"5"
],
"type": "continuous",
"unit": "m"
},
{
"name": "groin_spacing_m",
"levels": [
"100",
"400"
],
"type": "continuous",
"unit": "m"
},
{
"name": "volume_m3_m",
"levels": [
"30",
"100"
],
"type": "continuous",
"unit": "m3/m"
}
],
"fixed_factors": {
"wave_climate": "moderate",
"longshore_drift": "southward"
},
"responses": [
{
"name": "retention_yrs",
"optimize": "maximize",
"unit": "yrs"
},
{
"name": "storm_resilience",
"optimize": "maximize",
"unit": "pts"
}
],
"settings": {
"operation": "plackett_burman",
"test_script": "use_cases/258_beach_nourishment/sim.sh"
}
}
Experimental Matrix
The Plackett-Burman Design produces 8 runs. Each row is one experiment with specific factor settings.
| Run | grain_mm | berm_width_m | dune_height_m | groin_spacing_m | volume_m3_m |
| 1 | 1.0 | 60 | 5 | 100 | 30 |
| 2 | 0.3 | 20 | 5 | 400 | 30 |
| 3 | 0.3 | 60 | 2 | 400 | 30 |
| 4 | 1.0 | 60 | 5 | 400 | 100 |
| 5 | 0.3 | 60 | 2 | 100 | 100 |
| 6 | 1.0 | 20 | 2 | 400 | 100 |
| 7 | 0.3 | 20 | 5 | 100 | 100 |
| 8 | 1.0 | 20 | 2 | 100 | 30 |
Step-by-Step Workflow
1
Preview the design
$ doe info --config use_cases/258_beach_nourishment/config.json
2
Generate the runner script
$ doe generate --config use_cases/258_beach_nourishment/config.json \
--output use_cases/258_beach_nourishment/results/run.sh --seed 42
3
Execute the experiments
$ bash use_cases/258_beach_nourishment/results/run.sh
4
Analyze results
$ doe analyze --config use_cases/258_beach_nourishment/config.json
5
Get optimization recommendations
$ doe optimize --config use_cases/258_beach_nourishment/config.json
6
Multi-objective optimization
With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.
$ doe optimize --config use_cases/258_beach_nourishment/config.json --multi
7
Generate the HTML report
$ doe report --config use_cases/258_beach_nourishment/config.json \
--output use_cases/258_beach_nourishment/results/report.html
Features Exercised
| Feature | Value |
| Design type | plackett_burman |
| Factor types | continuous (all 5) |
| Arg style | double-dash |
| Responses | 2 (retention_yrs ↑, storm_resilience ↑) |
| Total runs | 8 |
Analysis Results
Generated from actual experiment runs using the DOE Helper Tool.
Response: retention_yrs
Top factors: dune_height_m (49.8%), groin_spacing_m (14.8%), grain_mm (14.8%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| grain_mm | 1 | 4.8050 | 4.8050 | 0.667 | 0.4513 |
| berm_width_m | 1 | 0.7200 | 0.7200 | 0.100 | 0.7647 |
| dune_height_m | 1 | 54.0800 | 54.0800 | 7.503 | 0.0408 |
| groin_spacing_m | 1 | 4.8050 | 4.8050 | 0.667 | 0.4513 |
| volume_m3_m | 1 | 4.8050 | 4.8050 | 0.667 | 0.4513 |
| grain_mm*berm_width_m | 1 | 54.0800 | 54.0800 | 7.503 | 0.0408 |
| grain_mm*dune_height_m | 1 | 0.7200 | 0.7200 | 0.100 | 0.7647 |
| grain_mm*groin_spacing_m | 1 | 4.8050 | 4.8050 | 0.667 | 0.4513 |
| grain_mm*volume_m3_m | 1 | 4.8050 | 4.8050 | 0.667 | 0.4513 |
| berm_width_m*dune_height_m | 1 | 4.8050 | 4.8050 | 0.667 | 0.4513 |
| berm_width_m*groin_spacing_m | 1 | 0.1800 | 0.1800 | 0.025 | 0.8806 |
| berm_width_m*volume_m3_m | 1 | 0.0800 | 0.0800 | 0.011 | 0.9202 |
| dune_height_m*groin_spacing_m | 1 | 0.0800 | 0.0800 | 0.011 | 0.9202 |
| dune_height_m*volume_m3_m | 1 | 0.1800 | 0.1800 | 0.025 | 0.8806 |
| groin_spacing_m*volume_m3_m | 1 | 4.8050 | 4.8050 | 0.667 | 0.4513 |
| Error | (Lenth | PSE) | 5 | 36.0375 | 7.2075 |
| Total | 7 | 69.4750 | 9.9250 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response: storm_resilience
Top factors: dune_height_m (60.5%), volume_m3_m (26.6%), groin_spacing_m (8.5%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| grain_mm | 1 | 0.0312 | 0.0312 | 0.074 | 0.7964 |
| berm_width_m | 1 | 0.0113 | 0.0113 | 0.027 | 0.8767 |
| dune_height_m | 1 | 14.3112 | 14.3112 | 33.923 | 0.0021 |
| groin_spacing_m | 1 | 0.2812 | 0.2812 | 0.667 | 0.4513 |
| volume_m3_m | 1 | 2.7612 | 2.7612 | 6.545 | 0.0507 |
| grain_mm*berm_width_m | 1 | 14.3113 | 14.3113 | 33.923 | 0.0021 |
| grain_mm*dune_height_m | 1 | 0.0113 | 0.0113 | 0.027 | 0.8767 |
| grain_mm*groin_spacing_m | 1 | 2.7612 | 2.7612 | 6.545 | 0.0507 |
| grain_mm*volume_m3_m | 1 | 0.2812 | 0.2812 | 0.667 | 0.4513 |
| berm_width_m*dune_height_m | 1 | 0.0313 | 0.0313 | 0.074 | 0.7964 |
| berm_width_m*groin_spacing_m | 1 | 1.5313 | 1.5313 | 3.630 | 0.1151 |
| berm_width_m*volume_m3_m | 1 | 0.6613 | 0.6613 | 1.567 | 0.2660 |
| dune_height_m*groin_spacing_m | 1 | 0.6613 | 0.6613 | 1.567 | 0.2660 |
| dune_height_m*volume_m3_m | 1 | 1.5313 | 1.5313 | 3.630 | 0.1151 |
| groin_spacing_m*volume_m3_m | 1 | 0.0312 | 0.0312 | 0.074 | 0.7964 |
| Error | (Lenth | PSE) | 5 | 2.1094 | 0.4219 |
| Total | 7 | 19.5888 | 2.7984 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response Surface Plots
3D surfaces fitted with quadratic RSM. Red dots are observed data points.
retention yrs berm width m vs dune height m
retention yrs berm width m vs groin spacing m
retention yrs berm width m vs volume m3 m
retention yrs dune height m vs groin spacing m
retention yrs dune height m vs volume m3 m
retention yrs grain mm vs berm width m
retention yrs grain mm vs dune height m
retention yrs grain mm vs groin spacing m
retention yrs grain mm vs volume m3 m
retention yrs groin spacing m vs volume m3 m
storm resilience berm width m vs dune height m
storm resilience berm width m vs groin spacing m
storm resilience berm width m vs volume m3 m
storm resilience dune height m vs groin spacing m
storm resilience dune height m vs volume m3 m
storm resilience grain mm vs berm width m
storm resilience grain mm vs dune height m
storm resilience grain mm vs groin spacing m
storm resilience grain mm vs volume m3 m
storm resilience groin spacing m vs volume m3 m
Multi-Objective Optimization
When responses compete, Derringer–Suich desirability finds the best compromise.
Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.
Overall Desirability
D = 0.9545
Per-Response Desirability
| Response | Weight | Desirability | Predicted | Dir |
retention_yrs |
1.5 |
|
10.30 0.9545 10.30 yrs |
↑ |
storm_resilience |
1.5 |
|
8.80 0.9545 8.80 pts |
↑ |
Recommended Settings
| Factor | Value |
grain_mm | 1.0 mm |
berm_width_m | 60 m |
dune_height_m | 5 m |
groin_spacing_m | 400 m |
volume_m3_m | 100 m3/m |
Source: from observed run #4
Trade-off Summary
Sacrifice = how much worse than single-objective best.
| Response | Predicted | Best Observed | Sacrifice |
storm_resilience | 8.80 | 8.80 | +0.00 |
Top 3 Runs by Desirability
| Run | D | Factor Settings |
| #1 | 0.6755 | grain_mm=1.0, berm_width_m=60, dune_height_m=5, groin_spacing_m=100, volume_m3_m=30 |
| #7 | 0.5388 | grain_mm=0.3, berm_width_m=20, dune_height_m=5, groin_spacing_m=100, volume_m3_m=100 |
Model Quality
| Response | R² | Type |
storm_resilience | 0.9024 | linear |
Full Multi-Objective Output
============================================================
MULTI-OBJECTIVE OPTIMIZATION
Method: Derringer-Suich Desirability Function
============================================================
Overall desirability: D = 0.9545
Response Weight Desirability Predicted Direction
---------------------------------------------------------------------
retention_yrs 1.5 0.9545 10.30 yrs ↑
storm_resilience 1.5 0.9545 8.80 pts ↑
Recommended settings:
grain_mm = 1.0 mm
berm_width_m = 60 m
dune_height_m = 5 m
groin_spacing_m = 400 m
volume_m3_m = 100 m3/m
(from observed run #4)
Trade-off summary:
retention_yrs: 10.30 (best observed: 10.30, sacrifice: +0.00)
storm_resilience: 8.80 (best observed: 8.80, sacrifice: +0.00)
Model quality:
retention_yrs: R² = 0.7567 (linear)
storm_resilience: R² = 0.9024 (linear)
Top 3 observed runs by overall desirability:
1. Run #4 (D=0.9545): grain_mm=1.0, berm_width_m=60, dune_height_m=5, groin_spacing_m=400, volume_m3_m=100
2. Run #1 (D=0.6755): grain_mm=1.0, berm_width_m=60, dune_height_m=5, groin_spacing_m=100, volume_m3_m=30
3. Run #7 (D=0.5388): grain_mm=0.3, berm_width_m=20, dune_height_m=5, groin_spacing_m=100, volume_m3_m=100
Full Analysis Output
=== Main Effects: retention_yrs ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
dune_height_m 5.2000 1.1138 49.8%
groin_spacing_m 1.5500 1.1138 14.8%
grain_mm -1.5500 1.1138 14.8%
volume_m3_m 1.5500 1.1138 14.8%
berm_width_m -0.6000 1.1138 5.7%
=== ANOVA Table: retention_yrs ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
grain_mm 1 4.8050 4.8050 0.667 0.4513
berm_width_m 1 0.7200 0.7200 0.100 0.7647
dune_height_m 1 54.0800 54.0800 7.503 0.0408
groin_spacing_m 1 4.8050 4.8050 0.667 0.4513
volume_m3_m 1 4.8050 4.8050 0.667 0.4513
grain_mm*berm_width_m 1 54.0800 54.0800 7.503 0.0408
grain_mm*dune_height_m 1 0.7200 0.7200 0.100 0.7647
grain_mm*groin_spacing_m 1 4.8050 4.8050 0.667 0.4513
grain_mm*volume_m3_m 1 4.8050 4.8050 0.667 0.4513
berm_width_m*dune_height_m 1 4.8050 4.8050 0.667 0.4513
berm_width_m*groin_spacing_m 1 0.1800 0.1800 0.025 0.8806
berm_width_m*volume_m3_m 1 0.0800 0.0800 0.011 0.9202
dune_height_m*groin_spacing_m 1 0.0800 0.0800 0.011 0.9202
dune_height_m*volume_m3_m 1 0.1800 0.1800 0.025 0.8806
groin_spacing_m*volume_m3_m 1 4.8050 4.8050 0.667 0.4513
Error (Lenth PSE) 5 36.0375 7.2075
Total 7 69.4750 9.9250
Note: Error estimated using Lenth's pseudo-standard-error (unreplicated design)
=== Interaction Effects: retention_yrs ===
Factor A Factor B Interaction % Contribution
------------------------------------------------------------------------
grain_mm berm_width_m 5.2000 40.0%
grain_mm volume_m3_m -1.5500 11.9%
grain_mm groin_spacing_m -1.5500 11.9%
berm_width_m dune_height_m -1.5500 11.9%
groin_spacing_m volume_m3_m 1.5500 11.9%
grain_mm dune_height_m -0.6000 4.6%
berm_width_m groin_spacing_m -0.3000 2.3%
dune_height_m volume_m3_m 0.3000 2.3%
berm_width_m volume_m3_m 0.2000 1.5%
dune_height_m groin_spacing_m -0.2000 1.5%
=== Summary Statistics: retention_yrs ===
grain_mm:
Level N Mean Std Min Max
------------------------------------------------------------
0.3 4 5.8000 3.7974 1.4000 10.3000
1.0 4 4.2500 2.6715 1.7000 6.8000
berm_width_m:
Level N Mean Std Min Max
------------------------------------------------------------
20 4 5.3250 4.1153 1.7000 10.3000
60 4 4.7250 2.4459 1.4000 6.8000
dune_height_m:
Level N Mean Std Min Max
------------------------------------------------------------
2 4 2.4250 1.3574 1.4000 4.4000
5 4 7.6250 1.8136 6.3000 10.3000
groin_spacing_m:
Level N Mean Std Min Max
------------------------------------------------------------
100 4 4.2500 3.1225 1.4000 7.1000
400 4 5.8000 3.4361 2.2000 10.3000
volume_m3_m:
Level N Mean Std Min Max
------------------------------------------------------------
100 4 4.2500 2.8665 1.4000 7.1000
30 4 5.8000 3.6524 1.7000 10.3000
=== Main Effects: storm_resilience ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
dune_height_m 2.6750 0.5914 60.5%
volume_m3_m 1.1750 0.5914 26.6%
groin_spacing_m 0.3750 0.5914 8.5%
grain_mm 0.1250 0.5914 2.8%
berm_width_m -0.0750 0.5914 1.7%
=== ANOVA Table: storm_resilience ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
grain_mm 1 0.0312 0.0312 0.074 0.7964
berm_width_m 1 0.0113 0.0113 0.027 0.8767
dune_height_m 1 14.3112 14.3112 33.923 0.0021
groin_spacing_m 1 0.2812 0.2812 0.667 0.4513
volume_m3_m 1 2.7612 2.7612 6.545 0.0507
grain_mm*berm_width_m 1 14.3113 14.3113 33.923 0.0021
grain_mm*dune_height_m 1 0.0113 0.0113 0.027 0.8767
grain_mm*groin_spacing_m 1 2.7612 2.7612 6.545 0.0507
grain_mm*volume_m3_m 1 0.2812 0.2812 0.667 0.4513
berm_width_m*dune_height_m 1 0.0313 0.0313 0.074 0.7964
berm_width_m*groin_spacing_m 1 1.5313 1.5313 3.630 0.1151
berm_width_m*volume_m3_m 1 0.6613 0.6613 1.567 0.2660
dune_height_m*groin_spacing_m 1 0.6613 0.6613 1.567 0.2660
dune_height_m*volume_m3_m 1 1.5313 1.5313 3.630 0.1151
groin_spacing_m*volume_m3_m 1 0.0312 0.0312 0.074 0.7964
Error (Lenth PSE) 5 2.1094 0.4219
Total 7 19.5888 2.7984
Note: Error estimated using Lenth's pseudo-standard-error (unreplicated design)
=== Interaction Effects: storm_resilience ===
Factor A Factor B Interaction % Contribution
------------------------------------------------------------------------
grain_mm berm_width_m 2.6750 35.9%
grain_mm groin_spacing_m -1.1750 15.8%
berm_width_m groin_spacing_m -0.8750 11.7%
dune_height_m volume_m3_m 0.8750 11.7%
berm_width_m volume_m3_m -0.5750 7.7%
dune_height_m groin_spacing_m 0.5750 7.7%
grain_mm volume_m3_m -0.3750 5.0%
berm_width_m dune_height_m 0.1250 1.7%
groin_spacing_m volume_m3_m -0.1250 1.7%
grain_mm dune_height_m -0.0750 1.0%
=== Summary Statistics: storm_resilience ===
grain_mm:
Level N Mean Std Min Max
------------------------------------------------------------
0.3 4 5.9250 2.0056 4.5000 8.8000
1.0 4 6.0500 1.5801 4.5000 7.9000
berm_width_m:
Level N Mean Std Min Max
------------------------------------------------------------
20 4 6.0250 1.9259 4.5000 8.8000
60 4 5.9500 1.6783 4.5000 7.9000
dune_height_m:
Level N Mean Std Min Max
------------------------------------------------------------
2 4 4.6500 0.2380 4.5000 5.0000
5 4 7.3250 1.3048 5.8000 8.8000
groin_spacing_m:
Level N Mean Std Min Max
------------------------------------------------------------
100 4 5.8000 1.4989 4.5000 7.9000
400 4 6.1750 2.0467 4.5000 8.8000
volume_m3_m:
Level N Mean Std Min Max
------------------------------------------------------------
100 4 5.4000 1.1165 4.5000 6.8000
30 4 6.5750 2.0887 4.6000 8.8000
Optimization Recommendations
=== Optimization: retention_yrs ===
Direction: maximize
Best observed run: #4
grain_mm = 1.0
berm_width_m = 60
dune_height_m = 5
groin_spacing_m = 400
volume_m3_m = 100
Value: 10.3
RSM Model (linear, R² = 0.2538, Adj R² = -1.6118):
Coefficients:
intercept +5.0250
grain_mm +0.1000
berm_width_m +1.2500
dune_height_m -0.3750
groin_spacing_m +0.7000
volume_m3_m +0.0250
Predicted optimum (from linear model, at observed points):
grain_mm = 0.3
berm_width_m = 60
dune_height_m = 2
groin_spacing_m = 400
volume_m3_m = 30
Predicted value: 7.2250
Surface optimum (via L-BFGS-B, linear model):
grain_mm = 1
berm_width_m = 60
dune_height_m = 2
groin_spacing_m = 400
volume_m3_m = 100
Predicted value: 7.4750
Model quality: Weak fit — consider adding center points or using a different design.
Factor importance:
1. berm_width_m (effect: 2.5, contribution: 51.0%)
2. groin_spacing_m (effect: 1.4, contribution: 28.6%)
3. dune_height_m (effect: -0.7, contribution: 15.3%)
4. grain_mm (effect: 0.2, contribution: 4.1%)
5. volume_m3_m (effect: -0.0, contribution: 1.0%)
=== Optimization: storm_resilience ===
Direction: maximize
Best observed run: #4
grain_mm = 1.0
berm_width_m = 60
dune_height_m = 5
groin_spacing_m = 400
volume_m3_m = 100
Value: 8.8
RSM Model (linear, R² = 0.6553, Adj R² = -0.2065):
Coefficients:
intercept +5.9875
grain_mm +0.0375
berm_width_m +1.1375
dune_height_m -0.2625
groin_spacing_m +0.4625
volume_m3_m +0.1625
Predicted optimum (from linear model, at observed points):
grain_mm = 0.3
berm_width_m = 60
dune_height_m = 2
groin_spacing_m = 400
volume_m3_m = 30
Predicted value: 7.6500
Surface optimum (via L-BFGS-B, linear model):
grain_mm = 1
berm_width_m = 60
dune_height_m = 2
groin_spacing_m = 400
volume_m3_m = 100
Predicted value: 8.0500
Model quality: Moderate fit — use predictions directionally, not precisely.
Factor importance:
1. berm_width_m (effect: 2.3, contribution: 55.2%)
2. groin_spacing_m (effect: 0.9, contribution: 22.4%)
3. dune_height_m (effect: -0.5, contribution: 12.7%)
4. volume_m3_m (effect: -0.3, contribution: 7.9%)
5. grain_mm (effect: 0.1, contribution: 1.8%)