← All Use Cases
Box-Behnken Design

Gift Wrapping Efficiency

Box-Behnken design to maximize presentation quality and minimize paper waste by tuning paper overhang, tape strips, and ribbon curl count

Summary

This experiment investigates gift wrapping efficiency. Box-Behnken design to maximize presentation quality and minimize paper waste by tuning paper overhang, tape strips, and ribbon curl count.

The design varies 3 factors: overhang cm (cm), ranging from 2 to 8, tape strips (strips), ranging from 3 to 8, and ribbon curls (curls), ranging from 0 to 6. The goal is to optimize 2 responses: presentation (pts) (maximize) and waste pct (%) (minimize). Fixed conditions held constant across all runs include paper type = glossy, box size = medium.

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 presentation, the most influential factors were overhang cm (50.2%), ribbon curls (26.3%), tape strips (23.5%). The best observed value was 6.7 (at overhang cm = 8, tape strips = 5.5, ribbon curls = 6).

For waste pct, the most influential factors were tape strips (61.8%), overhang cm (21.4%), ribbon curls (16.8%). The best observed value was 5.0 (at overhang cm = 2, tape strips = 3, ribbon curls = 3).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
overhang_cm28cm
tape_strips38strips
ribbon_curls06curls

Fixed: paper_type = glossy, box_size = medium

Responses

ResponseDirectionUnit
presentation↑ maximizepts
waste_pct↓ minimize%

Configuration

use_cases/249_gift_wrapping/config.json
{ "metadata": { "name": "Gift Wrapping Efficiency", "description": "Box-Behnken design to maximize presentation quality and minimize paper waste by tuning paper overhang, tape strips, and ribbon curl count" }, "factors": [ { "name": "overhang_cm", "levels": [ "2", "8" ], "type": "continuous", "unit": "cm" }, { "name": "tape_strips", "levels": [ "3", "8" ], "type": "continuous", "unit": "strips" }, { "name": "ribbon_curls", "levels": [ "0", "6" ], "type": "continuous", "unit": "curls" } ], "fixed_factors": { "paper_type": "glossy", "box_size": "medium" }, "responses": [ { "name": "presentation", "optimize": "maximize", "unit": "pts" }, { "name": "waste_pct", "optimize": "minimize", "unit": "%" } ], "settings": { "operation": "box_behnken", "test_script": "use_cases/249_gift_wrapping/sim.sh" } }

Experimental Matrix

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

Runoverhang_cmtape_stripsribbon_curls
1530
255.53
385.56
485.50
555.53
655.53
725.56
8833
9536
10883
1125.50
12586
13233
14283
15580

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/249_gift_wrapping/config.json
2

Generate the runner script

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

Execute the experiments

Terminal
$ bash use_cases/249_gift_wrapping/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/249_gift_wrapping/config.json
5

Get optimization recommendations

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

Generate the HTML report

Terminal
$ doe report --config use_cases/249_gift_wrapping/config.json \ --output use_cases/249_gift_wrapping/results/report.html

Features Exercised

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

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: presentation

