← All Use Cases
🎨
Central Composite Design

Oil Paint Drying Medium

Central composite design to maximize gloss and minimize yellowing by tuning linseed oil ratio, drying medium percentage, and layer thickness

Summary

This experiment investigates oil paint drying medium. Central composite design to maximize gloss and minimize yellowing by tuning linseed oil ratio, drying medium percentage, and layer thickness.

The design varies 3 factors: linseed pct (%), ranging from 10 to 50, medium pct (%), ranging from 5 to 25, and thickness mm (mm), ranging from 0.5 to 3.0. The goal is to optimize 2 responses: gloss score (pts) (maximize) and yellowing de (dE) (minimize). Fixed conditions held constant across all runs include pigment = titanium_white, support = linen_canvas.

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 gloss score, the most influential factors were medium pct (51.0%), linseed pct (25.7%), thickness mm (23.3%). The best observed value was 7.4 (at linseed pct = 30, medium pct = 33.2574, thickness mm = 1.75).

For yellowing de, the most influential factors were medium pct (41.2%), thickness mm (30.4%), linseed pct (28.4%). The best observed value was 1.9 (at linseed pct = 30, medium pct = 15, thickness mm = 1.75).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
linseed_pct1050%
medium_pct525%
thickness_mm0.53.0mm

Fixed: pigment = titanium_white, support = linen_canvas

Responses

ResponseDirectionUnit
gloss_score↑ maximizepts
yellowing_de↓ minimizedE

Configuration

use_cases/282_oil_paint_drying/config.json
{ "metadata": { "name": "Oil Paint Drying Medium", "description": "Central composite design to maximize gloss and minimize yellowing by tuning linseed oil ratio, drying medium percentage, and layer thickness" }, "factors": [ { "name": "linseed_pct", "levels": [ "10", "50" ], "type": "continuous", "unit": "%" }, { "name": "medium_pct", "levels": [ "5", "25" ], "type": "continuous", "unit": "%" }, { "name": "thickness_mm", "levels": [ "0.5", "3.0" ], "type": "continuous", "unit": "mm" } ], "fixed_factors": { "pigment": "titanium_white", "support": "linen_canvas" }, "responses": [ { "name": "gloss_score", "optimize": "maximize", "unit": "pts" }, { "name": "yellowing_de", "optimize": "minimize", "unit": "dE" } ], "settings": { "operation": "central_composite", "test_script": "use_cases/282_oil_paint_drying/sim.sh" } }

Experimental Matrix

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

Runlinseed_pctmedium_pctthickness_mm
130151.75
25053
310250.5
43033.25741.75
530151.75
6-6.51484151.75
73015-0.532177
830151.75
950250.5
1066.5148151.75
1130151.75
1230-3.257421.75
1330151.75
141053
1530151.75
165050.5
1730154.03218
1850253
1930151.75
201050.5
2110253
2230151.75

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/282_oil_paint_drying/config.json
2

Generate the runner script

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

Execute the experiments

Terminal
$ bash use_cases/282_oil_paint_drying/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/282_oil_paint_drying/config.json
5

Get optimization recommendations

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

Generate the HTML report

Terminal
$ doe report --config use_cases/282_oil_paint_drying/config.json \ --output use_cases/282_oil_paint_drying/results/report.html

Features Exercised

FeatureValue
Design typecentral_composite
Factor typescontinuous (all 3)
Arg styledouble-dash
Responses2 (gloss_score ↑, yellowing_de ↓)
Total runs22

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: gloss_score

