← All Use Cases
🐾
Central Composite Design

Cat Litter Box Management

Central composite design to minimize odor and maximize cat usage by tuning litter depth, cleaning frequency, and box size

Summary

This experiment investigates cat litter box management. Central composite design to minimize odor and maximize cat usage by tuning litter depth, cleaning frequency, and box size.

The design varies 3 factors: litter depth cm (cm), ranging from 3 to 10, clean per day (per_day), ranging from 1 to 3, and box area cm2 (cm2), ranging from 1500 to 4000. The goal is to optimize 2 responses: odor control (pts) (maximize) and usage pct (%) (maximize). Fixed conditions held constant across all runs include litter type = clumping_clay, cats = 2.

A Central Composite Design (CCD) was selected to fit a full quadratic response surface model, including curvature and interaction effects. With 3 factors this produces 22 runs including center points and axial (star) points that extend beyond the factorial range.

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 odor control, the most influential factors were clean per day (42.6%), litter depth cm (29.6%), box area cm2 (27.8%). The best observed value was 7.7 (at litter depth cm = 6.5, clean per day = 2, box area cm2 = 2750).

For usage pct, the most influential factors were clean per day (39.2%), box area cm2 (32.9%), litter depth cm (28.0%). The best observed value was 93.0 (at litter depth cm = 6.5, clean per day = 2, box area cm2 = 2750).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
litter_depth_cm310cm
clean_per_day13per_day
box_area_cm215004000cm2

Fixed: litter_type = clumping_clay, cats = 2

Responses

ResponseDirectionUnit
odor_control↑ maximizepts
usage_pct↑ maximize%

Configuration

use_cases/168_cat_litter_box/config.json
{ "metadata": { "name": "Cat Litter Box Management", "description": "Central composite design to minimize odor and maximize cat usage by tuning litter depth, cleaning frequency, and box size" }, "factors": [ { "name": "litter_depth_cm", "levels": [ "3", "10" ], "type": "continuous", "unit": "cm" }, { "name": "clean_per_day", "levels": [ "1", "3" ], "type": "continuous", "unit": "per_day" }, { "name": "box_area_cm2", "levels": [ "1500", "4000" ], "type": "continuous", "unit": "cm2" } ], "fixed_factors": { "litter_type": "clumping_clay", "cats": "2" }, "responses": [ { "name": "odor_control", "optimize": "maximize", "unit": "pts" }, { "name": "usage_pct", "optimize": "maximize", "unit": "%" } ], "settings": { "operation": "central_composite", "test_script": "use_cases/168_cat_litter_box/sim.sh" } }

Experimental Matrix

The Central Composite Design produces 22 runs. Each row is one experiment with specific factor settings.

Runlitter_depth_cmclean_per_daybox_area_cm2
16.522750
21014000
3331500
46.53.825742750
56.522750
60.10990322750
76.52467.823
86.522750
91031500
1012.890122750
116.522750
126.50.1742582750
136.522750
14314000
156.522750
161011500
176.525032.18
181034000
196.522750
20311500
21334000
226.522750

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/168_cat_litter_box/config.json
2

Generate the runner script

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

Execute the experiments

Terminal
$ bash use_cases/168_cat_litter_box/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/168_cat_litter_box/config.json
5

Get optimization recommendations

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

Generate the HTML report

Terminal
$ doe report --config use_cases/168_cat_litter_box/config.json \ --output use_cases/168_cat_litter_box/results/report.html

Features Exercised

FeatureValue
Design typecentral_composite
Factor typescontinuous (all 3)
Arg styledouble-dash
Responses2 (odor_control ↑, usage_pct ↑)
Total runs22

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: odor_control

