Summary
This experiment investigates hot air balloon flight planning. Box-Behnken design to maximize flight duration and altitude ceiling by tuning burner output, envelope volume, and passenger count.
The design varies 3 factors: burner btu (BTU/hr), ranging from 6000000 to 12000000, envelope m3 (m3), ranging from 2000 to 4000, and passengers (count), ranging from 2 to 8. The goal is to optimize 2 responses: flight hrs (hrs) (maximize) and ceiling m (m) (maximize). Fixed conditions held constant across all runs include fuel kg = 100, ambient temp = 15C.
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 flight hrs, the most influential factors were passengers (42.0%), burner btu (32.9%), envelope m3 (25.1%). The best observed value was 2.8 (at burner btu = 6e+06, envelope m3 = 3000, passengers = 2).
For ceiling m, the most influential factors were passengers (43.1%), burner btu (36.7%), envelope m3 (20.2%). The best observed value was 729.0 (at burner btu = 6e+06, envelope m3 = 3000, passengers = 2).
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 |
burner_btu | 6000000 | 12000000 | BTU/hr |
envelope_m3 | 2000 | 4000 | m3 |
passengers | 2 | 8 | count |
Fixed: fuel_kg = 100, ambient_temp = 15C
Responses
| Response | Direction | Unit |
flight_hrs | ↑ maximize | hrs |
ceiling_m | ↑ maximize | m |
Configuration
{
"metadata": {
"name": "Hot Air Balloon Flight Planning",
"description": "Box-Behnken design to maximize flight duration and altitude ceiling by tuning burner output, envelope volume, and passenger count"
},
"factors": [
{
"name": "burner_btu",
"levels": [
"6000000",
"12000000"
],
"type": "continuous",
"unit": "BTU/hr"
},
{
"name": "envelope_m3",
"levels": [
"2000",
"4000"
],
"type": "continuous",
"unit": "m3"
},
{
"name": "passengers",
"levels": [
"2",
"8"
],
"type": "continuous",
"unit": "count"
}
],
"fixed_factors": {
"fuel_kg": "100",
"ambient_temp": "15C"
},
"responses": [
{
"name": "flight_hrs",
"optimize": "maximize",
"unit": "hrs"
},
{
"name": "ceiling_m",
"optimize": "maximize",
"unit": "m"
}
],
"settings": {
"operation": "box_behnken",
"test_script": "use_cases/270_hot_air_balloon/sim.sh"
}
}
Experimental Matrix
The Box-Behnken Design produces 15 runs. Each row is one experiment with specific factor settings.
| Run | burner_btu | envelope_m3 | passengers |
| 1 | 9e+06 | 2000 | 2 |
| 2 | 9e+06 | 3000 | 5 |
| 3 | 1.2e+07 | 3000 | 8 |
| 4 | 1.2e+07 | 3000 | 2 |
| 5 | 9e+06 | 3000 | 5 |
| 6 | 9e+06 | 3000 | 5 |
| 7 | 6e+06 | 3000 | 8 |
| 8 | 1.2e+07 | 2000 | 5 |
| 9 | 9e+06 | 2000 | 8 |
| 10 | 1.2e+07 | 4000 | 5 |
| 11 | 6e+06 | 3000 | 2 |
| 12 | 9e+06 | 4000 | 8 |
| 13 | 6e+06 | 2000 | 5 |
| 14 | 6e+06 | 4000 | 5 |
| 15 | 9e+06 | 4000 | 2 |
Step-by-Step Workflow
1
Preview the design
$ doe info --config use_cases/270_hot_air_balloon/config.json
2
Generate the runner script
$ doe generate --config use_cases/270_hot_air_balloon/config.json \
--output use_cases/270_hot_air_balloon/results/run.sh --seed 42
3
Execute the experiments
$ bash use_cases/270_hot_air_balloon/results/run.sh
4
Analyze results
$ doe analyze --config use_cases/270_hot_air_balloon/config.json
5
Get optimization recommendations
$ doe optimize --config use_cases/270_hot_air_balloon/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/270_hot_air_balloon/config.json --multi
7
Generate the HTML report
$ doe report --config use_cases/270_hot_air_balloon/config.json \
--output use_cases/270_hot_air_balloon/results/report.html
Features Exercised
| Feature | Value |
| Design type | box_behnken |
| Factor types | continuous (all 3) |
| Arg style | double-dash |
| Responses | 2 (flight_hrs ↑, ceiling_m ↑) |
| Total runs | 15 |
Analysis Results
Generated from actual experiment runs using the DOE Helper Tool.
Response: flight_hrs
Top factors: passengers (42.0%), burner_btu (32.9%), envelope_m3 (25.1%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| burner_btu | 2 | 0.6298 | 0.3149 | 0.482 | 0.6344 |
| envelope_m3 | 2 | 0.2973 | 0.1486 | 0.227 | 0.8015 |
| passengers | 2 | 0.7373 | 0.3686 | 0.564 | 0.5899 |
| Lack | of | Fit | 6 | 4.8024 | 0.8004 |
| Pure | Error | 2 | 1.3067 | | |
| Error | 8 | 6.1090 | 0.6533 | | |
| Total | 14 | 7.7733 | 0.5552 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response: ceiling_m
Top factors: passengers (43.1%), burner_btu (36.7%), envelope_m3 (20.2%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| burner_btu | 2 | 38454.0429 | 19227.0214 | 1.108 | 0.3760 |
| envelope_m3 | 2 | 11595.9714 | 5797.9857 | 0.334 | 0.7255 |
| passengers | 2 | 38988.9714 | 19494.4857 | 1.124 | 0.3715 |
| Lack | of | Fit | 6 | 254570.7476 | 42428.4579 |
| Pure | Error | 2 | 34698.6667 | | |
| Error | 8 | 289269.4143 | 17349.3333 | | |
| Total | 14 | 378308.4000 | 27022.0286 | | |
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.
ceiling m burner btu vs envelope m3
ceiling m burner btu vs passengers
ceiling m envelope m3 vs passengers
flight hrs burner btu vs envelope m3
flight hrs burner btu vs passengers
flight hrs envelope m3 vs passengers
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 |
flight_hrs |
1.5 |
|
2.80 0.9545 2.80 hrs |
↑ |
ceiling_m |
1.0 |
|
729.00 0.9545 729.00 m |
↑ |
Recommended Settings
| Factor | Value |
burner_btu | 1.2e+07 BTU/hr |
envelope_m3 | 3000 m3 |
passengers | 8 count |
Source: from observed run #15
Trade-off Summary
Sacrifice = how much worse than single-objective best.
| Response | Predicted | Best Observed | Sacrifice |
ceiling_m | 729.00 | 729.00 | +0.00 |
Top 3 Runs by Desirability
| Run | D | Factor Settings |
| #4 | 0.8373 | burner_btu=9e+06, envelope_m3=4000, passengers=2 |
| #10 | 0.7735 | burner_btu=6e+06, envelope_m3=2000, passengers=5 |
Model Quality
| Response | R² | Type |
ceiling_m | 0.0917 | linear |
Full Multi-Objective Output
============================================================
MULTI-OBJECTIVE OPTIMIZATION
Method: Derringer-Suich Desirability Function
============================================================
Overall desirability: D = 0.9545
Response Weight Desirability Predicted Direction
---------------------------------------------------------------------
flight_hrs 1.5 0.9545 2.80 hrs ↑
ceiling_m 1.0 0.9545 729.00 m ↑
Recommended settings:
burner_btu = 1.2e+07 BTU/hr
envelope_m3 = 3000 m3
passengers = 8 count
(from observed run #15)
Trade-off summary:
flight_hrs: 2.80 (best observed: 2.80, sacrifice: +0.00)
ceiling_m: 729.00 (best observed: 729.00, sacrifice: +0.00)
Model quality:
flight_hrs: R² = 0.1952 (linear)
ceiling_m: R² = 0.0917 (linear)
Top 3 observed runs by overall desirability:
1. Run #15 (D=0.9545): burner_btu=1.2e+07, envelope_m3=3000, passengers=8
2. Run #4 (D=0.8373): burner_btu=9e+06, envelope_m3=4000, passengers=2
3. Run #10 (D=0.7735): burner_btu=6e+06, envelope_m3=2000, passengers=5
Full Analysis Output
=== Main Effects: flight_hrs ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
passengers 0.5250 0.1924 42.0%
burner_btu 0.4107 0.1924 32.9%
envelope_m3 0.3143 0.1924 25.1%
=== ANOVA Table: flight_hrs ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
burner_btu 2 0.6298 0.3149 0.482 0.6344
envelope_m3 2 0.2973 0.1486 0.227 0.8015
passengers 2 0.7373 0.3686 0.564 0.5899
Lack of Fit 6 4.8024 0.8004 1.225 0.5142
Pure Error 2 1.3067 0.6533
Error 8 6.1090 0.6533
Total 14 7.7733 0.5552
=== Summary Statistics: flight_hrs ===
burner_btu:
Level N Mean Std Min Max
------------------------------------------------------------
1.2e+07 4 1.1750 0.9708 0.3000 2.4000
6e+06 4 1.1750 0.4787 0.8000 1.8000
9e+06 7 1.5857 0.7777 0.3000 2.8000
envelope_m3:
Level N Mean Std Min Max
------------------------------------------------------------
2000 4 1.2750 0.6652 0.3000 1.8000
3000 7 1.5143 0.8802 0.3000 2.8000
4000 4 1.2000 0.7071 0.5000 2.1000
passengers:
Level N Mean Std Min Max
------------------------------------------------------------
2 4 1.0000 0.5598 0.3000 1.5000
5 7 1.4857 0.7581 0.5000 2.8000
8 4 1.5250 0.9394 0.3000 2.4000
=== Main Effects: ceiling_m ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
passengers 137.0000 42.4437 43.1%
burner_btu 116.8929 42.4437 36.7%
envelope_m3 64.2143 42.4437 20.2%
=== ANOVA Table: ceiling_m ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
burner_btu 2 38454.0429 19227.0214 1.108 0.3760
envelope_m3 2 11595.9714 5797.9857 0.334 0.7255
passengers 2 38988.9714 19494.4857 1.124 0.3715
Lack of Fit 6 254570.7476 42428.4579 2.446 0.3184
Pure Error 2 34698.6667 17349.3333
Error 8 289269.4143 17349.3333
Total 14 378308.4000 27022.0286
=== Summary Statistics: ceiling_m ===
burner_btu:
Level N Mean Std Min Max
------------------------------------------------------------
1.2e+07 4 407.2500 238.4832 194.0000 686.0000
6e+06 4 446.2500 64.2048 355.0000 505.0000
9e+06 7 524.1429 161.6915 239.0000 729.0000
envelope_m3:
Level N Mean Std Min Max
------------------------------------------------------------
2000 4 436.5000 135.5126 239.0000 525.0000
3000 7 500.7143 175.5588 224.0000 729.0000
4000 4 458.0000 205.5043 194.0000 696.0000
passengers:
Level N Mean Std Min Max
------------------------------------------------------------
2 4 394.5000 134.1405 224.0000 525.0000
5 7 482.7143 157.1355 194.0000 729.0000
8 4 531.5000 213.8450 239.0000 696.0000
Optimization Recommendations
=== Optimization: flight_hrs ===
Direction: maximize
Best observed run: #15
burner_btu = 6e+06
envelope_m3 = 3000
passengers = 2
Value: 2.8
RSM Model (linear, R² = 0.4384, Adj R² = 0.2852):
Coefficients:
intercept +1.3667
burner_btu -0.1250
envelope_m3 -0.1875
passengers -0.6125
RSM Model (quadratic, R² = 0.6839, Adj R² = 0.1148):
Coefficients:
intercept +1.4000
burner_btu -0.1250
envelope_m3 -0.1875
passengers -0.6125
burner_btu*envelope_m3 -0.2000
burner_btu*passengers +0.3500
envelope_m3*passengers -0.0750
burner_btu^2 +0.1125
envelope_m3^2 -0.4625
passengers^2 +0.2875
Curvature analysis:
envelope_m3 coef=-0.4625 concave (has a maximum)
passengers coef=+0.2875 convex (has a minimum)
burner_btu coef=+0.1125 convex (has a minimum)
Notable interactions:
burner_btu*passengers coef=+0.3500 (synergistic)
Predicted optimum (from linear model, at observed points):
burner_btu = 9e+06
envelope_m3 = 2000
passengers = 2
Predicted value: 2.1667
Surface optimum (via L-BFGS-B, linear model):
burner_btu = 6e+06
envelope_m3 = 2000
passengers = 2
Predicted value: 2.2917
Model quality: Weak fit — consider adding center points or using a different design.
Factor importance:
1. passengers (effect: 1.2, contribution: 56.9%)
2. envelope_m3 (effect: 0.7, contribution: 31.5%)
3. burner_btu (effect: 0.2, contribution: 11.6%)
=== Optimization: ceiling_m ===
Direction: maximize
Best observed run: #15
burner_btu = 6e+06
envelope_m3 = 3000
passengers = 2
Value: 729.0
RSM Model (linear, R² = 0.3065, Adj R² = 0.1174):
Coefficients:
intercept +472.2000
burner_btu -16.1250
envelope_m3 -60.0000
passengers -103.1250
RSM Model (quadratic, R² = 0.6521, Adj R² = 0.0259):
Coefficients:
intercept +483.3333
burner_btu -16.1250
envelope_m3 -60.0000
passengers -103.1250
burner_btu*envelope_m3 -82.0000
burner_btu*passengers +50.7500
envelope_m3*passengers -75.5000
burner_btu^2 +61.4583
envelope_m3^2 -113.7917
passengers^2 +31.4583
Curvature analysis:
envelope_m3 coef=-113.7917 concave (has a maximum)
burner_btu coef=+61.4583 convex (has a minimum)
passengers coef=+31.4583 convex (has a minimum)
Notable interactions:
burner_btu*envelope_m3 coef=-82.0000 (antagonistic)
envelope_m3*passengers coef=-75.5000 (antagonistic)
burner_btu*passengers coef=+50.7500 (synergistic)
Predicted optimum (from linear model, at observed points):
burner_btu = 9e+06
envelope_m3 = 2000
passengers = 2
Predicted value: 635.3250
Surface optimum (via L-BFGS-B, linear model):
burner_btu = 6e+06
envelope_m3 = 2000
passengers = 2
Predicted value: 651.4500
Model quality: Weak fit — consider adding center points or using a different design.
Factor importance:
1. passengers (effect: 206.2, contribution: 43.9%)
2. envelope_m3 (effect: 180.4, contribution: 38.4%)
3. burner_btu (effect: 83.5, contribution: 17.8%)