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
- Run confirmation experiments at the predicted optimal settings to validate the model.
- Consider whether any fixed factors should be varied in a future study.
Experimental Setup
Factors
| Factor | Low | High | Unit |
wingspan_cm | 15 | 30 | cm |
nose_weight_g | 0 | 3 | g |
dihedral_deg | 0 | 15 | deg |
Fixed: paper = A4_80gsm, fold = dart
Responses
| Response | Direction | Unit |
distance_m | ↑ maximize | m |
stability_score | ↑ maximize | pts |
Configuration
{
"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.
| Run | wingspan_cm | nose_weight_g | dihedral_deg |
| 1 | 22.5 | 1.5 | 7.5 |
| 2 | 30 | 0 | 15 |
| 3 | 15 | 3 | 0 |
| 4 | 22.5 | 4.23861 | 7.5 |
| 5 | 22.5 | 1.5 | 7.5 |
| 6 | 8.80694 | 1.5 | 7.5 |
| 7 | 22.5 | 1.5 | -6.19306 |
| 8 | 22.5 | 1.5 | 7.5 |
| 9 | 30 | 3 | 0 |
| 10 | 36.1931 | 1.5 | 7.5 |
| 11 | 22.5 | 1.5 | 7.5 |
| 12 | 22.5 | -1.23861 | 7.5 |
| 13 | 22.5 | 1.5 | 7.5 |
| 14 | 15 | 0 | 15 |
| 15 | 22.5 | 1.5 | 7.5 |
| 16 | 30 | 0 | 0 |
| 17 | 22.5 | 1.5 | 21.1931 |
| 18 | 30 | 3 | 15 |
| 19 | 22.5 | 1.5 | 7.5 |
| 20 | 15 | 0 | 0 |
| 21 | 15 | 3 | 15 |
| 22 | 22.5 | 1.5 | 7.5 |
Step-by-Step Workflow
1
Preview the design
$ doe info --config use_cases/262_paper_airplane/config.json
2
Generate the runner script
$ 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
$ bash use_cases/262_paper_airplane/results/run.sh
4
Analyze results
$ doe analyze --config use_cases/262_paper_airplane/config.json
5
Get optimization recommendations
$ 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.
$ doe optimize --config use_cases/262_paper_airplane/config.json --multi
7
Generate the HTML report
$ doe report --config use_cases/262_paper_airplane/config.json \
--output use_cases/262_paper_airplane/results/report.html
Features Exercised
| Feature | Value |
| Design type | central_composite |
| Factor types | continuous (all 3) |
| Arg style | double-dash |
| Responses | 2 (distance_m ↑, stability_score ↑) |
| Total runs | 22 |
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
| Source | DF | SS | MS | F | p-value |
| 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 |
| Pure | Error | 7 | 40.0600 | | |
| Error | 9 | 35.4990 | 5.7229 | | |
| Total | 21 | 139.0859 | 6.6231 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response: stability_score
Top factors: wingspan_cm (39.4%), nose_weight_g (33.1%), dihedral_deg (27.5%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| 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 |
| Pure | Error | 7 | 5.2787 | | |
| Error | 9 | 0.0000 | 0.7541 | | |
| Total | 21 | 27.0695 | 1.2890 | | |
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.
distance m nose weight g vs dihedral deg
distance m wingspan cm vs dihedral deg
distance m wingspan cm vs nose weight g
stability score nose weight g vs dihedral deg
stability score wingspan cm vs dihedral deg
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
| Response | Weight | Desirability | Predicted | Dir |
distance_m |
1.0 |
|
10.80 0.9545 10.80 m |
↑ |
stability_score |
1.5 |
|
6.90 0.9545 6.90 pts |
↑ |
Recommended Settings
| Factor | Value |
wingspan_cm | 22.5 cm |
nose_weight_g | 1.5 g |
dihedral_deg | 21.1931 deg |
Source: from observed run #18
Trade-off Summary
Sacrifice = how much worse than single-objective best.
| Response | Predicted | Best Observed | Sacrifice |
stability_score | 6.90 | 6.90 | +0.00 |
Top 3 Runs by Desirability
| Run | D | Factor Settings |
| #17 | 0.8017 | wingspan_cm=22.5, nose_weight_g=1.5, dihedral_deg=-6.19306 |
| #8 | 0.7635 | wingspan_cm=22.5, nose_weight_g=1.5, dihedral_deg=7.5 |
Model Quality
| Response | R² | Type |
stability_score | 0.6461 | quadratic |
Full Multi-Objective Output
============================================================
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
=== 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
=== 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%)