Top factors: clean_per_day (42.6%), litter_depth_cm (29.6%), box_area_cm2 (27.8%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
litter_depth_cm43.79290.94820.2330.9129
clean_per_day48.98542.24630.5520.7030
box_area_cm245.57041.39260.3420.8430
LackofFit25.00592.5030
PureError728.4950
Error933.50094.0707
Total2151.84952.4690

Pareto Chart

Pareto chart for odor_control

Main Effects Plot

Main effects plot for odor_control

Normal Probability Plot of Effects

Normal probability plot for odor_control

Half-Normal Plot of Effects

Half-normal plot for odor_control

Model Diagnostics

Model diagnostics for odor_control

Response: usage_pct

Top factors: clean_per_day (39.2%), box_area_cm2 (32.9%), litter_depth_cm (28.0%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
litter_depth_cm472.340918.08520.3300.8512
clean_per_day4170.340942.58520.7770.5674
box_area_cm24224.174256.04361.0220.4461
LackofFit275.859837.9299
PureError7383.8750
Error9459.734854.8393
Total21926.590944.1234

Pareto Chart

Pareto chart for usage_pct

Main Effects Plot

Main effects plot for usage_pct

Normal Probability Plot of Effects

Normal probability plot for usage_pct

Half-Normal Plot of Effects

Half-normal plot for usage_pct

Model Diagnostics

Model diagnostics for usage_pct

Response Surface Plots

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

odor control clean per day vs box area cm2

RSM surface: odor control clean per day vs box area cm2

odor control litter depth cm vs box area cm2

RSM surface: odor control litter depth cm vs box area cm2

odor control litter depth cm vs clean per day

RSM surface: odor control litter depth cm vs clean per day

usage pct clean per day vs box area cm2

RSM surface: usage pct clean per day vs box area cm2

usage pct litter depth cm vs box area cm2

RSM surface: usage pct litter depth cm vs box area cm2

usage pct litter depth cm vs clean per day

RSM surface: usage pct litter depth cm vs clean per day

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
odor_control 1.5
0.9545
7.70 0.9545 7.70 pts
usage_pct 1.0
0.9545
93.00 0.9545 93.00 %

Recommended Settings

FactorValue
litter_depth_cm6.5 cm
clean_per_day2 per_day
box_area_cm25032.18 cm2

Source: from observed run #18

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
usage_pct93.0093.00+0.00

Top 3 Runs by Desirability

RunDFactor Settings
#40.7989litter_depth_cm=0.109903, clean_per_day=2, box_area_cm2=2750
#170.7515litter_depth_cm=10, clean_per_day=1, box_area_cm2=1500

Model Quality

ResponseType
usage_pct0.1117linear

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 --------------------------------------------------------------------- odor_control 1.5 0.9545 7.70 pts ↑ usage_pct 1.0 0.9545 93.00 % ↑ Recommended settings: litter_depth_cm = 6.5 cm clean_per_day = 2 per_day box_area_cm2 = 5032.18 cm2 (from observed run #18) Trade-off summary: odor_control: 7.70 (best observed: 7.70, sacrifice: +0.00) usage_pct: 93.00 (best observed: 93.00, sacrifice: +0.00) Model quality: odor_control: R² = 0.1820 (linear) usage_pct: R² = 0.1117 (linear) Top 3 observed runs by overall desirability: 1. Run #18 (D=0.9545): litter_depth_cm=6.5, clean_per_day=2, box_area_cm2=5032.18 2. Run #4 (D=0.7989): litter_depth_cm=0.109903, clean_per_day=2, box_area_cm2=2750 3. Run #17 (D=0.7515): litter_depth_cm=10, clean_per_day=1, box_area_cm2=1500

Full Analysis Output

doe analyze
=== Main Effects: odor_control === Factor Effect Std Error % Contribution -------------------------------------------------------------- clean_per_day 3.6000 0.3350 42.6% litter_depth_cm 2.5000 0.3350 29.6% box_area_cm2 2.3500 0.3350 27.8% === ANOVA Table: odor_control === Source DF SS MS F p-value ----------------------------------------------------------------------------- litter_depth_cm 4 3.7929 0.9482 0.233 0.9129 clean_per_day 4 8.9854 2.2463 0.552 0.7030 box_area_cm2 4 5.5704 1.3926 0.342 0.8430 Lack of Fit 2 5.0059 2.5030 0.615 0.5675 Pure Error 7 28.4950 4.0707 Error 9 33.5009 4.0707 Total 21 51.8495 2.4690 === Summary Statistics: odor_control === litter_depth_cm: Level N Mean Std Min Max ------------------------------------------------------------ 0.109903 1 3.2000 0.0000 3.2000 3.2000 10 4 5.1000 0.4243 4.7000 5.6000 12.8901 1 5.7000 0.0000 5.7000 5.7000 3 4 5.0500 1.0536 3.5000 5.8000 6.5 12 5.0333 2.0042 1.1000 7.7000 clean_per_day: Level N Mean Std Min Max ------------------------------------------------------------ 0.174258 1 2.2000 0.0000 2.2000 2.2000 1 4 5.2750 0.4500 4.7000 5.8000 2 12 5.1083 1.8904 1.1000 7.7000 3 4 4.8750 0.9912 3.5000 5.6000 3.82574 1 5.8000 0.0000 5.8000 5.8000 box_area_cm2: Level N Mean Std Min Max ------------------------------------------------------------ 1500 4 4.7000 0.9416 3.5000 5.8000 2750 12 5.1583 1.9893 1.1000 7.7000 4000 4 5.4500 0.1732 5.3000 5.6000 467.823 1 4.3000 0.0000 4.3000 4.3000 5032.18 1 3.1000 0.0000 3.1000 3.1000 === Main Effects: usage_pct === Factor Effect Std Error % Contribution -------------------------------------------------------------- clean_per_day 14.0000 1.4162 39.2% box_area_cm2 11.7500 1.4162 32.9% litter_depth_cm 10.0000 1.4162 28.0% === ANOVA Table: usage_pct === Source DF SS MS F p-value ----------------------------------------------------------------------------- litter_depth_cm 4 72.3409 18.0852 0.330 0.8512 clean_per_day 4 170.3409 42.5852 0.777 0.5674 box_area_cm2 4 224.1742 56.0436 1.022 0.4461 Lack of Fit 2 75.8598 37.9299 0.692 0.5320 Pure Error 7 383.8750 54.8393 Error 9 459.7348 54.8393 Total 21 926.5909 44.1234 === Summary Statistics: usage_pct === litter_depth_cm: Level N Mean Std Min Max ------------------------------------------------------------ 0.109903 1 76.0000 0.0000 76.0000 76.0000 10 4 80.0000 6.0000 73.0000 85.0000 12.8901 1 86.0000 0.0000 86.0000 86.0000 3 4 83.0000 6.0553 74.0000 87.0000 6.5 12 82.2500 7.6053 68.0000 93.0000 clean_per_day: Level N Mean Std Min Max ------------------------------------------------------------ 0.174258 1 71.0000 0.0000 71.0000 71.0000 1 4 83.5000 4.4347 77.0000 87.0000 2 12 82.7500 7.0855 68.0000 93.0000 3 4 79.5000 6.9522 73.0000 86.0000 3.82574 1 85.0000 0.0000 85.0000 85.0000 box_area_cm2: Level N Mean Std Min Max ------------------------------------------------------------ 1500 4 77.2500 5.4391 73.0000 85.0000 2750 12 82.9167 7.4524 68.0000 93.0000 4000 4 85.7500 0.9574 85.0000 87.0000 467.823 1 80.0000 0.0000 80.0000 80.0000 5032.18 1 74.0000 0.0000 74.0000 74.0000

Optimization Recommendations

doe optimize
=== Optimization: odor_control === Direction: maximize Best observed run: #18 litter_depth_cm = 6.5 clean_per_day = 2 box_area_cm2 = 2750 Value: 7.7 RSM Model (linear, R² = 0.2388, Adj R² = 0.1120): Coefficients: intercept +4.9955 litter_depth_cm -0.1950 clean_per_day -0.3966 box_area_cm2 +0.8056 RSM Model (quadratic, R² = 0.4153, Adj R² = -0.0232): Coefficients: intercept +5.6060 litter_depth_cm -0.1950 clean_per_day -0.3966 box_area_cm2 +0.8056 litter_depth_cm*clean_per_day +0.4000 litter_depth_cm*box_area_cm2 -0.0250 clean_per_day*box_area_cm2 +0.5500 litter_depth_cm^2 -0.3103 clean_per_day^2 -0.1753 box_area_cm2^2 -0.4303 Curvature analysis: box_area_cm2 coef=-0.4303 concave (has a maximum) litter_depth_cm coef=-0.3103 concave (has a maximum) clean_per_day coef=-0.1753 concave (has a maximum) Notable interactions: clean_per_day*box_area_cm2 coef=+0.5500 (synergistic) litter_depth_cm*clean_per_day coef=+0.4000 (synergistic) Predicted optimum (from linear model, at observed points): litter_depth_cm = 6.5 clean_per_day = 2 box_area_cm2 = 5032.18 Predicted value: 6.4663 Surface optimum (via L-BFGS-B, linear model): litter_depth_cm = 3 clean_per_day = 1 box_area_cm2 = 4000 Predicted value: 6.3927 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. box_area_cm2 (effect: 4.7, contribution: 44.0%) 2. litter_depth_cm (effect: 3.5, contribution: 32.8%) 3. clean_per_day (effect: 2.5, contribution: 23.3%) === Optimization: usage_pct === Direction: maximize Best observed run: #18 litter_depth_cm = 6.5 clean_per_day = 2 box_area_cm2 = 2750 Value: 93.0 RSM Model (linear, R² = 0.5114, Adj R² = 0.4299): Coefficients: intercept +81.8636 litter_depth_cm -1.9473 clean_per_day -3.4711 box_area_cm2 +4.0578 RSM Model (quadratic, R² = 0.6304, Adj R² = 0.3533): Coefficients: intercept +84.1400 litter_depth_cm -1.9473 clean_per_day -3.4711 box_area_cm2 +4.0578 litter_depth_cm*clean_per_day -0.6250 litter_depth_cm*box_area_cm2 -0.1250 clean_per_day*box_area_cm2 +2.1250 litter_depth_cm^2 -1.3382 clean_per_day^2 -0.7382 box_area_cm2^2 -1.3382 Curvature analysis: litter_depth_cm coef=-1.3382 concave (has a maximum) box_area_cm2 coef=-1.3382 concave (has a maximum) clean_per_day coef=-0.7382 concave (has a maximum) Notable interactions: clean_per_day*box_area_cm2 coef=+2.1250 (synergistic) litter_depth_cm*clean_per_day coef=-0.6250 (antagonistic) Predicted optimum (from linear model, at observed points): litter_depth_cm = 3 clean_per_day = 1 box_area_cm2 = 4000 Predicted value: 91.3398 Surface optimum (via L-BFGS-B, linear model): litter_depth_cm = 3 clean_per_day = 1 box_area_cm2 = 4000 Predicted value: 91.3398 Model quality: Moderate fit — use predictions directionally, not precisely. Factor importance: 1. box_area_cm2 (effect: 20.0, contribution: 43.5%) 2. litter_depth_cm (effect: 14.0, contribution: 30.4%) 3. clean_per_day (effect: 12.0, contribution: 26.1%)
← Previous: Dog Kibble Formulation Next: Backyard Chicken Egg Production →