Raw material availability constraint in a DOEHi,
What if you are doing a DOE and each time you face a raw material availability constraint. Clearly, the quantity of reagents is limited.
Surely you can deal with the problem by requiring the total number of runs, but I'm wondering if one could use constraints. Ideally, I would like to stipulate as a constraint that the sum total of a reactant does not exceed a certain value. we could also want to use exactly this amount so you don't loose raw material.
So having a constraints along the trials.
Has anyone ever faced this problem?
My proposal would be to run a set of DOEs and compare the sum of the limited reactants in order to select the best DOE. Has anyone tried this?
Thank you for your suggestions.
Florence
Re: Raw material availability constraint in a DOETo get around the problem I developed a small script. This script builds a DOE with the factors of the associated table (change the path on line 2).
I considered that the Reactant factor was only available in 240 units (line 4).
Then, I run the DOE from its minimum size (I retrieved the DOE script from the platform) to a maximum size in number of trials (here, from 12 to 25 trials) and I test the sum of each DOE on the reactant variable and check that it is less than or equal to 240. It leaves you with the possible tables (title of the table = the sum)
This approach is not the most ideal because I do not take into account this constraint when optimizing the optimality criterion as one would do with an inter-factor constraint but it allows to keep the plans acceptable by this constraint on a set of plans.
FactorsTable= open("Reactor Factors.jmp");
ReactantMaxSum = 240;
For( i = 12, i < 25, i++,
DOeInit = DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Set Random Seed( 4547922 ),
Optimality Criterion( Name( "Make D-Optimal Design" ) ), Simulate Responses( 0 ),
Save X Matrix( 0 )}
);
DOeInit << Load Factors( FactorsTable );
DOeInit << Set Sample Size( i );
DOeInit << Make Table();
temp = Current Data Table();
tempdata = temp << Summary( Sum( :Reactant ), Freq( "Aucun(e)" ), Weight( "Aucun(e)" ) );
mySum = Column( 2 )[1];
Show( mySum );
If( mySum > ReactantMaxSum,
Close( temp, NoSave );
Close( tempdata, NoSave );
DOeInit<<CLOSE window=""></CLOSE>Re: Raw material availability constraint in a DOESomebody asked me a similar question recently. I think that another approach would be to treat Reactant as a covariate factor. If you just want to test the main effect of the factor, then the optimal is for the factor to only take the low and high limits of the factor range (10 and 20 in this example).
For 16 runs you can properly balance with 8 runs at Reactant = 10 and 8 runs at Reactant = 20. So I would expect that an optimal design for the main effect of Reactant would meet the constraint of total Reactant <= 240.
For more runs, you could work out all the values of Reactant that give the most runs at 20, and therefore the best balance, and still meet the constraint of Reactant <= 240. Then use these as candidate set tables for an optimal design.
I have worked out the optimal levels of Reactant for 16, 18, and 20 runs (.xlsx file attached). 20 run JMP covariate table also attached.
As an example, I used this to create the attached design for 20 runs. I think this is the D-optimal design for main effects, given the constraint of total Reactant <= 240.
This is an interesting problem. I hope my solution is useful for someone!
Phil