← All Use Cases
Box-Behnken Design

Hot Air Balloon Flight Planning

Box-Behnken design to maximize flight duration and altitude ceiling by tuning burner output, envelope volume, and passenger count

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

Experimental Setup

Factors

FactorLowHighUnit
burner_btu600000012000000BTU/hr
envelope_m320004000m3
passengers28count

Fixed: fuel_kg = 100, ambient_temp = 15C

Responses

ResponseDirectionUnit
flight_hrs↑ maximizehrs
ceiling_m↑ maximizem

Configuration

use_cases/270_hot_air_balloon/config.json
{ "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.

Runburner_btuenvelope_m3passengers
19e+0620002
29e+0630005
31.2e+0730008
41.2e+0730002
59e+0630005
69e+0630005
76e+0630008
81.2e+0720005
99e+0620008
101.2e+0740005
116e+0630002
129e+0640008
136e+0620005
146e+0640005
159e+0640002

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/270_hot_air_balloon/config.json
2

Generate the runner script

Terminal
$ 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

Terminal
$ bash use_cases/270_hot_air_balloon/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/270_hot_air_balloon/config.json
5

Get optimization recommendations

Terminal
$ 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.

Terminal
$ doe optimize --config use_cases/270_hot_air_balloon/config.json --multi
7

Generate the HTML report

Terminal
$ doe report --config use_cases/270_hot_air_balloon/config.json \ --output use_cases/270_hot_air_balloon/results/report.html

Features Exercised

FeatureValue
Design typebox_behnken
Factor typescontinuous (all 3)
Arg styledouble-dash
Responses2 (flight_hrs ↑, ceiling_m ↑)
Total runs15

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

SourceDFSSMSFp-value
SourceDFSSMSFp-value
burner_btu20.62980.31490.4820.6344
envelope_m320.29730.14860.2270.8015
passengers20.73730.36860.5640.5899
LackofFit64.80240.8004
PureError21.3067
Error86.10900.6533
Total147.77330.5552

Pareto Chart

Pareto chart for flight_hrs

Main Effects Plot

Main effects plot for flight_hrs

Normal Probability Plot of Effects

Normal probability plot for flight_hrs

Half-Normal Plot of Effects

Half-normal plot for flight_hrs

Model Diagnostics

Model diagnostics for flight_hrs

Response: ceiling_m

Top factors: passengers (43.1%), burner_btu (36.7%), envelope_m3 (20.2%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
burner_btu238454.042919227.02141.1080.3760
envelope_m3211595.97145797.98570.3340.7255
passengers238988.971419494.48571.1240.3715
LackofFit6254570.747642428.4579
PureError234698.6667
Error8289269.414317349.3333
Total14378308.400027022.0286

Pareto Chart

Pareto chart for ceiling_m

Main Effects Plot

Main effects plot for ceiling_m

Normal Probability Plot of Effects

Normal probability plot for ceiling_m

Half-Normal Plot of Effects

Half-normal plot for ceiling_m

Model Diagnostics

Model diagnostics for ceiling_m

Response Surface Plots

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

ceiling m burner btu vs envelope m3

RSM surface: ceiling m burner btu vs envelope m3

ceiling m burner btu vs passengers

RSM surface: ceiling m burner btu vs passengers

ceiling m envelope m3 vs passengers

RSM surface: ceiling m envelope m3 vs passengers

flight hrs burner btu vs envelope m3

RSM surface: flight hrs burner btu vs envelope m3

flight hrs burner btu vs passengers

RSM surface: flight hrs burner btu vs passengers

flight hrs envelope m3 vs passengers

RSM surface: 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

ResponseWeightDesirabilityPredictedDir
flight_hrs 1.5
0.9545
2.80 0.9545 2.80 hrs
ceiling_m 1.0
0.9545
729.00 0.9545 729.00 m

Recommended Settings

FactorValue
burner_btu1.2e+07 BTU/hr
envelope_m33000 m3
passengers8 count

Source: from observed run #15

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
ceiling_m729.00729.00+0.00

Top 3 Runs by Desirability

RunDFactor Settings
#40.8373burner_btu=9e+06, envelope_m3=4000, passengers=2
#100.7735burner_btu=6e+06, envelope_m3=2000, passengers=5

Model Quality

ResponseType
ceiling_m0.0917linear

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

doe analyze
=== 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

doe optimize
=== 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%)
← Previous: Parachute Deployment Dynamics Next: LED Strip Installation →