← All Use Cases
Box-Behnken Design

Golf Driver Launch Conditions

Box-Behnken design to maximize carry distance and minimize side spin by tuning loft angle, shaft flex, and tee height

Summary

This experiment investigates golf driver launch conditions. Box-Behnken design to maximize carry distance and minimize side spin by tuning loft angle, shaft flex, and tee height.

The design varies 3 factors: loft deg (deg), ranging from 8 to 12, shaft flex (rating), ranging from 1 to 5, and tee height mm (mm), ranging from 40 to 70. The goal is to optimize 2 responses: carry yards (yds) (maximize) and side spin rpm (rpm) (minimize). Fixed conditions held constant across all runs include swing speed = 95mph, ball = three_piece.

A Box-Behnken design was chosen because it efficiently fits quadratic models with 3 continuous factors while avoiding extreme corner combinations — requiring only 15 runs instead of the 8 needed for a full factorial at two levels.

Quadratic response surface models were fitted to capture potential curvature and factor interactions. The RSM contour plots below visualize how pairs of factors jointly affect each response.

Key Findings

For carry yards, the most influential factors were shaft flex (44.4%), tee height mm (30.9%), loft deg (24.7%). The best observed value was 246.0 (at loft deg = 10, shaft flex = 3, tee height mm = 55).

For side spin rpm, the most influential factors were loft deg (52.4%), tee height mm (36.5%), shaft flex (11.0%). The best observed value was 369.0 (at loft deg = 8, shaft flex = 3, tee height mm = 40).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
loft_deg812deg
shaft_flex15rating
tee_height_mm4070mm

Fixed: swing_speed = 95mph, ball = three_piece

Responses

ResponseDirectionUnit
carry_yards↑ maximizeyds
side_spin_rpm↓ minimizerpm

Configuration

use_cases/209_golf_driver_launch/config.json
{ "metadata": { "name": "Golf Driver Launch Conditions", "description": "Box-Behnken design to maximize carry distance and minimize side spin by tuning loft angle, shaft flex, and tee height" }, "factors": [ { "name": "loft_deg", "levels": [ "8", "12" ], "type": "continuous", "unit": "deg" }, { "name": "shaft_flex", "levels": [ "1", "5" ], "type": "continuous", "unit": "rating" }, { "name": "tee_height_mm", "levels": [ "40", "70" ], "type": "continuous", "unit": "mm" } ], "fixed_factors": { "swing_speed": "95mph", "ball": "three_piece" }, "responses": [ { "name": "carry_yards", "optimize": "maximize", "unit": "yds" }, { "name": "side_spin_rpm", "optimize": "minimize", "unit": "rpm" } ], "settings": { "operation": "box_behnken", "test_script": "use_cases/209_golf_driver_launch/sim.sh" } }

Experimental Matrix

The Box-Behnken Design produces 15 runs. Each row is one experiment with specific factor settings.

Runloft_degshaft_flextee_height_mm
110140
210355
312370
412340
510355
610355
78370
812155
910170
1012555
118340
1210570
138155
148555
1510540

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/209_golf_driver_launch/config.json
2

Generate the runner script

Terminal
$ doe generate --config use_cases/209_golf_driver_launch/config.json \ --output use_cases/209_golf_driver_launch/results/run.sh --seed 42
3

Execute the experiments

Terminal
$ bash use_cases/209_golf_driver_launch/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/209_golf_driver_launch/config.json
5

Get optimization recommendations

Terminal
$ doe optimize --config use_cases/209_golf_driver_launch/config.json
6

Multi-objective optimization

With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.

Terminal
$ doe optimize --config use_cases/209_golf_driver_launch/config.json --multi
7

Generate the HTML report

Terminal
$ doe report --config use_cases/209_golf_driver_launch/config.json \ --output use_cases/209_golf_driver_launch/results/report.html

Features Exercised

FeatureValue
Design typebox_behnken
Factor typescontinuous (all 3)
Arg styledouble-dash
Responses2 (carry_yards ↑, side_spin_rpm ↓)
Total runs15

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: carry_yards

