← All Use Cases
💄
Central Composite Design

Perfume Longevity & Sillage

Central composite design to maximize scent longevity and sillage by tuning alcohol concentration, fixative percentage, and application amount

Summary

This experiment investigates perfume longevity & sillage. Central composite design to maximize scent longevity and sillage by tuning alcohol concentration, fixative percentage, and application amount.

The design varies 3 factors: alcohol pct (%), ranging from 60 to 85, fixative pct (%), ranging from 1 to 5, and sprays (sprays), ranging from 2 to 8. The goal is to optimize 2 responses: longevity hrs (hrs) (maximize) and sillage score (pts) (maximize). Fixed conditions held constant across all runs include fragrance type = eau_de_parfum, notes = oriental.

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 longevity hrs, the most influential factors were fixative pct (37.7%), alcohol pct (36.6%), sprays (25.7%). The best observed value was 10.5 (at alcohol pct = 72.5, fixative pct = 3, sprays = 5).

For sillage score, the most influential factors were fixative pct (59.9%), alcohol pct (22.5%), sprays (17.6%). The best observed value was 6.9 (at alcohol pct = 72.5, fixative pct = 3, sprays = 5).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
alcohol_pct6085%
fixative_pct15%
sprays28sprays

Fixed: fragrance_type = eau_de_parfum, notes = oriental

Responses

ResponseDirectionUnit
longevity_hrs↑ maximizehrs
sillage_score↑ maximizepts

Configuration

use_cases/224_perfume_longevity/config.json
{ "metadata": { "name": "Perfume Longevity & Sillage", "description": "Central composite design to maximize scent longevity and sillage by tuning alcohol concentration, fixative percentage, and application amount" }, "factors": [ { "name": "alcohol_pct", "levels": [ "60", "85" ], "type": "continuous", "unit": "%" }, { "name": "fixative_pct", "levels": [ "1", "5" ], "type": "continuous", "unit": "%" }, { "name": "sprays", "levels": [ "2", "8" ], "type": "continuous", "unit": "sprays" } ], "fixed_factors": { "fragrance_type": "eau_de_parfum", "notes": "oriental" }, "responses": [ { "name": "longevity_hrs", "optimize": "maximize", "unit": "hrs" }, { "name": "sillage_score", "optimize": "maximize", "unit": "pts" } ], "settings": { "operation": "central_composite", "test_script": "use_cases/224_perfume_longevity/sim.sh" } }

Experimental Matrix

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

Runalcohol_pctfixative_pctsprays
172.535
28518
36052
472.56.651485
572.535
649.678235
772.53-0.477226
872.535
98552
1095.321835
1172.535
1272.5-0.6514845
1372.535
146018
1572.535
168512
1772.5310.4772
188558
1972.535
206012
216058
2272.535

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/224_perfume_longevity/config.json
2

Generate the runner script

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

Execute the experiments

Terminal
$ bash use_cases/224_perfume_longevity/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/224_perfume_longevity/config.json
5

Get optimization recommendations

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

Generate the HTML report

Terminal
$ doe report --config use_cases/224_perfume_longevity/config.json \ --output use_cases/224_perfume_longevity/results/report.html

Features Exercised

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

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: longevity_hrs

