← All Use Cases
Central Composite Design

Paper Airplane Distance

Central composite design to maximize flight distance and stability by tuning wing span, nose weight, and dihedral angle

Summary

This experiment investigates paper airplane distance. Central composite design to maximize flight distance and stability by tuning wing span, nose weight, and dihedral angle.

The design varies 3 factors: wingspan cm (cm), ranging from 15 to 30, nose weight g (g), ranging from 0 to 3, and dihedral deg (deg), ranging from 0 to 15. The goal is to optimize 2 responses: distance m (m) (maximize) and stability score (pts) (maximize). Fixed conditions held constant across all runs include paper = A4_80gsm, fold = dart.

A Central Composite Design (CCD) was selected to fit a full quadratic response surface model, including curvature and interaction effects. With 3 factors this produces 22 runs including center points and axial (star) points that extend beyond the factorial range.

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 distance m, the most influential factors were wingspan cm (43.0%), nose weight g (36.9%), dihedral deg (20.1%). The best observed value was 10.8 (at wingspan cm = 22.5, nose weight g = 1.5, dihedral deg = 7.5).

For stability score, the most influential factors were wingspan cm (39.4%), nose weight g (33.1%), dihedral deg (27.5%). The best observed value was 6.9 (at wingspan cm = 22.5, nose weight g = 1.5, dihedral deg = 7.5).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
wingspan_cm1530cm
nose_weight_g03g
dihedral_deg015deg

Fixed: paper = A4_80gsm, fold = dart

Responses

ResponseDirectionUnit
distance_m↑ maximizem
stability_score↑ maximizepts

Configuration

use_cases/262_paper_airplane/config.json
{ "metadata": { "name": "Paper Airplane Distance", "description": "Central composite design to maximize flight distance and stability by tuning wing span, nose weight, and dihedral angle" }, "factors": [ { "name": "wingspan_cm", "levels": [ "15", "30" ], "type": "continuous", "unit": "cm" }, { "name": "nose_weight_g", "levels": [ "0", "3" ], "type": "continuous", "unit": "g" }, { "name": "dihedral_deg", "levels": [ "0", "15" ], "type": "continuous", "unit": "deg" } ], "fixed_factors": { "paper": "A4_80gsm", "fold": "dart" }, "responses": [ { "name": "distance_m", "optimize": "maximize", "unit": "m" }, { "name": "stability_score", "optimize": "maximize", "unit": "pts" } ], "settings": { "operation": "central_composite", "test_script": "use_cases/262_paper_airplane/sim.sh" } }

Experimental Matrix

The Central Composite Design produces 22 runs. Each row is one experiment with specific factor settings.

Runwingspan_cmnose_weight_gdihedral_deg
122.51.57.5
230015
31530
422.54.238617.5
522.51.57.5
68.806941.57.5
722.51.5-6.19306
822.51.57.5
93030
1036.19311.57.5
1122.51.57.5
1222.5-1.238617.5
1322.51.57.5
1415015
1522.51.57.5
163000
1722.51.521.1931
1830315
1922.51.57.5
201500
2115315
2222.51.57.5

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/262_paper_airplane/config.json
2

Generate the runner script

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

Execute the experiments

Terminal
$ bash use_cases/262_paper_airplane/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/262_paper_airplane/config.json
5

Get optimization recommendations

Terminal
$ doe optimize --config use_cases/262_paper_airplane/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/262_paper_airplane/config.json --multi
7

Generate the HTML report

Terminal
$ doe report --config use_cases/262_paper_airplane/config.json \ --output use_cases/262_paper_airplane/results/report.html

Features Exercised

FeatureValue
Design typecentral_composite
Factor typescontinuous (all 3)
Arg styledouble-dash
Responses2 (distance_m ↑, stability_score ↑)
Total runs22

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: distance_m

