← All Use Cases
🐄
Full Factorial Design

Poultry House Ventilation

Full factorial of fan rate, inlet opening, fogging interval, and lighting schedule to maximize weight gain and minimize heat stress mortality

Summary

This experiment investigates poultry house ventilation. Full factorial of fan rate, inlet opening, fogging interval, and lighting schedule to maximize weight gain and minimize heat stress mortality.

The design varies 4 factors: fan rate m3 s (m3/s), ranging from 2 to 8, inlet pct (%), ranging from 20 to 80, fog interval min (min), ranging from 5 to 30, and light hrs (hrs), ranging from 16 to 23. The goal is to optimize 2 responses: weight gain g day (g/day) (maximize) and mortality pct (%) (minimize). Fixed conditions held constant across all runs include birds = 20000, house m2 = 1200.

A full factorial design was used to explore all 16 possible combinations of the 4 factors at two levels. This guarantees that every main effect and interaction can be estimated independently, at the cost of a larger experiment (16 runs).

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 weight gain g day, the most influential factors were fan rate m3 s (36.5%), fog interval min (28.4%), light hrs (23.0%). The best observed value was 66.0 (at fan rate m3 s = 8, inlet pct = 80, fog interval min = 30).

For mortality pct, the most influential factors were light hrs (33.7%), fan rate m3 s (31.5%), fog interval min (22.8%). The best observed value was 0.4 (at fan rate m3 s = 8, inlet pct = 80, fog interval min = 30).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
fan_rate_m3_s28m3/s
inlet_pct2080%
fog_interval_min530min
light_hrs1623hrs

Fixed: birds = 20000, house_m2 = 1200

Responses

ResponseDirectionUnit
weight_gain_g_day↑ maximizeg/day
mortality_pct↓ minimize%

Configuration

use_cases/293_poultry_house_ventilation/config.json
{ "metadata": { "name": "Poultry House Ventilation", "description": "Full factorial of fan rate, inlet opening, fogging interval, and lighting schedule to maximize weight gain and minimize heat stress mortality" }, "factors": [ { "name": "fan_rate_m3_s", "levels": [ "2", "8" ], "type": "continuous", "unit": "m3/s" }, { "name": "inlet_pct", "levels": [ "20", "80" ], "type": "continuous", "unit": "%" }, { "name": "fog_interval_min", "levels": [ "5", "30" ], "type": "continuous", "unit": "min" }, { "name": "light_hrs", "levels": [ "16", "23" ], "type": "continuous", "unit": "hrs" } ], "fixed_factors": { "birds": "20000", "house_m2": "1200" }, "responses": [ { "name": "weight_gain_g_day", "optimize": "maximize", "unit": "g/day" }, { "name": "mortality_pct", "optimize": "minimize", "unit": "%" } ], "settings": { "operation": "full_factorial", "test_script": "use_cases/293_poultry_house_ventilation/sim.sh" } }

Experimental Matrix

The Full Factorial Design produces 16 runs. Each row is one experiment with specific factor settings.

Runfan_rate_m3_sinlet_pctfog_interval_minlight_hrs
12803023
2820523
3280523
42803016
58803016
68203016
7880516
8820516
9220523
102203016
11880523
128803023
13280516
148203023
15220516
162203023

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/293_poultry_house_ventilation/config.json
2

Generate the runner script

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

Execute the experiments

Terminal
$ bash use_cases/293_poultry_house_ventilation/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/293_poultry_house_ventilation/config.json
5

Get optimization recommendations

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

Generate the HTML report

Terminal
$ doe report --config use_cases/293_poultry_house_ventilation/config.json \ --output use_cases/293_poultry_house_ventilation/results/report.html

Features Exercised

FeatureValue
Design typefull_factorial
Factor typescontinuous (all 4)
Arg styledouble-dash
Responses2 (weight_gain_g_day ↑, mortality_pct ↓)
Total runs16

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: weight_gain_g_day

