DOE Toolkit

Richard Potter, Harper Corditt Software

(RowDefault[, (Spacer1), , (Spacer1), ])  #WolframTechConf

ABSTRACT

I demonstrate how to generate some classic experimental designs using the DOE Toolkit, which is an add-on for Mathematica® developed by my company, Harper Corditt Software.

Overview

The DOE Toolkit is an add-on for Mathematica® that enables you to generate experimental designs for the following methodologies:

Screening: Full Factorial and Fractional Factorial

Response Surface: Box-Behnken and Central Composite

Mixture

Orthogonal

Each DOE Toolkit function creates the design you specify in the form of a Mathematica Dataset object.  Thus, you can leverage all the power of  Mathematica’s Dataset technology to modify and analyze your designs.

Overview (Continued)

You can augment any design by randomizing, replicating, and/or blocking. You can also add central points as well as axial points.

The DOE Toolkit includes an Optimizer tool which allows you to find an optimal subset of runs based on your design.

Once you have generated your design and recorded your experimental results, the DOE Toolkit provides a Desirability Manipulator tool that allows you to visually explore the consequences of changing factor settings in your model.

Demo

Get["~/Documents/DOE Toolkit/DOE Toolkit 2.0.3.wl"]

Screening Methodology

Full Factorial Design

Evaluate the doeFactorial function to create a full factorial design for 3 variables, each of which has 3 levels.

factors1={"X1","X2","X3"};
levels1={{0.7,1.9,3.1},{40,50,60},{1.8,2.3,2.8}};

fullfactxdsn=doeFactorial[factors1,levels1,
"RandomizeRuns"->False,
"MyMetadata"->{"Description"->"Generated "
     <>DateString[{"Month","/","Day","/","Year"}]}];
fullfactxdsn[[1]] (*Dataset object*)
fullfactxdsn[[2]] (*metadata list*)//TableForm

Add Blocking to the design.

factorsBlocking={"X1","X2","X3"};
levelsBlocking={{5,10},{4,12},{8,16}};
xdsn=doeFactorial[factorsBlocking,levelsBlocking,
"RandomizeRuns"->False,
"Blocking"->{"Plot"->{1,2}}];
xdsn[[1]]

Control how data levels and level patterns are represented. 
In this example, X1 and X3 each have 2 levels, while X2 has 3.

factors2={"X1","X2","X3"};
levels2={{1.5,3.0},{10,20,30},{100,150}};
fullfactxdsn2=doeFactorial[factors2,levels2,"RandomizeRuns"->False,
"DataRepresentation"->{{"-1","+1"},{"♣","♢","♡"}},
"PatternRepresentation"->{{Red,Green},{Orange,Blue,Purple}}];
fullfactxdsn2[[1]]

Fractional Factorial Design

Evaluate the doeFractional function.  Use the same set of factors and levels as were used in the first full factorial example.
We confound X3 with X1 and X2 by specifying the ConfoundingRules option.

factors1={"X1","X2","X3"};
levels1={{0.7,1.9,3.1},{40,50,60},{1.8,2.3,2.8}};
confRules1={"X3"->{"X1","X2"}};

fractfactxdsn=doeFractional[factors1,levels1,"RandomizeRuns"->False,
"ConfoundingRules"->confRules1];
fractfactxdsn[[1]]
fractfactxdsn[[2]]//TableForm

Response Surface Methodology

Box-Behnken Design

Evaluate the doeBoxBehnken function to generate a Box-Behnken design.

factors1={"X1","X2","X3"};
levels1={{0.7,1.9,3.1},{40,50,60},{1.8,2.3,2.8}};

boxbxdsn =doeBoxBehnken[factors1,levels1,"RandomizeRuns"->False];
boxbxdsn[[1]]
boxbxdsn[[2]]//TableForm

Central Composite Design

Evaluate the doeCentralComposite function to generate a central composite design for 3 factors.
Use the “AxialPointGroups” option to set α to Spherical and specify that 1 axial point group should be inserted at the top of the design.

factors1={"X1","X2","X3"};
levelsCCD={{0.7,1.9},{40,50},{1.8,2.8}};

cencompxdsn=doeCentralComposite[factors1,levelsCCD,"RandomizeRuns"->False,
"AxialPointGroups"->{"Spherical",{"Top"->1}}];
cencompxdsn[[1]]
cencompxdsn[[2]]//TableForm

Mixture Design

Evaluate the doeMixture function to generate a Simplex Lattice mixture design for 3 factors .

factors1={"X1","X2","X3"};

mixtxdsn=doeMixture[factors1,"RandomizeRuns"->False,
"PatternIsBarChart"->True];
mixtxdsn[[1]]
mixtxdsn[[2]]//TableForm

Orthogonal Design

Evaluate the doeOrthogonal function to generate a design for 4 factors (each of which is 2-level).
The column vectors in the resulting design are balanced and mutually orthogonal.

factorsOrthog={"X1","X2","X3","X4"};
levelsOrthog={{0.7,1.9},{40,50},{1.8,2.8},{0.5,1.5}};

orthogxdsn=doeOrthogonal[factorsOrthog,levelsOrthog,"RandomizeRuns"->False];
orthogxdsn[[1]]
orthogxdsn[[2]]//TableForm

Optimizing a Design

We begin by evaluating the doeFactorial function to create a full factorial design data set.  We will then evaluate the doeOptimal function to select a subset of the runs from the factorial design that maximizes our optimality criterion.

factorsOptimize={"X1","X2","X3","X4"};
levelsOptimize={{0.7,1.9,3.1},{40,50,60},{1.8,2.3,2.8},{100,150,200}};

fullfactxdsn3=doeFactorial[factorsOptimize,levelsOptimize,
"PatternColumn"->False,
"RandomizeRuns"->False];
fullfactxdsn3[[1]]
fullfactxdsn3[[2]]//TableForm

Evaluate the doeOptimal function to generate a D-Optimal design of 40 runs selected from the 81 runs contained in fullfactxdsn3.

nRuns1=40;
optimal10rxdsn = doeOptimal[fullfactxdsn3,nRuns1,"RandomizeRuns"->False,
"OptimalityCriterion"->"D"];
optimal10rxdsn[[1]]//TableForm
optimal10rxdsn[[2]] //Column

Thanks for watching!
Questions?

I welcome your feedback. Please contact me at richard.potter@harpercorditt.com

If you are interested in trying the DOE Toolkit, there is a fully functional demo available at my website, www.HarperCordittSoftware.com
And you can also purchase a copy there as well.

Here is a link to my notebook for this presentation:

BarcodeImage["https://www.wolframcloud.com/obj/richard.potter/Published/DOE%20Toolkit%20-%20Wolfram%20Tech%20Conference%202024.nb"]