Top factors: medium_pct (51.0%), linseed_pct (25.7%), thickness_mm (23.3%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
linseed_pct41.55860.38961.6090.2538
medium_pct46.33611.58406.5420.0094
thickness_mm43.04610.76153.1450.0708
LackofFit23.27701.6385
PureError71.6950
Error94.97200.2421
Total2115.91270.7577

Pareto Chart

Pareto chart for gloss_score

Main Effects Plot

Main effects plot for gloss_score

Normal Probability Plot of Effects

Normal probability plot for gloss_score

Half-Normal Plot of Effects

Half-normal plot for gloss_score

Model Diagnostics

Model diagnostics for gloss_score

Response: yellowing_de

Top factors: medium_pct (41.2%), thickness_mm (30.4%), linseed_pct (28.4%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
linseed_pct43.07700.76920.2490.9030
medium_pct47.02451.75610.5690.6918
thickness_mm46.32611.58150.5130.7287
LackofFit24.89612.4480
PureError721.6000
Error926.49613.0857
Total2142.92362.0440

Pareto Chart

Pareto chart for yellowing_de

Main Effects Plot

Main effects plot for yellowing_de

Normal Probability Plot of Effects

Normal probability plot for yellowing_de

Half-Normal Plot of Effects

Half-normal plot for yellowing_de

Model Diagnostics

Model diagnostics for yellowing_de

Response Surface Plots

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

gloss score linseed pct vs medium pct

RSM surface: gloss score linseed pct vs medium pct

gloss score linseed pct vs thickness mm

RSM surface: gloss score linseed pct vs thickness mm

gloss score medium pct vs thickness mm

RSM surface: gloss score medium pct vs thickness mm

yellowing de linseed pct vs medium pct

RSM surface: yellowing de linseed pct vs medium pct

yellowing de linseed pct vs thickness mm

RSM surface: yellowing de linseed pct vs thickness mm

yellowing de medium pct vs thickness mm

RSM surface: yellowing de medium pct vs thickness mm

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

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
gloss_score 1.5
0.7392
6.50 0.7392 6.50 pts
yellowing_de 1.0
0.8147
2.70 0.8147 2.70 dE

Recommended Settings

FactorValue
linseed_pct-6.51484 %
medium_pct15 %
thickness_mm1.75 mm

Source: from observed run #7

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
yellowing_de2.701.90+0.80

Top 3 Runs by Desirability

RunDFactor Settings
#110.7189linseed_pct=30, medium_pct=15, thickness_mm=4.03218
#190.7103linseed_pct=10, medium_pct=5, thickness_mm=0.5

Model Quality

ResponseType
yellowing_de0.6105quadratic

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.7685 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- gloss_score 1.5 0.7392 6.50 pts ↑ yellowing_de 1.0 0.8147 2.70 dE ↓ Recommended settings: linseed_pct = -6.51484 % medium_pct = 15 % thickness_mm = 1.75 mm (from observed run #7) Trade-off summary: gloss_score: 6.50 (best observed: 7.40, sacrifice: +0.90) yellowing_de: 2.70 (best observed: 1.90, sacrifice: +0.80) Model quality: gloss_score: R² = 0.4018 (linear) yellowing_de: R² = 0.6105 (quadratic) Top 3 observed runs by overall desirability: 1. Run #7 (D=0.7685): linseed_pct=-6.51484, medium_pct=15, thickness_mm=1.75 2. Run #11 (D=0.7189): linseed_pct=30, medium_pct=15, thickness_mm=4.03218 3. Run #19 (D=0.7103): linseed_pct=10, medium_pct=5, thickness_mm=0.5

Full Analysis Output

doe analyze
=== Main Effects: gloss_score === Factor Effect Std Error % Contribution -------------------------------------------------------------- medium_pct 2.5750 0.1856 51.0% linseed_pct 1.3000 0.1856 25.7% thickness_mm 1.1750 0.1856 23.3% === ANOVA Table: gloss_score === Source DF SS MS F p-value ----------------------------------------------------------------------------- linseed_pct 4 1.5586 0.3896 1.609 0.2538 medium_pct 4 6.3361 1.5840 6.542 0.0094 thickness_mm 4 3.0461 0.7615 3.145 0.0708 Lack of Fit 2 3.2770 1.6385 6.767 0.0231 Pure Error 7 1.6950 0.2421 Error 9 4.9720 0.2421 Total 21 15.9127 0.7577 === Summary Statistics: gloss_score === linseed_pct: Level N Mean Std Min Max ------------------------------------------------------------ -6.51484 1 6.5000 0.0000 6.5000 6.5000 10 4 5.4500 1.2342 4.2000 6.7000 30 12 5.6833 0.7732 3.6000 6.5000 50 4 6.0250 1.0340 4.9000 7.4000 66.5148 1 5.2000 0.0000 5.2000 5.2000 medium_pct: Level N Mean Std Min Max ------------------------------------------------------------ -3.25742 1 6.0000 0.0000 6.0000 6.0000 15 12 5.8583 0.4926 4.9000 6.5000 25 4 5.3000 0.9345 4.2000 6.3000 33.2574 1 3.6000 0.0000 3.6000 3.6000 5 4 6.1750 1.1955 4.6000 7.4000 thickness_mm: Level N Mean Std Min Max ------------------------------------------------------------ -0.532177 1 6.2000 0.0000 6.2000 6.2000 0.5 4 5.1500 0.8851 4.2000 6.0000 1.75 12 5.6583 0.8084 3.6000 6.5000 3 4 6.3250 1.0532 4.9000 7.4000 4.03218 1 5.8000 0.0000 5.8000 5.8000 === Main Effects: yellowing_de === Factor Effect Std Error % Contribution -------------------------------------------------------------- medium_pct 2.3000 0.3048 41.2% thickness_mm 1.7000 0.3048 30.4% linseed_pct 1.5833 0.3048 28.4% === ANOVA Table: yellowing_de === Source DF SS MS F p-value ----------------------------------------------------------------------------- linseed_pct 4 3.0770 0.7692 0.249 0.9030 medium_pct 4 7.0245 1.7561 0.569 0.6918 thickness_mm 4 6.3261 1.5815 0.513 0.7287 Lack of Fit 2 4.8961 2.4480 0.793 0.4892 Pure Error 7 21.6000 3.0857 Error 9 26.4961 3.0857 Total 21 42.9236 2.0440 === Summary Statistics: yellowing_de === linseed_pct: Level N Mean Std Min Max ------------------------------------------------------------ -6.51484 1 2.7000 0.0000 2.7000 2.7000 10 4 3.5000 1.9131 2.0000 6.3000 30 12 3.6833 1.5385 1.9000 7.1000 50 4 3.3500 0.9713 2.8000 4.8000 66.5148 1 2.1000 0.0000 2.1000 2.1000 medium_pct: Level N Mean Std Min Max ------------------------------------------------------------ -3.25742 1 4.4000 0.0000 4.4000 4.4000 15 12 3.5417 1.5448 1.9000 7.1000 25 4 2.7000 0.4761 2.0000 3.0000 33.2574 1 2.1000 0.0000 2.1000 2.1000 5 4 4.1500 1.7292 2.7000 6.3000 thickness_mm: Level N Mean Std Min Max ------------------------------------------------------------ -0.532177 1 2.9000 0.0000 2.9000 2.9000 0.5 4 2.5750 0.3862 2.0000 2.8000 1.75 12 3.5750 1.6103 1.9000 7.1000 3 4 4.2750 1.5945 3.0000 6.3000 4.03218 1 3.2000 0.0000 3.2000 3.2000

Optimization Recommendations

doe optimize
=== Optimization: gloss_score === Direction: maximize Best observed run: #9 linseed_pct = 30 medium_pct = 33.2574 thickness_mm = 1.75 Value: 7.4 RSM Model (linear, R² = 0.0444, Adj R² = -0.1149): Coefficients: intercept +5.7182 linseed_pct -0.1974 medium_pct +0.0165 thickness_mm -0.0943 RSM Model (quadratic, R² = 0.1656, Adj R² = -0.4601): Coefficients: intercept +5.8077 linseed_pct -0.1974 medium_pct +0.0165 thickness_mm -0.0943 linseed_pct*medium_pct -0.0500 linseed_pct*thickness_mm -0.4500 medium_pct*thickness_mm -0.0750 linseed_pct^2 -0.1097 medium_pct^2 -0.0197 thickness_mm^2 -0.0047 Curvature analysis: linseed_pct coef=-0.1097 concave (has a maximum) medium_pct coef=-0.0197 negligible curvature thickness_mm coef=-0.0047 negligible curvature Notable interactions: linseed_pct*thickness_mm coef=-0.4500 (antagonistic) Predicted optimum (from linear model, at observed points): linseed_pct = -6.51484 medium_pct = 15 thickness_mm = 1.75 Predicted value: 6.0786 Surface optimum (via L-BFGS-B, linear model): linseed_pct = 10 medium_pct = 25 thickness_mm = 0.5 Predicted value: 6.0264 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. medium_pct (effect: 3.2, contribution: 74.9%) 2. linseed_pct (effect: 0.6, contribution: 15.2%) 3. thickness_mm (effect: 0.4, contribution: 9.9%) === Optimization: yellowing_de === Direction: minimize Best observed run: #20 linseed_pct = 30 medium_pct = 15 thickness_mm = 1.75 Value: 1.9 RSM Model (linear, R² = 0.1134, Adj R² = -0.0344): Coefficients: intercept +3.4727 linseed_pct -0.2837 medium_pct +0.0690 thickness_mm -0.4965 RSM Model (quadratic, R² = 0.2459, Adj R² = -0.3197): Coefficients: intercept +3.8030 linseed_pct -0.2837 medium_pct +0.0690 thickness_mm -0.4965 linseed_pct*medium_pct +0.4625 linseed_pct*thickness_mm +0.0875 medium_pct*thickness_mm +0.4625 linseed_pct^2 -0.2901 medium_pct^2 -0.0201 thickness_mm^2 -0.1851 Curvature analysis: linseed_pct coef=-0.2901 concave (has a maximum) thickness_mm coef=-0.1851 concave (has a maximum) medium_pct coef=-0.0201 negligible curvature Notable interactions: medium_pct*thickness_mm coef=+0.4625 (synergistic) linseed_pct*medium_pct coef=+0.4625 (synergistic) Predicted optimum (from linear model, at observed points): linseed_pct = 30 medium_pct = 15 thickness_mm = -0.532177 Predicted value: 4.3793 Surface optimum (via L-BFGS-B, linear model): linseed_pct = 50 medium_pct = 5 thickness_mm = 3 Predicted value: 2.6235 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. medium_pct (effect: 2.8, contribution: 43.8%) 2. linseed_pct (effect: 1.8, contribution: 28.5%) 3. thickness_mm (effect: 1.8, contribution: 27.7%)
← Previous: Watercolor Wash Technique Next: Acrylic Pour Technique →