I have a large number of ingredients, and want to constrain the number that feature in any one formulation.
So I have a Custom Design constraint ("Disallowed Combinations Script") of the form…
((Ing1>0) + (Ing2>0) + (Ing3>0) +……+ (IngX>0)) > N
Where IngX is the level Ingredient X. Not treating this as a Mixture.
I’m getting the attached error.
Interestingly reversing the sign, i.e. MINIMISING the number of ingredients to N doesn't appear to be a problem.
Any help welcome...
Many thanks for this Mark.
You specify..."assuming all ranges 0 to 1". Does this matter? I had expected my constraint to limit the number of nonzero formulations to N (or fewer)
N or fewer is the objective, and I also want to vary the concentration (not just inclusion), but I can build on the suggestion in your second mail I think. Many thanks.
I made some assumptions about your situation and came up with a way to accomplish this design.
Say that I have 5 candidate ingredients but I only want to include 3 of them at a time. I added 3 categorical factors with 5 levels.

Then I created the following expression for disallowed combinations.
Ingredient 1 == Ingredient 2 | Ingredient 1 == Ingredient 3 | Ingredient 2 == Ingredient 3
Then I assumed a main effects model and 20 runs.

Here is the complete script for this example for you to play with.
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Categorical, {"L1", "L2", "L3", "L4", "L5"}, "Ingredient 1", 0 ),
Add Factor( Categorical, {"L1", "L2", "L3", "L4", "L5"}, "Ingredient 2", 0 ),
Add Factor( Categorical, {"L1", "L2", "L3", "L4", "L5"}, "Ingredient 3", 0 ),
Set Random Seed( 102498840 ), Number of Starts( 10 ), Add Term( {1, 0} ),
Add Term( {1, 1} ), Add Term( {2, 1} ), Add Term( {3, 1} ),
Add Alias Term( {1, 1}, {2, 1} ), Add Alias Term( {1, 1}, {3, 1} ),
Add Alias Term( {2, 1}, {3, 1} ), Set Sample Size( 20 ),
Disallowed Combinations(
Ingredient 1 == Ingredient 2 | Ingredient 1 == Ingredient 3 | Ingredient 2
== Ingredient 3
), Simulate Responses( 0 ), Save X Matrix( 0 )}
);
The expression that you are using appears to be the correct form assuming that all the factor ranges are 0 to 1. You might not be adding mixture factors (ingredients) to the design but the disallowed combination that you defined is forcing linear dependencies on the factors that produce a singularity in the model matrix that JMP uses to optimize the design.
Do you really want less than N ingredients in each mixture or you want to be sure to have exactly N ingredients in each mixture?