Top factors: fan_rate_m3_s (36.5%), fog_interval_min (28.4%), light_hrs (23.0%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
fan_rate_m3_s145.562545.56252.5940.1682
inlet_pct15.06255.06250.2880.6144
fog_interval_min127.562527.56251.5690.2657
light_hrs118.062518.06251.0280.3571
fan_rate_m3_s*inlet_pct10.56250.56250.0320.8650
fan_rate_m3_s*fog_interval_min11.56251.56250.0890.7775
fan_rate_m3_s*light_hrs1430.5625430.562524.5160.0043
inlet_pct*fog_interval_min118.062518.06251.0280.3571
inlet_pct*light_hrs133.062533.06251.8830.2284
fog_interval_min*light_hrs1105.0625105.06255.9820.0582
Error587.812517.5625
Total15772.937551.5292

Pareto Chart

Pareto chart for weight_gain_g_day

Main Effects Plot

Main effects plot for weight_gain_g_day

Normal Probability Plot of Effects

Normal probability plot for weight_gain_g_day

Half-Normal Plot of Effects

Half-normal plot for weight_gain_g_day

Model Diagnostics

Model diagnostics for weight_gain_g_day

Response: mortality_pct

Top factors: light_hrs (33.7%), fan_rate_m3_s (31.5%), fog_interval_min (22.8%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
fan_rate_m3_s10.52560.52560.5610.4875
inlet_pct10.07560.07560.0810.7877
fog_interval_min10.27560.27560.2940.6108
light_hrs10.60060.60060.6410.4596
fan_rate_m3_s*inlet_pct10.27560.27560.2940.6108
fan_rate_m3_s*fog_interval_min10.00560.00560.0060.9412
fan_rate_m3_s*light_hrs16.37566.37566.8070.0477
inlet_pct*fog_interval_min12.64062.64062.8190.1540
inlet_pct*light_hrs10.27560.27560.2940.6108
fog_interval_min*light_hrs12.32562.32562.4830.1759
Error54.68310.9366
Total1518.05941.2040

Pareto Chart

Pareto chart for mortality_pct

Main Effects Plot

Main effects plot for mortality_pct

Normal Probability Plot of Effects

Normal probability plot for mortality_pct

Half-Normal Plot of Effects

Half-normal plot for mortality_pct

Model Diagnostics

Model diagnostics for mortality_pct

Response Surface Plots

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

mortality pct fan rate m3 s vs fog interval min

RSM surface: mortality pct fan rate m3 s vs fog interval min

mortality pct fan rate m3 s vs inlet pct

RSM surface: mortality pct fan rate m3 s vs inlet pct

mortality pct fan rate m3 s vs light hrs

RSM surface: mortality pct fan rate m3 s vs light hrs

mortality pct fog interval min vs light hrs

RSM surface: mortality pct fog interval min vs light hrs

mortality pct inlet pct vs fog interval min

RSM surface: mortality pct inlet pct vs fog interval min

mortality pct inlet pct vs light hrs

RSM surface: mortality pct inlet pct vs light hrs

weight gain g day fan rate m3 s vs fog interval min

RSM surface: weight gain g day fan rate m3 s vs fog interval min

weight gain g day fan rate m3 s vs inlet pct

RSM surface: weight gain g day fan rate m3 s vs inlet pct

weight gain g day fan rate m3 s vs light hrs

RSM surface: weight gain g day fan rate m3 s vs light hrs

weight gain g day fog interval min vs light hrs

RSM surface: weight gain g day fog interval min vs light hrs

weight gain g day inlet pct vs fog interval min

RSM surface: weight gain g day inlet pct vs fog interval min

weight gain g day inlet pct vs light hrs

RSM surface: weight gain g day inlet pct vs light hrs

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
weight_gain_g_day 1.5
0.9545
66.00 0.9545 66.00 g/day
mortality_pct 1.0
0.9545
0.40 0.9545 0.40 %

Recommended Settings

FactorValue
fan_rate_m3_s8 m3/s
inlet_pct80 %
fog_interval_min5 min
light_hrs16 hrs

Source: from observed run #11

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
mortality_pct0.400.40+0.00

Top 3 Runs by Desirability

RunDFactor Settings
#20.7448fan_rate_m3_s=2, inlet_pct=80, fog_interval_min=5, light_hrs=23
#70.7448fan_rate_m3_s=8, inlet_pct=80, fog_interval_min=30, light_hrs=23

Model Quality

ResponseType
mortality_pct0.0993linear

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 --------------------------------------------------------------------- weight_gain_g_day 1.5 0.9545 66.00 g/day ↑ mortality_pct 1.0 0.9545 0.40 % ↓ Recommended settings: fan_rate_m3_s = 8 m3/s inlet_pct = 80 % fog_interval_min = 5 min light_hrs = 16 hrs (from observed run #11) Trade-off summary: weight_gain_g_day: 66.00 (best observed: 66.00, sacrifice: +0.00) mortality_pct: 0.40 (best observed: 0.40, sacrifice: +0.00) Model quality: weight_gain_g_day: R² = 0.1717 (linear) mortality_pct: R² = 0.0993 (linear) Top 3 observed runs by overall desirability: 1. Run #11 (D=0.9545): fan_rate_m3_s=8, inlet_pct=80, fog_interval_min=5, light_hrs=16 2. Run #2 (D=0.7448): fan_rate_m3_s=2, inlet_pct=80, fog_interval_min=5, light_hrs=23 3. Run #7 (D=0.7448): fan_rate_m3_s=8, inlet_pct=80, fog_interval_min=30, light_hrs=23

Full Analysis Output

doe analyze
=== Main Effects: weight_gain_g_day === Factor Effect Std Error % Contribution -------------------------------------------------------------- fan_rate_m3_s -3.3750 1.7946 36.5% fog_interval_min 2.6250 1.7946 28.4% light_hrs -2.1250 1.7946 23.0% inlet_pct 1.1250 1.7946 12.2% === ANOVA Table: weight_gain_g_day === Source DF SS MS F p-value ----------------------------------------------------------------------------- fan_rate_m3_s 1 45.5625 45.5625 2.594 0.1682 inlet_pct 1 5.0625 5.0625 0.288 0.6144 fog_interval_min 1 27.5625 27.5625 1.569 0.2657 light_hrs 1 18.0625 18.0625 1.028 0.3571 fan_rate_m3_s*inlet_pct 1 0.5625 0.5625 0.032 0.8650 fan_rate_m3_s*fog_interval_min 1 1.5625 1.5625 0.089 0.7775 fan_rate_m3_s*light_hrs 1 430.5625 430.5625 24.516 0.0043 inlet_pct*fog_interval_min 1 18.0625 18.0625 1.028 0.3571 inlet_pct*light_hrs 1 33.0625 33.0625 1.883 0.2284 fog_interval_min*light_hrs 1 105.0625 105.0625 5.982 0.0582 Error 5 87.8125 17.5625 Total 15 772.9375 51.5292 === Interaction Effects: weight_gain_g_day === Factor A Factor B Interaction % Contribution ------------------------------------------------------------------------ fan_rate_m3_s light_hrs -10.3750 48.3% fog_interval_min light_hrs 5.1250 23.8% inlet_pct light_hrs -2.8750 13.4% inlet_pct fog_interval_min -2.1250 9.9% fan_rate_m3_s fog_interval_min -0.6250 2.9% fan_rate_m3_s inlet_pct 0.3750 1.7% === Summary Statistics: weight_gain_g_day === fan_rate_m3_s: Level N Mean Std Min Max ------------------------------------------------------------ 2 8 53.6250 6.9063 46.0000 66.0000 8 8 50.2500 7.4976 40.0000 60.0000 inlet_pct: Level N Mean Std Min Max ------------------------------------------------------------ 20 8 51.3750 6.5887 44.0000 66.0000 80 8 52.5000 8.1416 40.0000 61.0000 fog_interval_min: Level N Mean Std Min Max ------------------------------------------------------------ 30 8 50.6250 6.3682 40.0000 60.0000 5 8 53.2500 8.1196 44.0000 66.0000 light_hrs: Level N Mean Std Min Max ------------------------------------------------------------ 16 8 53.0000 5.0990 46.0000 60.0000 23 8 50.8750 9.0465 40.0000 66.0000 === Main Effects: mortality_pct === Factor Effect Std Error % Contribution -------------------------------------------------------------- light_hrs 0.3875 0.2743 33.7% fan_rate_m3_s 0.3625 0.2743 31.5% fog_interval_min -0.2625 0.2743 22.8% inlet_pct -0.1375 0.2743 12.0% === ANOVA Table: mortality_pct === Source DF SS MS F p-value ----------------------------------------------------------------------------- fan_rate_m3_s 1 0.5256 0.5256 0.561 0.4875 inlet_pct 1 0.0756 0.0756 0.081 0.7877 fog_interval_min 1 0.2756 0.2756 0.294 0.6108 light_hrs 1 0.6006 0.6006 0.641 0.4596 fan_rate_m3_s*inlet_pct 1 0.2756 0.2756 0.294 0.6108 fan_rate_m3_s*fog_interval_min 1 0.0056 0.0056 0.006 0.9412 fan_rate_m3_s*light_hrs 1 6.3756 6.3756 6.807 0.0477 inlet_pct*fog_interval_min 1 2.6406 2.6406 2.819 0.1540 inlet_pct*light_hrs 1 0.2756 0.2756 0.294 0.6108 fog_interval_min*light_hrs 1 2.3256 2.3256 2.483 0.1759 Error 5 4.6831 0.9366 Total 15 18.0594 1.2040 === Interaction Effects: mortality_pct === Factor A Factor B Interaction % Contribution ------------------------------------------------------------------------ fan_rate_m3_s light_hrs 1.2625 37.1% inlet_pct fog_interval_min 0.8125 23.9% fog_interval_min light_hrs -0.7625 22.4% fan_rate_m3_s inlet_pct -0.2625 7.7% inlet_pct light_hrs 0.2625 7.7% fan_rate_m3_s fog_interval_min -0.0375 1.1% === Summary Statistics: mortality_pct === fan_rate_m3_s: Level N Mean Std Min Max ------------------------------------------------------------ 2 8 2.3625 1.2094 0.4000 4.3000 8 8 2.7250 1.0209 1.3000 3.9000 inlet_pct: Level N Mean Std Min Max ------------------------------------------------------------ 20 8 2.6125 1.0148 0.4000 3.6000 80 8 2.4750 1.2407 1.3000 4.3000 fog_interval_min: Level N Mean Std Min Max ------------------------------------------------------------ 30 8 2.6750 0.9750 1.3000 3.9000 5 8 2.4125 1.2609 0.4000 4.3000 light_hrs: Level N Mean Std Min Max ------------------------------------------------------------ 16 8 2.3500 0.9783 1.3000 4.3000 23 8 2.7375 1.2397 0.4000 3.9000

Optimization Recommendations

doe optimize
=== Optimization: weight_gain_g_day === Direction: maximize Best observed run: #11 fan_rate_m3_s = 8 inlet_pct = 80 fog_interval_min = 30 light_hrs = 23 Value: 66.0 RSM Model (linear, R² = 0.2455, Adj R² = -0.0289): Coefficients: intercept +51.9375 fan_rate_m3_s +3.0625 inlet_pct -0.9375 fog_interval_min +0.4375 light_hrs -1.1875 RSM Model (quadratic, R² = 0.4420, Adj R² = -7.3703): Coefficients: intercept +10.3875 fan_rate_m3_s +3.0625 inlet_pct -0.9375 fog_interval_min +0.4375 light_hrs -1.1875 fan_rate_m3_s*inlet_pct -0.0625 fan_rate_m3_s*fog_interval_min -1.6875 fan_rate_m3_s*light_hrs +0.9375 inlet_pct*fog_interval_min -0.6875 inlet_pct*light_hrs +1.6875 fog_interval_min*light_hrs +1.5625 fan_rate_m3_s^2 +10.3875 inlet_pct^2 +10.3875 fog_interval_min^2 +10.3875 light_hrs^2 +10.3875 Curvature analysis: fan_rate_m3_s coef=+10.3875 convex (has a minimum) light_hrs coef=+10.3875 convex (has a minimum) inlet_pct coef=+10.3875 convex (has a minimum) fog_interval_min coef=+10.3875 convex (has a minimum) Notable interactions: fan_rate_m3_s*fog_interval_min coef=-1.6875 (antagonistic) inlet_pct*light_hrs coef=+1.6875 (synergistic) fog_interval_min*light_hrs coef=+1.5625 (synergistic) fan_rate_m3_s*light_hrs coef=+0.9375 (synergistic) inlet_pct*fog_interval_min coef=-0.6875 (antagonistic) Predicted optimum (from linear model, at observed points): fan_rate_m3_s = 8 inlet_pct = 20 fog_interval_min = 30 light_hrs = 16 Predicted value: 57.5625 Surface optimum (via L-BFGS-B, linear model): fan_rate_m3_s = 8 inlet_pct = 20 fog_interval_min = 30 light_hrs = 16 Predicted value: 57.5625 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. fan_rate_m3_s (effect: 6.1, contribution: 54.4%) 2. light_hrs (effect: -2.4, contribution: 21.1%) 3. inlet_pct (effect: -1.9, contribution: 16.7%) 4. fog_interval_min (effect: -0.9, contribution: 7.8%) === Optimization: mortality_pct === Direction: minimize Best observed run: #11 fan_rate_m3_s = 8 inlet_pct = 80 fog_interval_min = 30 light_hrs = 23 Value: 0.4 RSM Model (linear, R² = 0.3210, Adj R² = 0.0741): Coefficients: intercept +2.5438 fan_rate_m3_s -0.4938 inlet_pct +0.2188 fog_interval_min -0.1063 light_hrs +0.2437 RSM Model (quadratic, R² = 0.6463, Adj R² = -4.3059): Coefficients: intercept +0.5088 fan_rate_m3_s -0.4938 inlet_pct +0.2188 fog_interval_min -0.1062 light_hrs +0.2437 fan_rate_m3_s*inlet_pct -0.1937 fan_rate_m3_s*fog_interval_min +0.3563 fan_rate_m3_s*light_hrs -0.2688 inlet_pct*fog_interval_min -0.1062 inlet_pct*light_hrs -0.2563 fog_interval_min*light_hrs -0.2313 fan_rate_m3_s^2 +0.5088 inlet_pct^2 +0.5088 fog_interval_min^2 +0.5088 light_hrs^2 +0.5088 Curvature analysis: inlet_pct coef=+0.5088 convex (has a minimum) fog_interval_min coef=+0.5088 convex (has a minimum) fan_rate_m3_s coef=+0.5088 convex (has a minimum) light_hrs coef=+0.5088 convex (has a minimum) Notable interactions: fan_rate_m3_s*fog_interval_min coef=+0.3563 (synergistic) Predicted optimum (from linear model, at observed points): fan_rate_m3_s = 2 inlet_pct = 80 fog_interval_min = 5 light_hrs = 23 Predicted value: 3.6063 Surface optimum (via L-BFGS-B, linear model): fan_rate_m3_s = 8 inlet_pct = 20 fog_interval_min = 30 light_hrs = 16 Predicted value: 1.4813 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. fan_rate_m3_s (effect: -1.0, contribution: 46.5%) 2. light_hrs (effect: 0.5, contribution: 22.9%) 3. inlet_pct (effect: 0.4, contribution: 20.6%) 4. fog_interval_min (effect: 0.2, contribution: 10.0%)
← Previous: Sheep Shearing Technique Next: Rotational Grazing Pattern →