Top factors: fixative_pct (37.7%), alcohol_pct (36.6%), sprays (25.7%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
alcohol_pct415.92703.98170.6710.6282
fixative_pct414.13953.53490.5960.6747
sprays46.09361.52340.2570.8983
LackofFit231.248615.6243
PureError741.5150
Error972.76365.9307
Total21108.92365.1868

Pareto Chart

Pareto chart for longevity_hrs

Main Effects Plot

Main effects plot for longevity_hrs

Normal Probability Plot of Effects

Normal probability plot for longevity_hrs

Half-Normal Plot of Effects

Half-normal plot for longevity_hrs

Model Diagnostics

Model diagnostics for longevity_hrs

Response: sillage_score

Top factors: fixative_pct (59.9%), alcohol_pct (22.5%), sprays (17.6%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
alcohol_pct45.32321.33080.6130.6643
fixative_pct48.91572.22891.0260.4443
sprays41.33570.33390.1540.9565
LackofFit210.60995.3049
PureError715.2088
Error925.81862.1727
Total2141.39321.9711

Pareto Chart

Pareto chart for sillage_score

Main Effects Plot

Main effects plot for sillage_score

Normal Probability Plot of Effects

Normal probability plot for sillage_score

Half-Normal Plot of Effects

Half-normal plot for sillage_score

Model Diagnostics

Model diagnostics for sillage_score

Response Surface Plots

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

longevity hrs alcohol pct vs fixative pct

RSM surface: longevity hrs alcohol pct vs fixative pct

longevity hrs alcohol pct vs sprays

RSM surface: longevity hrs alcohol pct vs sprays

longevity hrs fixative pct vs sprays

RSM surface: longevity hrs fixative pct vs sprays

sillage score alcohol pct vs fixative pct

RSM surface: sillage score alcohol pct vs fixative pct

sillage score alcohol pct vs sprays

RSM surface: sillage score alcohol pct vs sprays

sillage score fixative pct vs sprays

RSM surface: sillage score fixative pct vs sprays

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
longevity_hrs 1.0
0.9545
10.50 0.9545 10.50 hrs
sillage_score 1.5
0.9545
6.90 0.9545 6.90 pts

Recommended Settings

FactorValue
alcohol_pct72.5 %
fixative_pct3 %
sprays5 sprays

Source: from observed run #21

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
sillage_score6.906.90+0.00

Top 3 Runs by Desirability

RunDFactor Settings
#170.8085alcohol_pct=72.5, fixative_pct=3, sprays=5
#180.7869alcohol_pct=72.5, fixative_pct=3, sprays=-0.477226

Model Quality

ResponseType
sillage_score0.1757linear

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 --------------------------------------------------------------------- longevity_hrs 1.0 0.9545 10.50 hrs ↑ sillage_score 1.5 0.9545 6.90 pts ↑ Recommended settings: alcohol_pct = 72.5 % fixative_pct = 3 % sprays = 5 sprays (from observed run #21) Trade-off summary: longevity_hrs: 10.50 (best observed: 10.50, sacrifice: +0.00) sillage_score: 6.90 (best observed: 6.90, sacrifice: +0.00) Model quality: longevity_hrs: R² = 0.0804 (linear) sillage_score: R² = 0.1757 (linear) Top 3 observed runs by overall desirability: 1. Run #21 (D=0.9545): alcohol_pct=72.5, fixative_pct=3, sprays=5 2. Run #17 (D=0.8085): alcohol_pct=72.5, fixative_pct=3, sprays=5 3. Run #18 (D=0.7869): alcohol_pct=72.5, fixative_pct=3, sprays=-0.477226

Full Analysis Output

doe analyze
=== Main Effects: longevity_hrs === Factor Effect Std Error % Contribution -------------------------------------------------------------- fixative_pct 3.9250 0.4856 37.7% alcohol_pct 3.8083 0.4856 36.6% sprays 2.6750 0.4856 25.7% === ANOVA Table: longevity_hrs === Source DF SS MS F p-value ----------------------------------------------------------------------------- alcohol_pct 4 15.9270 3.9817 0.671 0.6282 fixative_pct 4 14.1395 3.5349 0.596 0.6747 sprays 4 6.0936 1.5234 0.257 0.8983 Lack of Fit 2 31.2486 15.6243 2.634 0.1403 Pure Error 7 41.5150 5.9307 Error 9 72.7636 5.9307 Total 21 108.9236 5.1868 === Summary Statistics: longevity_hrs === alcohol_pct: Level N Mean Std Min Max ------------------------------------------------------------ 49.6782 1 9.1000 0.0000 9.1000 9.1000 60 4 6.4750 0.9069 5.8000 7.8000 72.5 12 5.2917 2.1471 1.3000 8.3000 85 4 5.9000 3.6433 1.6000 10.5000 95.3218 1 6.1000 0.0000 6.1000 6.1000 fixative_pct: Level N Mean Std Min Max ------------------------------------------------------------ -0.651484 1 3.1000 0.0000 3.1000 3.1000 1 4 7.0250 2.3400 5.5000 10.5000 3 12 5.8333 2.2853 1.3000 9.1000 5 4 5.3500 2.6401 1.6000 7.8000 6.65148 1 5.6000 0.0000 5.6000 5.6000 sprays: Level N Mean Std Min Max ------------------------------------------------------------ -0.477226 1 3.6000 0.0000 3.6000 3.6000 10.4772 1 5.8000 0.0000 5.8000 5.8000 2 4 6.2750 1.0372 5.5000 7.8000 5 12 5.7750 2.3344 1.3000 9.1000 8 4 6.1000 3.6359 1.6000 10.5000 === Main Effects: sillage_score === Factor Effect Std Error % Contribution -------------------------------------------------------------- fixative_pct 3.4000 0.2993 59.9% alcohol_pct 1.2750 0.2993 22.5% sprays 1.0000 0.2993 17.6% === ANOVA Table: sillage_score === Source DF SS MS F p-value ----------------------------------------------------------------------------- alcohol_pct 4 5.3232 1.3308 0.613 0.6643 fixative_pct 4 8.9157 2.2289 1.026 0.4443 sprays 4 1.3357 0.3339 0.154 0.9565 Lack of Fit 2 10.6099 5.3049 2.442 0.1569 Pure Error 7 15.2088 2.1727 Error 9 25.8186 2.1727 Total 21 41.3932 1.9711 === Summary Statistics: sillage_score === alcohol_pct: Level N Mean Std Min Max ------------------------------------------------------------ 49.6782 1 5.3000 0.0000 5.3000 5.3000 60 4 5.7000 0.2160 5.5000 6.0000 72.5 12 4.5750 1.4334 2.2000 6.4000 85 4 4.5250 2.1077 2.1000 6.9000 95.3218 1 5.8000 0.0000 5.8000 5.8000 fixative_pct: Level N Mean Std Min Max ------------------------------------------------------------ -0.651484 1 2.2000 0.0000 2.2000 2.2000 1 4 5.4250 1.3647 3.6000 6.9000 3 12 4.8500 1.2443 2.8000 6.4000 5 4 4.8000 1.8129 2.1000 6.0000 6.65148 1 5.6000 0.0000 5.6000 5.6000 sprays: Level N Mean Std Min Max ------------------------------------------------------------ -0.477226 1 4.3000 0.0000 4.3000 4.3000 10.4772 1 5.3000 0.0000 5.3000 5.3000 2 4 5.1500 1.0599 3.6000 6.0000 5 12 4.7000 1.4722 2.2000 6.4000 8 4 5.0750 2.0694 2.1000 6.9000

Optimization Recommendations

doe optimize
=== Optimization: longevity_hrs === Direction: maximize Best observed run: #21 alcohol_pct = 72.5 fixative_pct = 3 sprays = 5 Value: 10.5 RSM Model (linear, R² = 0.2120, Adj R² = 0.0807): Coefficients: intercept +5.8273 alcohol_pct -0.1630 fixative_pct -1.1702 sprays +0.4227 RSM Model (quadratic, R² = 0.6231, Adj R² = 0.3404): Coefficients: intercept +7.0431 alcohol_pct -0.1630 fixative_pct -1.1702 sprays +0.4227 alcohol_pct*fixative_pct -0.0250 alcohol_pct*sprays -1.7000 fixative_pct*sprays -0.5750 alcohol_pct^2 -0.6979 fixative_pct^2 -0.5479 sprays^2 -0.5779 Curvature analysis: alcohol_pct coef=-0.6979 concave (has a maximum) sprays coef=-0.5779 concave (has a maximum) fixative_pct coef=-0.5479 concave (has a maximum) Notable interactions: alcohol_pct*sprays coef=-1.7000 (antagonistic) fixative_pct*sprays coef=-0.5750 (antagonistic) Predicted optimum (from quadratic model, at observed points): alcohol_pct = 60 fixative_pct = 1 sprays = 8 Predicted value: 9.2254 Surface optimum (via L-BFGS-B, quadratic model): alcohol_pct = 60 fixative_pct = 1 sprays = 8 Predicted value: 9.2254 Model quality: Moderate fit — use predictions directionally, not precisely. Factor importance: 1. fixative_pct (effect: 4.8, contribution: 50.0%) 2. sprays (effect: 2.7, contribution: 28.6%) 3. alcohol_pct (effect: 2.1, contribution: 21.4%) === Optimization: sillage_score === Direction: maximize Best observed run: #21 alcohol_pct = 72.5 fixative_pct = 3 sprays = 5 Value: 6.9 RSM Model (linear, R² = 0.2733, Adj R² = 0.1521): Coefficients: intercept +4.8591 alcohol_pct -0.3056 fixative_pct -0.7621 sprays +0.3116 RSM Model (quadratic, R² = 0.7540, Adj R² = 0.5696): Coefficients: intercept +5.4920 alcohol_pct -0.3056 fixative_pct -0.7621 sprays +0.3116 alcohol_pct*fixative_pct -0.6375 alcohol_pct*sprays -1.0625 fixative_pct*sprays -0.3625 alcohol_pct^2 -0.4764 fixative_pct^2 -0.3564 sprays^2 -0.1164 Curvature analysis: alcohol_pct coef=-0.4764 concave (has a maximum) fixative_pct coef=-0.3564 concave (has a maximum) sprays coef=-0.1164 concave (has a maximum) Notable interactions: alcohol_pct*sprays coef=-1.0625 (antagonistic) alcohol_pct*fixative_pct coef=-0.6375 (antagonistic) fixative_pct*sprays coef=-0.3625 (antagonistic) Predicted optimum (from quadratic model, at observed points): alcohol_pct = 60 fixative_pct = 1 sprays = 8 Predicted value: 6.7094 Surface optimum (via L-BFGS-B, quadratic model): alcohol_pct = 60.6657 fixative_pct = 1.53826 sprays = 8 Predicted value: 6.7457 Model quality: Good fit — general trends are captured, some noise remains. Factor importance: 1. fixative_pct (effect: 3.0, contribution: 39.7%) 2. alcohol_pct (effect: 2.4, contribution: 31.8%) 3. sprays (effect: 2.2, contribution: 28.5%)
← All Use Cases All Use Cases →