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
- Consider whether any fixed factors should be varied in a future study.
Experimental Setup
Factors
| Factor | Low | High | Unit |
fan_rate_m3_s | 2 | 8 | m3/s |
inlet_pct | 20 | 80 | % |
fog_interval_min | 5 | 30 | min |
light_hrs | 16 | 23 | hrs |
Fixed: birds = 20000, house_m2 = 1200
Responses
| Response | Direction | Unit |
weight_gain_g_day | ↑ maximize | g/day |
mortality_pct | ↓ minimize | % |
Configuration
{
"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.
| Run | fan_rate_m3_s | inlet_pct | fog_interval_min | light_hrs |
| 1 | 2 | 80 | 30 | 23 |
| 2 | 8 | 20 | 5 | 23 |
| 3 | 2 | 80 | 5 | 23 |
| 4 | 2 | 80 | 30 | 16 |
| 5 | 8 | 80 | 30 | 16 |
| 6 | 8 | 20 | 30 | 16 |
| 7 | 8 | 80 | 5 | 16 |
| 8 | 8 | 20 | 5 | 16 |
| 9 | 2 | 20 | 5 | 23 |
| 10 | 2 | 20 | 30 | 16 |
| 11 | 8 | 80 | 5 | 23 |
| 12 | 8 | 80 | 30 | 23 |
| 13 | 2 | 80 | 5 | 16 |
| 14 | 8 | 20 | 30 | 23 |
| 15 | 2 | 20 | 5 | 16 |
| 16 | 2 | 20 | 30 | 23 |
Step-by-Step Workflow
1
Preview the design
$ doe info --config use_cases/293_poultry_house_ventilation/config.json
2
Generate the runner script
$ 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
$ bash use_cases/293_poultry_house_ventilation/results/run.sh
4
Analyze results
$ doe analyze --config use_cases/293_poultry_house_ventilation/config.json
5
Get optimization recommendations
$ 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.
$ doe optimize --config use_cases/293_poultry_house_ventilation/config.json --multi
7
Generate the HTML report
$ doe report --config use_cases/293_poultry_house_ventilation/config.json \
--output use_cases/293_poultry_house_ventilation/results/report.html
Features Exercised
| Feature | Value |
| Design type | full_factorial |
| Factor types | continuous (all 4) |
| Arg style | double-dash |
| Responses | 2 (weight_gain_g_day ↑, mortality_pct ↓) |
| Total runs | 16 |
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
| Source | DF | SS | MS | F | p-value |
| 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 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response: mortality_pct
Top factors: light_hrs (33.7%), fan_rate_m3_s (31.5%), fog_interval_min (22.8%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| 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 | | |
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.
mortality pct fan rate m3 s vs fog interval min
mortality pct fan rate m3 s vs inlet pct
mortality pct fan rate m3 s vs light hrs
mortality pct fog interval min vs light hrs
mortality pct inlet pct vs fog interval min
mortality pct inlet pct vs light hrs
weight gain g day fan rate m3 s vs fog interval min
weight gain g day fan rate m3 s vs inlet pct
weight gain g day fan rate m3 s vs light hrs
weight gain g day fog interval min vs light hrs
weight gain g day inlet pct vs fog interval min
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
| Response | Weight | Desirability | Predicted | Dir |
weight_gain_g_day |
1.5 |
|
66.00 0.9545 66.00 g/day |
↑ |
mortality_pct |
1.0 |
|
0.40 0.9545 0.40 % |
↓ |
Recommended Settings
| Factor | Value |
fan_rate_m3_s | 8 m3/s |
inlet_pct | 80 % |
fog_interval_min | 5 min |
light_hrs | 16 hrs |
Source: from observed run #11
Trade-off Summary
Sacrifice = how much worse than single-objective best.
| Response | Predicted | Best Observed | Sacrifice |
mortality_pct | 0.40 | 0.40 | +0.00 |
Top 3 Runs by Desirability
| Run | D | Factor Settings |
| #2 | 0.7448 | fan_rate_m3_s=2, inlet_pct=80, fog_interval_min=5, light_hrs=23 |
| #7 | 0.7448 | fan_rate_m3_s=8, inlet_pct=80, fog_interval_min=30, light_hrs=23 |
Model Quality
| Response | R² | Type |
mortality_pct | 0.0993 | linear |
Full Multi-Objective Output
============================================================
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
=== 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
=== 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%)