← All Use Cases
🌍
Plackett-Burman Design

Water Heater Efficiency

Plackett-Burman screening of thermostat setting, tank insulation, pipe insulation, recirculation timer, and inlet temperature for energy savings and hot water availability

Summary

This experiment investigates water heater efficiency. Plackett-Burman screening of thermostat setting, tank insulation, pipe insulation, recirculation timer, and inlet temperature for energy savings and hot water availability.

The design varies 5 factors: thermostat c (C), ranging from 48 to 65, tank r value (R-value), ranging from 6 to 18, pipe insulation (bool), ranging from 0 to 1, recirc timer (bool), ranging from 0 to 1, and inlet temp c (C), ranging from 5 to 20. The goal is to optimize 2 responses: monthly kwh (kWh) (minimize) and availability pct (%) (maximize). Fixed conditions held constant across all runs include tank size L = 200, household size = 4.

A Plackett-Burman screening design was used to efficiently test 5 factors in only 8 runs. This design assumes interactions are negligible and focuses on identifying the most influential main effects.

Key Findings

For monthly kwh, the most influential factors were inlet temp c (37.1%), pipe insulation (28.7%), tank r value (24.5%). The best observed value was 290.0 (at thermostat c = 48, tank r value = 18, pipe insulation = 0).

For availability pct, the most influential factors were recirc timer (44.1%), tank r value (26.9%), pipe insulation (16.1%). The best observed value was 100.0 (at thermostat c = 48, tank r value = 6, pipe insulation = 1).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
thermostat_c4865C
tank_r_value618R-value
pipe_insulation01bool
recirc_timer01bool
inlet_temp_c520C

Fixed: tank_size_L = 200, household_size = 4

Responses

ResponseDirectionUnit
monthly_kwh↓ minimizekWh
availability_pct↑ maximize%

Configuration

use_cases/132_water_heater_efficiency/config.json
{ "metadata": { "name": "Water Heater Efficiency", "description": "Plackett-Burman screening of thermostat setting, tank insulation, pipe insulation, recirculation timer, and inlet temperature for energy savings and hot water availability" }, "factors": [ { "name": "thermostat_c", "levels": [ "48", "65" ], "type": "continuous", "unit": "C" }, { "name": "tank_r_value", "levels": [ "6", "18" ], "type": "continuous", "unit": "R-value" }, { "name": "pipe_insulation", "levels": [ "0", "1" ], "type": "continuous", "unit": "bool" }, { "name": "recirc_timer", "levels": [ "0", "1" ], "type": "continuous", "unit": "bool" }, { "name": "inlet_temp_c", "levels": [ "5", "20" ], "type": "continuous", "unit": "C" } ], "fixed_factors": { "tank_size_L": "200", "household_size": "4" }, "responses": [ { "name": "monthly_kwh", "optimize": "minimize", "unit": "kWh" }, { "name": "availability_pct", "optimize": "maximize", "unit": "%" } ], "settings": { "operation": "plackett_burman", "test_script": "use_cases/132_water_heater_efficiency/sim.sh" } }

Experimental Matrix

The Plackett-Burman Design produces 8 runs. Each row is one experiment with specific factor settings.

Runthermostat_ctank_r_valuepipe_insulationrecirc_timerinlet_temp_c
16518105
2486115
34818015
465181120
548180020
66560120
74861020
8656005

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/132_water_heater_efficiency/config.json
2

Generate the runner script

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

Execute the experiments

Terminal
$ bash use_cases/132_water_heater_efficiency/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/132_water_heater_efficiency/config.json
5

Get optimization recommendations

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

Generate the HTML report

Terminal
$ doe report --config use_cases/132_water_heater_efficiency/config.json \ --output use_cases/132_water_heater_efficiency/results/report.html

Features Exercised

FeatureValue
Design typeplackett_burman
Factor typescontinuous (all 5)
Arg styledouble-dash
Responses2 (monthly_kwh ↓, availability_pct ↑)
Total runs8

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: monthly_kwh