Top factors: overhang_cm (50.2%), ribbon_curls (26.3%), tape_strips (23.5%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
overhang_cm22.53901.26953.4310.0839
tape_strips20.73730.36860.9960.4108
ribbon_curls20.81870.40931.1060.3765
LackofFit66.83831.1397
PureError20.7400
Error87.57830.3700
Total1411.67330.8338

Pareto Chart

Pareto chart for presentation

Main Effects Plot

Main effects plot for presentation

Normal Probability Plot of Effects

Normal probability plot for presentation

Half-Normal Plot of Effects

Half-normal plot for presentation

Model Diagnostics

Model diagnostics for presentation

Response: waste_pct

Top factors: tape_strips (61.8%), overhang_cm (21.4%), ribbon_curls (16.8%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
overhang_cm22.07621.03810.2400.7924
tape_strips222.326211.16312.5760.1369
ribbon_curls21.75480.87740.2020.8208
LackofFit6192.109532.0183
PureError28.6667
Error8200.77624.3333
Total14226.933316.2095

Pareto Chart

Pareto chart for waste_pct

Main Effects Plot

Main effects plot for waste_pct

Normal Probability Plot of Effects

Normal probability plot for waste_pct

Half-Normal Plot of Effects

Half-normal plot for waste_pct

Model Diagnostics

Model diagnostics for waste_pct

Response Surface Plots

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

presentation overhang cm vs ribbon curls

RSM surface: presentation overhang cm vs ribbon curls

presentation overhang cm vs tape strips

RSM surface: presentation overhang cm vs tape strips

presentation tape strips vs ribbon curls

RSM surface: presentation tape strips vs ribbon curls

waste pct overhang cm vs ribbon curls

RSM surface: waste pct overhang cm vs ribbon curls

waste pct overhang cm vs tape strips

RSM surface: waste pct overhang cm vs tape strips

waste pct tape strips vs ribbon curls

RSM surface: waste pct tape strips vs ribbon curls

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

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
presentation 1.5
0.8749
6.45 0.8749 6.45 pts
waste_pct 1.0
0.8472
6.42 0.8472 6.42 %

Recommended Settings

FactorValue
overhang_cm8 cm
tape_strips8 strips
ribbon_curls6 curls

Source: from RSM model prediction

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
waste_pct6.425.00+1.42

Top 3 Runs by Desirability

RunDFactor Settings
#70.7484overhang_cm=2, tape_strips=3, ribbon_curls=3
#60.7357overhang_cm=2, tape_strips=5.5, ribbon_curls=6

Model Quality

ResponseType
waste_pct0.7613quadratic

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.8637 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- presentation 1.5 0.8749 6.45 pts ↑ waste_pct 1.0 0.8472 6.42 % ↓ Recommended settings: overhang_cm = 8 cm tape_strips = 8 strips ribbon_curls = 6 curls (from RSM model prediction) Trade-off summary: presentation: 6.45 (best observed: 6.70, sacrifice: +0.25) waste_pct: 6.42 (best observed: 5.00, sacrifice: +1.42) Model quality: presentation: R² = 0.7180 (quadratic) waste_pct: R² = 0.7613 (quadratic) Top 3 observed runs by overall desirability: 1. Run #2 (D=0.7529): overhang_cm=8, tape_strips=5.5, ribbon_curls=6 2. Run #7 (D=0.7484): overhang_cm=2, tape_strips=3, ribbon_curls=3 3. Run #6 (D=0.7357): overhang_cm=2, tape_strips=5.5, ribbon_curls=6

Full Analysis Output

doe analyze
=== Main Effects: presentation === Factor Effect Std Error % Contribution -------------------------------------------------------------- overhang_cm 1.1000 0.2358 50.2% ribbon_curls 0.5750 0.2358 26.3% tape_strips 0.5143 0.2358 23.5% === ANOVA Table: presentation === Source DF SS MS F p-value ----------------------------------------------------------------------------- overhang_cm 2 2.5390 1.2695 3.431 0.0839 tape_strips 2 0.7373 0.3686 0.996 0.4108 ribbon_curls 2 0.8187 0.4093 1.106 0.3765 Lack of Fit 6 6.8383 1.1397 3.080 0.2653 Pure Error 2 0.7400 0.3700 Error 8 7.5783 0.3700 Total 14 11.6733 0.8338 === Summary Statistics: presentation === overhang_cm: Level N Mean Std Min Max ------------------------------------------------------------ 2 4 5.0000 1.2754 3.8000 6.2000 5 7 5.3714 0.5648 4.7000 6.2000 8 4 6.1000 0.8832 4.8000 6.7000 tape_strips: Level N Mean Std Min Max ------------------------------------------------------------ 3 4 5.1000 1.2138 3.8000 6.7000 5.5 7 5.6143 0.9371 4.0000 6.6000 8 4 5.5750 0.6449 4.8000 6.2000 ribbon_curls: Level N Mean Std Min Max ------------------------------------------------------------ 0 4 5.8500 0.7681 4.7000 6.3000 3 7 5.3571 0.9744 3.8000 6.7000 6 4 5.2750 1.0626 4.0000 6.6000 === Main Effects: waste_pct === Factor Effect Std Error % Contribution -------------------------------------------------------------- tape_strips 2.8929 1.0395 61.8% overhang_cm 1.0000 1.0395 21.4% ribbon_curls 0.7857 1.0395 16.8% === ANOVA Table: waste_pct === Source DF SS MS F p-value ----------------------------------------------------------------------------- overhang_cm 2 2.0762 1.0381 0.240 0.7924 tape_strips 2 22.3262 11.1631 2.576 0.1369 ribbon_curls 2 1.7548 0.8774 0.202 0.8208 Lack of Fit 6 192.1095 32.0183 7.389 0.1240 Pure Error 2 8.6667 4.3333 Error 8 200.7762 4.3333 Total 14 226.9333 16.2095 === Summary Statistics: waste_pct === overhang_cm: Level N Mean Std Min Max ------------------------------------------------------------ 2 4 9.5000 4.6547 5.0000 16.0000 5 7 10.1429 3.7607 6.0000 16.0000 8 4 10.5000 5.0000 5.0000 17.0000 tape_strips: Level N Mean Std Min Max ------------------------------------------------------------ 3 4 10.5000 5.9161 5.0000 17.0000 5.5 7 8.8571 1.5736 6.0000 11.0000 8 4 11.7500 5.3151 5.0000 16.0000 ribbon_curls: Level N Mean Std Min Max ------------------------------------------------------------ 0 4 10.5000 2.3805 9.0000 14.0000 3 7 9.7143 5.0238 5.0000 17.0000 6 4 10.2500 4.3493 6.0000 16.0000

Optimization Recommendations

doe optimize
=== Optimization: presentation === Direction: maximize Best observed run: #3 overhang_cm = 8 tape_strips = 5.5 ribbon_curls = 6 Value: 6.7 RSM Model (linear, R² = 0.0006, Adj R² = -0.2719): Coefficients: intercept +5.4667 overhang_cm +0.0250 tape_strips +0.0125 ribbon_curls -0.0125 RSM Model (quadratic, R² = 0.6463, Adj R² = 0.0096): Coefficients: intercept +5.1333 overhang_cm +0.0250 tape_strips +0.0125 ribbon_curls -0.0125 overhang_cm*tape_strips -1.0250 overhang_cm*ribbon_curls +0.1750 tape_strips*ribbon_curls +0.1500 overhang_cm^2 +0.1083 tape_strips^2 -0.3167 ribbon_curls^2 +0.8333 Curvature analysis: ribbon_curls coef=+0.8333 convex (has a minimum) tape_strips coef=-0.3167 concave (has a maximum) overhang_cm coef=+0.1083 convex (has a minimum) Notable interactions: overhang_cm*tape_strips coef=-1.0250 (antagonistic) Predicted optimum (from quadratic model, at observed points): overhang_cm = 8 tape_strips = 5.5 ribbon_curls = 6 Predicted value: 6.2625 Surface optimum (via L-BFGS-B, quadratic model): overhang_cm = 8 tape_strips = 3 ribbon_curls = 6 Predicted value: 6.8083 Model quality: Moderate fit — use predictions directionally, not precisely. Factor importance: 1. ribbon_curls (effect: 0.9, contribution: 63.6%) 2. tape_strips (effect: 0.4, contribution: 29.3%) 3. overhang_cm (effect: 0.1, contribution: 7.1%) === Optimization: waste_pct === Direction: minimize Best observed run: #11 overhang_cm = 2 tape_strips = 3 ribbon_curls = 3 Value: 5.0 RSM Model (linear, R² = 0.3514, Adj R² = 0.1745): Coefficients: intercept +10.0667 overhang_cm +1.1250 tape_strips +1.7500 ribbon_curls +2.3750 RSM Model (quadratic, R² = 0.7521, Adj R² = 0.3060): Coefficients: intercept +13.0000 overhang_cm +1.1250 tape_strips +1.7500 ribbon_curls +2.3750 overhang_cm*tape_strips -1.7500 overhang_cm*ribbon_curls +1.5000 tape_strips*ribbon_curls +2.7500 overhang_cm^2 -2.2500 tape_strips^2 -2.5000 ribbon_curls^2 -0.7500 Curvature analysis: tape_strips coef=-2.5000 concave (has a maximum) overhang_cm coef=-2.2500 concave (has a maximum) ribbon_curls coef=-0.7500 concave (has a maximum) Notable interactions: tape_strips*ribbon_curls coef=+2.7500 (synergistic) overhang_cm*tape_strips coef=-1.7500 (antagonistic) overhang_cm*ribbon_curls coef=+1.5000 (synergistic) Predicted optimum (from quadratic model, at observed points): overhang_cm = 5 tape_strips = 8 ribbon_curls = 6 Predicted value: 16.6250 Surface optimum (via L-BFGS-B, quadratic model): overhang_cm = 2 tape_strips = 3 ribbon_curls = 6 Predicted value: 1.0000 Model quality: Good fit — general trends are captured, some noise remains. Factor importance: 1. ribbon_curls (effect: 4.8, contribution: 39.8%) 2. tape_strips (effect: 4.0, contribution: 33.8%) 3. overhang_cm (effect: 3.1, contribution: 26.3%)
← All Use Cases Next: Garage Sale Pricing Strategy →