Top factors: wingspan_cm (43.0%), nose_weight_g (36.9%), dihedral_deg (20.1%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
wingspan_cm457.405914.35152.5080.1160
nose_weight_g430.00177.50041.3110.3367
dihedral_deg416.17924.04480.7070.6071
LackofFit20.00000.0000
PureError740.0600
Error935.49905.7229
Total21139.08596.6231

Pareto Chart

Pareto chart for distance_m

Main Effects Plot

Main effects plot for distance_m

Normal Probability Plot of Effects

Normal probability plot for distance_m

Half-Normal Plot of Effects

Half-normal plot for distance_m

Model Diagnostics

Model diagnostics for distance_m

Response: stability_score

Top factors: wingspan_cm (39.4%), nose_weight_g (33.1%), dihedral_deg (27.5%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
wingspan_cm416.64794.16205.5190.0159
nose_weight_g45.98541.49631.9840.1807
dihedral_deg45.52791.38201.8330.2068
LackofFit20.00000.0000
PureError75.2787
Error90.00000.7541
Total2127.06951.2890

Pareto Chart

Pareto chart for stability_score

Main Effects Plot

Main effects plot for stability_score

Normal Probability Plot of Effects

Normal probability plot for stability_score

Half-Normal Plot of Effects

Half-normal plot for stability_score

Model Diagnostics

Model diagnostics for stability_score

Response Surface Plots

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

distance m nose weight g vs dihedral deg

RSM surface: distance m nose weight g vs dihedral deg

distance m wingspan cm vs dihedral deg

RSM surface: distance m wingspan cm vs dihedral deg

distance m wingspan cm vs nose weight g

RSM surface: distance m wingspan cm vs nose weight g

stability score nose weight g vs dihedral deg

RSM surface: stability score nose weight g vs dihedral deg

stability score wingspan cm vs dihedral deg

RSM surface: stability score wingspan cm vs dihedral deg

stability score wingspan cm vs nose weight g

RSM surface: stability score wingspan cm vs nose weight g

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

ResponseWeightDesirabilityPredictedDir
distance_m 1.0
0.9545
10.80 0.9545 10.80 m
stability_score 1.5
0.9545
6.90 0.9545 6.90 pts

Recommended Settings

FactorValue
wingspan_cm22.5 cm
nose_weight_g1.5 g
dihedral_deg21.1931 deg

Source: from observed run #18

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
stability_score6.906.90+0.00

Top 3 Runs by Desirability

RunDFactor Settings
#170.8017wingspan_cm=22.5, nose_weight_g=1.5, dihedral_deg=-6.19306
#80.7635wingspan_cm=22.5, nose_weight_g=1.5, dihedral_deg=7.5

Model Quality

ResponseType
stability_score0.6461quadratic

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.9545 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- distance_m 1.0 0.9545 10.80 m ↑ stability_score 1.5 0.9545 6.90 pts ↑ Recommended settings: wingspan_cm = 22.5 cm nose_weight_g = 1.5 g dihedral_deg = 21.1931 deg (from observed run #18) Trade-off summary: distance_m: 10.80 (best observed: 10.80, sacrifice: +0.00) stability_score: 6.90 (best observed: 6.90, sacrifice: +0.00) Model quality: distance_m: R² = 0.7067 (quadratic) stability_score: R² = 0.6461 (quadratic) Top 3 observed runs by overall desirability: 1. Run #18 (D=0.9545): wingspan_cm=22.5, nose_weight_g=1.5, dihedral_deg=21.1931 2. Run #17 (D=0.8017): wingspan_cm=22.5, nose_weight_g=1.5, dihedral_deg=-6.19306 3. Run #8 (D=0.7635): wingspan_cm=22.5, nose_weight_g=1.5, dihedral_deg=7.5

Full Analysis Output

doe analyze
=== Main Effects: distance_m === Factor Effect Std Error % Contribution -------------------------------------------------------------- wingspan_cm 6.2500 0.5487 43.0% nose_weight_g 5.3750 0.5487 36.9% dihedral_deg 2.9250 0.5487 20.1% === ANOVA Table: distance_m === Source DF SS MS F p-value ----------------------------------------------------------------------------- wingspan_cm 4 57.4059 14.3515 2.508 0.1160 nose_weight_g 4 30.0017 7.5004 1.311 0.3367 dihedral_deg 4 16.1792 4.0448 0.707 0.6071 Lack of Fit 2 0.0000 0.0000 0.000 1.0000 Pure Error 7 40.0600 5.7229 Error 9 35.4990 5.7229 Total 21 139.0859 6.6231 === Summary Statistics: distance_m === wingspan_cm: Level N Mean Std Min Max ------------------------------------------------------------ 15 4 3.5500 2.5749 0.7000 6.4000 22.5 12 7.2250 2.3418 2.6000 10.8000 30 4 7.6750 0.6994 6.8000 8.5000 36.1931 1 9.8000 0.0000 9.8000 9.8000 8.80694 1 5.7000 0.0000 5.7000 5.7000 nose_weight_g: Level N Mean Std Min Max ------------------------------------------------------------ -1.23861 1 10.8000 0.0000 10.8000 10.8000 0 4 5.8000 2.4712 2.2000 7.8000 1.5 12 6.9167 2.2152 2.6000 9.8000 3 4 5.4250 3.5018 0.7000 8.5000 4.23861 1 8.4000 0.0000 8.4000 8.4000 dihedral_deg: Level N Mean Std Min Max ------------------------------------------------------------ -6.19306 1 8.3000 0.0000 8.3000 8.3000 0 4 5.3750 3.1563 0.7000 7.6000 15 4 5.8500 2.8896 2.2000 8.5000 21.1931 1 7.6000 0.0000 7.6000 7.6000 7.5 12 7.1917 2.4858 2.6000 10.8000 === Main Effects: stability_score === Factor Effect Std Error % Contribution -------------------------------------------------------------- wingspan_cm 2.8250 0.2421 39.4% nose_weight_g 2.3750 0.2421 33.1% dihedral_deg 1.9750 0.2421 27.5% === ANOVA Table: stability_score === Source DF SS MS F p-value ----------------------------------------------------------------------------- wingspan_cm 4 16.6479 4.1620 5.519 0.0159 nose_weight_g 4 5.9854 1.4963 1.984 0.1807 dihedral_deg 4 5.5279 1.3820 1.833 0.2068 Lack of Fit 2 0.0000 0.0000 0.000 1.0000 Pure Error 7 5.2787 0.7541 Error 9 0.0000 0.7541 Total 21 27.0695 1.2890 === Summary Statistics: stability_score === wingspan_cm: Level N Mean Std Min Max ------------------------------------------------------------ 15 4 3.5750 0.4573 3.1000 4.1000 22.5 12 5.6333 0.9267 3.8000 6.9000 30 4 5.9250 0.3403 5.5000 6.2000 36.1931 1 4.5000 0.0000 4.5000 4.5000 8.80694 1 6.4000 0.0000 6.4000 6.4000 nose_weight_g: Level N Mean Std Min Max ------------------------------------------------------------ -1.23861 1 6.9000 0.0000 6.9000 6.9000 0 4 4.5250 1.5586 3.1000 6.2000 1.5 12 5.4917 0.9278 3.8000 6.7000 3 4 4.9750 1.2010 3.8000 6.2000 4.23861 1 5.7000 0.0000 5.7000 5.7000 dihedral_deg: Level N Mean Std Min Max ------------------------------------------------------------ -6.19306 1 6.2000 0.0000 6.2000 6.2000 0 4 4.7250 1.3913 3.1000 6.2000 15 4 4.7750 1.4385 3.3000 6.2000 21.1931 1 6.7000 0.0000 6.7000 6.7000 7.5 12 5.4667 0.9306 3.8000 6.9000

Optimization Recommendations

doe optimize
=== Optimization: distance_m === Direction: maximize Best observed run: #18 wingspan_cm = 22.5 nose_weight_g = 1.5 dihedral_deg = 7.5 Value: 10.8 RSM Model (linear, R² = 0.0769, Adj R² = -0.0769): Coefficients: intercept +6.6864 wingspan_cm +0.0421 nose_weight_g +0.0997 dihedral_deg +0.8471 RSM Model (quadratic, R² = 0.2504, Adj R² = -0.3118): Coefficients: intercept +6.7390 wingspan_cm +0.0421 nose_weight_g +0.0997 dihedral_deg +0.8471 wingspan_cm*nose_weight_g +0.2500 wingspan_cm*dihedral_deg -0.8750 nose_weight_g*dihedral_deg +0.4750 wingspan_cm^2 +0.6537 nose_weight_g^2 -0.4413 dihedral_deg^2 -0.2913 Curvature analysis: wingspan_cm coef=+0.6537 convex (has a minimum) nose_weight_g coef=-0.4413 concave (has a maximum) dihedral_deg coef=-0.2913 concave (has a maximum) Notable interactions: wingspan_cm*dihedral_deg coef=-0.8750 (antagonistic) nose_weight_g*dihedral_deg coef=+0.4750 (synergistic) Predicted optimum (from linear model, at observed points): wingspan_cm = 22.5 nose_weight_g = 1.5 dihedral_deg = 21.1931 Predicted value: 8.2330 Surface optimum (via L-BFGS-B, linear model): wingspan_cm = 30 nose_weight_g = 3 dihedral_deg = 15 Predicted value: 7.6753 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. nose_weight_g (effect: 5.8, contribution: 42.5%) 2. dihedral_deg (effect: 5.6, contribution: 41.4%) 3. wingspan_cm (effect: 2.2, contribution: 16.0%) === Optimization: stability_score === Direction: maximize Best observed run: #18 wingspan_cm = 22.5 nose_weight_g = 1.5 dihedral_deg = 7.5 Value: 6.9 RSM Model (linear, R² = 0.1197, Adj R² = -0.0271): Coefficients: intercept +5.2955 wingspan_cm -0.0409 nose_weight_g +0.3539 dihedral_deg +0.3065 RSM Model (quadratic, R² = 0.5220, Adj R² = 0.1635): Coefficients: intercept +5.5323 wingspan_cm -0.0409 nose_weight_g +0.3539 dihedral_deg +0.3065 wingspan_cm*nose_weight_g -0.2000 wingspan_cm*dihedral_deg -0.6750 nose_weight_g*dihedral_deg -0.4750 wingspan_cm^2 +0.1966 nose_weight_g^2 -0.4334 dihedral_deg^2 -0.1184 Curvature analysis: nose_weight_g coef=-0.4334 concave (has a maximum) wingspan_cm coef=+0.1966 convex (has a minimum) dihedral_deg coef=-0.1184 concave (has a maximum) Notable interactions: wingspan_cm*dihedral_deg coef=-0.6750 (antagonistic) nose_weight_g*dihedral_deg coef=-0.4750 (antagonistic) Predicted optimum (from quadratic model, at observed points): wingspan_cm = 15 nose_weight_g = 3 dihedral_deg = 15 Predicted value: 6.2783 Surface optimum (via L-BFGS-B, quadratic model): wingspan_cm = 15 nose_weight_g = 1.63657 dihedral_deg = 15 Predicted value: 6.6364 Model quality: Moderate fit — use predictions directionally, not precisely. Factor importance: 1. dihedral_deg (effect: 2.9, contribution: 45.3%) 2. nose_weight_g (effect: 2.8, contribution: 43.4%) 3. wingspan_cm (effect: 0.7, contribution: 11.3%)
← Previous: Model Rocket Flight Optimization Next: RC Plane Trim Settings →