Top factors: inlet_temp_c (37.1%), pipe_insulation (28.7%), tank_r_value (24.5%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
thermostat_c1378.1250378.12500.0760.7940
tank_r_value13321.12503321.12500.6670.4513
pipe_insulation14560.12504560.12500.9150.3826
recirc_timer110.125010.12500.0020.9658
inlet_temp_c17626.12507626.12501.5310.2709
thermostat_c*tank_r_value14560.12504560.12500.9150.3826
thermostat_c*pipe_insulation13321.12503321.12500.6670.4513
thermostat_c*recirc_timer17626.12507626.12501.5310.2709
thermostat_c*inlet_temp_c110.125010.12500.0020.9658
tank_r_value*pipe_insulation1378.1250378.12500.0760.7940
tank_r_value*recirc_timer15050.12505050.12501.0140.3602
tank_r_value*inlet_temp_c11830.12501830.12500.3670.5709
pipe_insulation*recirc_timer11830.12501830.12500.3670.5709
pipe_insulation*inlet_temp_c15050.12505050.12501.0140.3602
recirc_timer*inlet_temp_c1378.1250378.12500.0760.7940
Error(LenthPSE)524908.43754981.6875
Total722775.87503253.6964

Pareto Chart

Pareto chart for monthly_kwh

Main Effects Plot

Main effects plot for monthly_kwh

Normal Probability Plot of Effects

Normal probability plot for monthly_kwh

Half-Normal Plot of Effects

Half-normal plot for monthly_kwh

Model Diagnostics

Model diagnostics for monthly_kwh

Response: availability_pct

Top factors: recirc_timer (44.1%), tank_r_value (26.9%), pipe_insulation (16.1%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
thermostat_c13.12503.12500.1380.7257
tank_r_value178.125078.12503.4440.1227
pipe_insulation128.125028.12501.2400.3162
recirc_timer1210.1250210.12509.2620.0286
inlet_temp_c16.12506.12500.2700.6255
thermostat_c*tank_r_value128.125028.12501.2400.3162
thermostat_c*pipe_insulation178.125078.12503.4440.1227
thermostat_c*recirc_timer16.12506.12500.2700.6255
thermostat_c*inlet_temp_c1210.1250210.12509.2620.0286
tank_r_value*pipe_insulation13.12503.12500.1380.7257
tank_r_value*recirc_timer178.125078.12503.4440.1227
tank_r_value*inlet_temp_c115.125015.12500.6670.4513
pipe_insulation*recirc_timer115.125015.12500.6670.4513
pipe_insulation*inlet_temp_c178.125078.12503.4440.1227
recirc_timer*inlet_temp_c13.12503.12500.1380.7257
Error(LenthPSE)5113.437522.6875
Total7418.875059.8393

Pareto Chart

Pareto chart for availability_pct

Main Effects Plot

Main effects plot for availability_pct

Normal Probability Plot of Effects

Normal probability plot for availability_pct

Half-Normal Plot of Effects

Half-normal plot for availability_pct

Model Diagnostics

Model diagnostics for availability_pct

Response Surface Plots

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

availability pct pipe insulation vs inlet temp c

RSM surface: availability pct pipe insulation vs inlet temp c

availability pct pipe insulation vs recirc timer

RSM surface: availability pct pipe insulation vs recirc timer

availability pct recirc timer vs inlet temp c

RSM surface: availability pct recirc timer vs inlet temp c

availability pct tank r value vs inlet temp c

RSM surface: availability pct tank r value vs inlet temp c

availability pct tank r value vs pipe insulation

RSM surface: availability pct tank r value vs pipe insulation

availability pct tank r value vs recirc timer

RSM surface: availability pct tank r value vs recirc timer

availability pct thermostat c vs inlet temp c

RSM surface: availability pct thermostat c vs inlet temp c

availability pct thermostat c vs pipe insulation

RSM surface: availability pct thermostat c vs pipe insulation

availability pct thermostat c vs recirc timer

RSM surface: availability pct thermostat c vs recirc timer

availability pct thermostat c vs tank r value

RSM surface: availability pct thermostat c vs tank r value

monthly kwh pipe insulation vs inlet temp c

RSM surface: monthly kwh pipe insulation vs inlet temp c

monthly kwh pipe insulation vs recirc timer

RSM surface: monthly kwh pipe insulation vs recirc timer

monthly kwh recirc timer vs inlet temp c

RSM surface: monthly kwh recirc timer vs inlet temp c

monthly kwh tank r value vs inlet temp c

RSM surface: monthly kwh tank r value vs inlet temp c

monthly kwh tank r value vs pipe insulation

RSM surface: monthly kwh tank r value vs pipe insulation

monthly kwh tank r value vs recirc timer

RSM surface: monthly kwh tank r value vs recirc timer

monthly kwh thermostat c vs inlet temp c

RSM surface: monthly kwh thermostat c vs inlet temp c

monthly kwh thermostat c vs pipe insulation

RSM surface: monthly kwh thermostat c vs pipe insulation

monthly kwh thermostat c vs recirc timer

RSM surface: monthly kwh thermostat c vs recirc timer

monthly kwh thermostat c vs tank r value

RSM surface: monthly kwh thermostat c vs tank r value

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

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
monthly_kwh 1.0
0.8416
311.00 0.8416 311.00 kWh
availability_pct 1.5
0.9545
100.00 0.9545 100.00 %

Recommended Settings

FactorValue
thermostat_c48 C
tank_r_value6 R-value
pipe_insulation1 bool
recirc_timer1 bool
inlet_temp_c5 C

Source: from observed run #4

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
availability_pct100.00100.00+0.00

Top 3 Runs by Desirability

RunDFactor Settings
#60.5094thermostat_c=48, tank_r_value=6, pipe_insulation=1, recirc_timer=0, inlet_temp_c=20
#10.4438thermostat_c=48, tank_r_value=18, pipe_insulation=0, recirc_timer=0, inlet_temp_c=20

Model Quality

ResponseType
availability_pct0.8633linear

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.9076 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- monthly_kwh 1.0 0.8416 311.00 kWh ↓ availability_pct 1.5 0.9545 100.00 % ↑ Recommended settings: thermostat_c = 48 C tank_r_value = 6 R-value pipe_insulation = 1 bool recirc_timer = 1 bool inlet_temp_c = 5 C (from observed run #4) Trade-off summary: monthly_kwh: 311.00 (best observed: 290.00, sacrifice: +21.00) availability_pct: 100.00 (best observed: 100.00, sacrifice: +0.00) Model quality: monthly_kwh: R² = 0.7427 (linear) availability_pct: R² = 0.8633 (linear) Top 3 observed runs by overall desirability: 1. Run #4 (D=0.9076): thermostat_c=48, tank_r_value=6, pipe_insulation=1, recirc_timer=1, inlet_temp_c=5 2. Run #6 (D=0.5094): thermostat_c=48, tank_r_value=6, pipe_insulation=1, recirc_timer=0, inlet_temp_c=20 3. Run #1 (D=0.4438): thermostat_c=48, tank_r_value=18, pipe_insulation=0, recirc_timer=0, inlet_temp_c=20

Full Analysis Output

doe analyze
=== Main Effects: monthly_kwh === Factor Effect Std Error % Contribution -------------------------------------------------------------- inlet_temp_c -61.7500 20.1671 37.1% pipe_insulation -47.7500 20.1671 28.7% tank_r_value 40.7500 20.1671 24.5% thermostat_c -13.7500 20.1671 8.3% recirc_timer -2.2500 20.1671 1.4% === ANOVA Table: monthly_kwh === Source DF SS MS F p-value ----------------------------------------------------------------------------- thermostat_c 1 378.1250 378.1250 0.076 0.7940 tank_r_value 1 3321.1250 3321.1250 0.667 0.4513 pipe_insulation 1 4560.1250 4560.1250 0.915 0.3826 recirc_timer 1 10.1250 10.1250 0.002 0.9658 inlet_temp_c 1 7626.1250 7626.1250 1.531 0.2709 thermostat_c*tank_r_value 1 4560.1250 4560.1250 0.915 0.3826 thermostat_c*pipe_insulation 1 3321.1250 3321.1250 0.667 0.4513 thermostat_c*recirc_timer 1 7626.1250 7626.1250 1.531 0.2709 thermostat_c*inlet_temp_c 1 10.1250 10.1250 0.002 0.9658 tank_r_value*pipe_insulation 1 378.1250 378.1250 0.076 0.7940 tank_r_value*recirc_timer 1 5050.1250 5050.1250 1.014 0.3602 tank_r_value*inlet_temp_c 1 1830.1250 1830.1250 0.367 0.5709 pipe_insulation*recirc_timer 1 1830.1250 1830.1250 0.367 0.5709 pipe_insulation*inlet_temp_c 1 5050.1250 5050.1250 1.014 0.3602 recirc_timer*inlet_temp_c 1 378.1250 378.1250 0.076 0.7940 Error (Lenth PSE) 5 24908.4375 4981.6875 Total 7 22775.8750 3253.6964 Note: Error estimated using Lenth's pseudo-standard-error (unreplicated design) === Interaction Effects: monthly_kwh === Factor A Factor B Interaction % Contribution ------------------------------------------------------------------------ thermostat_c recirc_timer 61.7500 18.1% tank_r_value recirc_timer 50.2500 14.7% pipe_insulation inlet_temp_c 50.2500 14.7% thermostat_c tank_r_value 47.7500 14.0% thermostat_c pipe_insulation -40.7500 12.0% tank_r_value inlet_temp_c -30.2500 8.9% pipe_insulation recirc_timer -30.2500 8.9% tank_r_value pipe_insulation 13.7500 4.0% recirc_timer inlet_temp_c 13.7500 4.0% thermostat_c inlet_temp_c 2.2500 0.7% === Summary Statistics: monthly_kwh === thermostat_c: Level N Mean Std Min Max ------------------------------------------------------------ 48 4 358.5000 38.9230 320.0000 404.0000 65 4 344.7500 77.1422 290.0000 459.0000 tank_r_value: Level N Mean Std Min Max ------------------------------------------------------------ 18 4 331.2500 50.1024 290.0000 404.0000 6 4 372.0000 63.0450 319.0000 459.0000 pipe_insulation: Level N Mean Std Min Max ------------------------------------------------------------ 0 4 375.5000 68.4519 319.0000 459.0000 1 4 327.7500 37.2324 290.0000 377.0000 recirc_timer: Level N Mean Std Min Max ------------------------------------------------------------ 0 4 352.7500 45.0805 311.0000 404.0000 1 4 350.5000 74.5408 290.0000 459.0000 inlet_temp_c: Level N Mean Std Min Max ------------------------------------------------------------ 20 4 382.5000 70.4769 290.0000 459.0000 5 4 320.7500 9.1059 311.0000 333.0000 === Main Effects: availability_pct === Factor Effect Std Error % Contribution -------------------------------------------------------------- recirc_timer -10.2500 2.7349 44.1% tank_r_value -6.2500 2.7349 26.9% pipe_insulation 3.7500 2.7349 16.1% inlet_temp_c 1.7500 2.7349 7.5% thermostat_c -1.2500 2.7349 5.4% === ANOVA Table: availability_pct === Source DF SS MS F p-value ----------------------------------------------------------------------------- thermostat_c 1 3.1250 3.1250 0.138 0.7257 tank_r_value 1 78.1250 78.1250 3.444 0.1227 pipe_insulation 1 28.1250 28.1250 1.240 0.3162 recirc_timer 1 210.1250 210.1250 9.262 0.0286 inlet_temp_c 1 6.1250 6.1250 0.270 0.6255 thermostat_c*tank_r_value 1 28.1250 28.1250 1.240 0.3162 thermostat_c*pipe_insulation 1 78.1250 78.1250 3.444 0.1227 thermostat_c*recirc_timer 1 6.1250 6.1250 0.270 0.6255 thermostat_c*inlet_temp_c 1 210.1250 210.1250 9.262 0.0286 tank_r_value*pipe_insulation 1 3.1250 3.1250 0.138 0.7257 tank_r_value*recirc_timer 1 78.1250 78.1250 3.444 0.1227 tank_r_value*inlet_temp_c 1 15.1250 15.1250 0.667 0.4513 pipe_insulation*recirc_timer 1 15.1250 15.1250 0.667 0.4513 pipe_insulation*inlet_temp_c 1 78.1250 78.1250 3.444 0.1227 recirc_timer*inlet_temp_c 1 3.1250 3.1250 0.138 0.7257 Error (Lenth PSE) 5 113.4375 22.6875 Total 7 418.8750 59.8393 Note: Error estimated using Lenth's pseudo-standard-error (unreplicated design) === Interaction Effects: availability_pct === Factor A Factor B Interaction % Contribution ------------------------------------------------------------------------ thermostat_c inlet_temp_c 10.2500 24.1% thermostat_c pipe_insulation 6.2500 14.7% tank_r_value recirc_timer 6.2500 14.7% pipe_insulation inlet_temp_c 6.2500 14.7% thermostat_c tank_r_value -3.7500 8.8% tank_r_value inlet_temp_c -2.7500 6.5% pipe_insulation recirc_timer -2.7500 6.5% thermostat_c recirc_timer -1.7500 4.1% tank_r_value pipe_insulation 1.2500 2.9% recirc_timer inlet_temp_c 1.2500 2.9% === Summary Statistics: availability_pct === thermostat_c: Level N Mean Std Min Max ------------------------------------------------------------ 48 4 85.7500 5.5000 81.0000 93.0000 65 4 84.5000 10.4083 78.0000 100.0000 tank_r_value: Level N Mean Std Min Max ------------------------------------------------------------ 18 4 88.2500 9.9791 79.0000 100.0000 6 4 82.0000 3.7417 78.0000 87.0000 pipe_insulation: Level N Mean Std Min Max ------------------------------------------------------------ 0 4 83.2500 6.6521 78.0000 93.0000 1 4 87.0000 9.2736 79.0000 100.0000 recirc_timer: Level N Mean Std Min Max ------------------------------------------------------------ 0 4 90.2500 8.1394 81.0000 100.0000 1 4 80.0000 1.8257 78.0000 82.0000 inlet_temp_c: Level N Mean Std Min Max ------------------------------------------------------------ 20 4 84.2500 7.0887 78.0000 93.0000 5 4 86.0000 9.3452 81.0000 100.0000

Optimization Recommendations

doe optimize
=== Optimization: monthly_kwh === Direction: minimize Best observed run: #5 thermostat_c = 48 tank_r_value = 18 pipe_insulation = 0 recirc_timer = 0 inlet_temp_c = 20 Value: 290.0 RSM Model (linear, R² = 0.8298, Adj R² = 0.4042): Coefficients: intercept +351.6250 thermostat_c -7.6250 tank_r_value -1.3750 pipe_insulation -16.6250 recirc_timer +41.6250 inlet_temp_c -17.1250 Predicted optimum (from linear model, at observed points): thermostat_c = 48 tank_r_value = 18 pipe_insulation = 0 recirc_timer = 1 inlet_temp_c = 5 Predicted value: 433.2500 Surface optimum (via L-BFGS-B, linear model): thermostat_c = 65 tank_r_value = 18 pipe_insulation = 1 recirc_timer = 0 inlet_temp_c = 20 Predicted value: 267.2500 Model quality: Good fit — general trends are captured, some noise remains. Factor importance: 1. recirc_timer (effect: 83.2, contribution: 49.3%) 2. inlet_temp_c (effect: 34.2, contribution: 20.3%) 3. pipe_insulation (effect: -33.2, contribution: 19.7%) 4. thermostat_c (effect: -15.2, contribution: 9.0%) 5. tank_r_value (effect: 2.8, contribution: 1.6%) === Optimization: availability_pct === Direction: maximize Best observed run: #4 thermostat_c = 48 tank_r_value = 6 pipe_insulation = 1 recirc_timer = 0 inlet_temp_c = 20 Value: 100.0 RSM Model (linear, R² = 0.8418, Adj R² = 0.4464): Coefficients: intercept +85.1250 thermostat_c -0.8750 tank_r_value -5.1250 pipe_insulation +2.3750 recirc_timer -0.1250 inlet_temp_c +3.3750 Predicted optimum (from linear model, at observed points): thermostat_c = 48 tank_r_value = 6 pipe_insulation = 1 recirc_timer = 0 inlet_temp_c = 20 Predicted value: 97.0000 Surface optimum (via L-BFGS-B, linear model): thermostat_c = 48 tank_r_value = 6 pipe_insulation = 1 recirc_timer = 0 inlet_temp_c = 20 Predicted value: 97.0000 Model quality: Good fit — general trends are captured, some noise remains. Factor importance: 1. tank_r_value (effect: 10.2, contribution: 43.2%) 2. inlet_temp_c (effect: -6.8, contribution: 28.4%) 3. pipe_insulation (effect: 4.8, contribution: 20.0%) 4. thermostat_c (effect: -1.8, contribution: 7.4%) 5. recirc_timer (effect: -0.2, contribution: 1.1%)
← All Use Cases All Use Cases →