Top factors: shaft_flex (44.4%), tee_height_mm (30.9%), loft_deg (24.7%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
loft_deg243.183321.59171.6610.2493
shaft_flex2154.326277.16315.9360.0263
tee_height_mm277.719038.85952.9890.1073
LackofFit695.704815.9508
PureError226.0000
Error8121.704813.0000
Total14396.933328.3524

Pareto Chart

Pareto chart for carry_yards

Main Effects Plot

Main effects plot for carry_yards

Normal Probability Plot of Effects

Normal probability plot for carry_yards

Half-Normal Plot of Effects

Half-normal plot for carry_yards

Model Diagnostics

Model diagnostics for carry_yards

Response: side_spin_rpm

Top factors: loft_deg (52.4%), tee_height_mm (36.5%), shaft_flex (11.0%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
loft_deg280802.469040401.23451.0100.4064
shaft_flex25067.75482533.87740.0630.9391
tee_height_mm239816.076219908.03810.4980.6257
LackofFit6124830.633320805.1056
PureError280024.0000
Error8204854.633340012.0000
Total14330540.933323610.0667

Pareto Chart

Pareto chart for side_spin_rpm

Main Effects Plot

Main effects plot for side_spin_rpm

Normal Probability Plot of Effects

Normal probability plot for side_spin_rpm

Half-Normal Plot of Effects

Half-normal plot for side_spin_rpm

Model Diagnostics

Model diagnostics for side_spin_rpm

Response Surface Plots

3D surfaces fitted with quadratic RSM. Red dots are observed data points.

carry yards loft deg vs shaft flex

RSM surface: carry yards loft deg vs shaft flex

carry yards loft deg vs tee height mm

RSM surface: carry yards loft deg vs tee height mm

carry yards shaft flex vs tee height mm

RSM surface: carry yards shaft flex vs tee height mm

side spin rpm loft deg vs shaft flex

RSM surface: side spin rpm loft deg vs shaft flex

side spin rpm loft deg vs tee height mm

RSM surface: side spin rpm loft deg vs tee height mm

side spin rpm shaft flex vs tee height mm

RSM surface: side spin rpm shaft flex vs tee height mm

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.7122

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
carry_yards 1.5
0.9545
246.00 0.9545 246.00 yds
side_spin_rpm 1.0
0.4590
677.00 0.4590 677.00 rpm

Recommended Settings

FactorValue
loft_deg10 deg
shaft_flex3 rating
tee_height_mm55 mm

Source: from observed run #3

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
side_spin_rpm677.00369.00+308.00

Top 3 Runs by Desirability

RunDFactor Settings
#50.7102loft_deg=12, shaft_flex=5, tee_height_mm=55
#60.6260loft_deg=10, shaft_flex=3, tee_height_mm=55

Model Quality

ResponseType
side_spin_rpm0.6848quadratic

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.7122 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- carry_yards 1.5 0.9545 246.00 yds ↑ side_spin_rpm 1.0 0.4590 677.00 rpm ↓ Recommended settings: loft_deg = 10 deg shaft_flex = 3 rating tee_height_mm = 55 mm (from observed run #3) Trade-off summary: carry_yards: 246.00 (best observed: 246.00, sacrifice: +0.00) side_spin_rpm: 677.00 (best observed: 369.00, sacrifice: +308.00) Model quality: carry_yards: R² = 0.7449 (quadratic) side_spin_rpm: R² = 0.6848 (quadratic) Top 3 observed runs by overall desirability: 1. Run #3 (D=0.7122): loft_deg=10, shaft_flex=3, tee_height_mm=55 2. Run #5 (D=0.7102): loft_deg=12, shaft_flex=5, tee_height_mm=55 3. Run #6 (D=0.6260): loft_deg=10, shaft_flex=3, tee_height_mm=55

Full Analysis Output

doe analyze
=== Main Effects: carry_yards === Factor Effect Std Error % Contribution -------------------------------------------------------------- shaft_flex 7.6429 1.3748 44.4% tee_height_mm 5.3214 1.3748 30.9% loft_deg 4.2500 1.3748 24.7% === ANOVA Table: carry_yards === Source DF SS MS F p-value ----------------------------------------------------------------------------- loft_deg 2 43.1833 21.5917 1.661 0.2493 shaft_flex 2 154.3262 77.1631 5.936 0.0263 tee_height_mm 2 77.7190 38.8595 2.989 0.1073 Lack of Fit 6 95.7048 15.9508 1.227 0.5137 Pure Error 2 26.0000 13.0000 Error 8 121.7048 13.0000 Total 14 396.9333 28.3524 === Summary Statistics: carry_yards === loft_deg: Level N Mean Std Min Max ------------------------------------------------------------ 10 7 236.0000 3.0551 232.0000 240.0000 12 4 236.7500 4.0311 232.0000 241.0000 8 4 232.5000 9.1104 226.0000 246.0000 shaft_flex: Level N Mean Std Min Max ------------------------------------------------------------ 1 4 234.2500 4.9917 229.0000 241.0000 3 7 232.8571 4.5251 226.0000 239.0000 5 4 240.5000 3.8730 237.0000 246.0000 tee_height_mm: Level N Mean Std Min Max ------------------------------------------------------------ 40 4 234.2500 4.5735 229.0000 240.0000 55 7 237.5714 5.6526 229.0000 246.0000 70 4 232.2500 4.6458 226.0000 237.0000 === Main Effects: side_spin_rpm === Factor Effect Std Error % Contribution -------------------------------------------------------------- loft_deg 176.7500 39.6737 52.4% tee_height_mm 123.1429 39.6737 36.5% shaft_flex 37.2143 39.6737 11.0% === ANOVA Table: side_spin_rpm === Source DF SS MS F p-value ----------------------------------------------------------------------------- loft_deg 2 80802.4690 40401.2345 1.010 0.4064 shaft_flex 2 5067.7548 2533.8774 0.063 0.9391 tee_height_mm 2 39816.0762 19908.0381 0.498 0.6257 Lack of Fit 6 124830.6333 20805.1056 0.520 0.7737 Pure Error 2 80024.0000 40012.0000 Error 8 204854.6333 40012.0000 Total 14 330540.9333 23610.0667 === Summary Statistics: side_spin_rpm === loft_deg: Level N Mean Std Min Max ------------------------------------------------------------ 10 7 536.5714 121.3409 420.0000 794.0000 12 4 695.0000 172.6789 529.0000 934.0000 8 4 518.2500 154.8577 369.0000 677.0000 shaft_flex: Level N Mean Std Min Max ------------------------------------------------------------ 1 4 590.7500 242.9765 369.0000 934.0000 3 7 554.2857 137.8196 403.0000 794.0000 5 4 591.5000 107.0747 493.0000 691.0000 tee_height_mm: Level N Mean Std Min Max ------------------------------------------------------------ 40 4 559.0000 76.2146 493.0000 626.0000 55 7 624.1429 207.5809 369.0000 934.0000 70 4 501.0000 70.1427 403.0000 567.0000

Optimization Recommendations

doe optimize
=== Optimization: carry_yards === Direction: maximize Best observed run: #3 loft_deg = 10 shaft_flex = 3 tee_height_mm = 55 Value: 246.0 RSM Model (linear, R² = 0.4251, Adj R² = 0.2684): Coefficients: intercept +235.2667 loft_deg +3.1250 shaft_flex +1.2500 tee_height_mm +3.1250 RSM Model (quadratic, R² = 0.6551, Adj R² = 0.0342): Coefficients: intercept +238.3333 loft_deg +3.1250 shaft_flex +1.2500 tee_height_mm +3.1250 loft_deg*shaft_flex -2.2500 loft_deg*tee_height_mm -1.5000 shaft_flex*tee_height_mm -0.7500 loft_deg^2 -1.1667 shaft_flex^2 -3.9167 tee_height_mm^2 -0.6667 Curvature analysis: shaft_flex coef=-3.9167 concave (has a maximum) loft_deg coef=-1.1667 concave (has a maximum) tee_height_mm coef=-0.6667 concave (has a maximum) Notable interactions: loft_deg*shaft_flex coef=-2.2500 (antagonistic) loft_deg*tee_height_mm coef=-1.5000 (antagonistic) shaft_flex*tee_height_mm coef=-0.7500 (antagonistic) Predicted optimum (from linear model, at observed points): loft_deg = 12 shaft_flex = 3 tee_height_mm = 70 Predicted value: 241.5167 Surface optimum (via L-BFGS-B, linear model): loft_deg = 12 shaft_flex = 5 tee_height_mm = 70 Predicted value: 242.7667 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. loft_deg (effect: 6.2, contribution: 35.6%) 2. tee_height_mm (effect: 6.2, contribution: 35.6%) 3. shaft_flex (effect: 5.0, contribution: 28.7%) === Optimization: side_spin_rpm === Direction: minimize Best observed run: #1 loft_deg = 8 shaft_flex = 3 tee_height_mm = 40 Value: 369.0 RSM Model (linear, R² = 0.3981, Adj R² = 0.2339): Coefficients: intercept +573.9333 loft_deg +113.2500 shaft_flex -32.7500 tee_height_mm +50.5000 RSM Model (quadratic, R² = 0.5829, Adj R² = -0.1678): Coefficients: intercept +534.0000 loft_deg +113.2500 shaft_flex -32.7500 tee_height_mm +50.5000 loft_deg*shaft_flex -25.7500 loft_deg*tee_height_mm +6.2500 shaft_flex*tee_height_mm -74.2500 loft_deg^2 +86.6250 shaft_flex^2 -36.3750 tee_height_mm^2 +24.6250 Curvature analysis: loft_deg coef=+86.6250 convex (has a minimum) shaft_flex coef=-36.3750 concave (has a maximum) tee_height_mm coef=+24.6250 convex (has a minimum) Notable interactions: shaft_flex*tee_height_mm coef=-74.2500 (antagonistic) loft_deg*shaft_flex coef=-25.7500 (antagonistic) loft_deg*tee_height_mm coef=+6.2500 (synergistic) Predicted optimum (from linear model, at observed points): loft_deg = 12 shaft_flex = 3 tee_height_mm = 70 Predicted value: 737.6833 Surface optimum (via L-BFGS-B, linear model): loft_deg = 8 shaft_flex = 5 tee_height_mm = 40 Predicted value: 377.4333 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. loft_deg (effect: 226.5, contribution: 56.0%) 2. tee_height_mm (effect: 101.0, contribution: 25.0%) 3. shaft_flex (effect: 77.1, contribution: 19.1%)
← Previous: Plywood Layup Optimization Next: Swimming Stroke Efficiency →