Subscribe Bookmark RSS Feed

Custom design DOE with disallowed combinations - JMP 11

emman0101

Community Trekker

Joined:

Nov 25, 2014

Hello

I am attempting to use the Custom Design DOE (Jmp 11) to setup an experiment.  There are three (3) factors: mux, words, and bpw and two responses (not shown).

In my custom design, I designated mux as a 3-level discrete factor with values of 8, 16, and 32. Words as a continuous variable between 1024 and 32768.  And bpw as a continuous variable between 4 and 144, as per the requirements in the attached table.

7609_table.jpg

Additionally, I enabled a script for the following disallowed combinations:

mux==8 & words>8192 | mux == 8 & mod(words, 32) !=0;

mux == 16 &words < 2048 | mux == 16 & Mod( words, 64 ) != 0 | mux == 16 & bpw > 72 | mux == 16 & words > 16384;

mux==32 & words<4096 | mux == 32 & mod(words, 128) !=0 | mux ==32 & bpw >36;

However the above disallowed combination is not being respected when the design is made, even when I enable 3rd level interactions in the model, including mux*words, mux*bpw, bpw*words, and mux*bpw*words.

Any ideas on what I could be doing wrong here??

7618_custom design.PNG

1 ACCEPTED SOLUTION

Accepted Solutions
ryan_lekivetz

Joined:

Nov 1, 2013

Solution

You're almost there - first thing I noticed, is that you'll want to connect your conditions with OR ( "|"s). With the semicolons, the disallowed combinations is only looking at the final statement to evaluate. 

The other issue you'll run into is with the Mod function. Because words is continuous, outside the min and the max, the custom designer is going to have issues landing right on an integer.

 

If you put a bound on the mod function, it will find a design, such as in the code below. You could then change the value to the nearest increment for each level of mux.

 

The other option is to have words be a discrete numeric variable with a small subset of increments that work. For example, you could take the lower, upper bounds and midpoint for each level of mux. The Mod function should behave better in that case (ie, you don’t need to set the bounds on it like in the code below).

Hope that helps!

Cheers,

Ryan

 

 

DOE(

 

      {Add Response( Maximize, "Y", ., ., . ),

 

      Add Factor( Categorical, {"8", "16", "32"}, "mux", 0 ),

 

      Add Factor( Continuous, 1024, 32768, "words", 0 ),

 

      Add Factor( Continuous, 4, 144, "bpw", 0 ), Set Random Seed( 1253068796 ),

 

      Number of Starts( 40 ), Add Term( {1, 0} ), Add Term( {1, 1} ),

 

      Add Term( {2, 1} ), Add Term( {3, 1} ), Set Sample Size( 20 ),

 

      Disallowed Combinations(

 

            mux == 1 & words > 8192 | mux == 1 & (Mod( words, 32 ) >= 1) | mux == 2 &

 

            words > 16384 | mux == 2 & words < 2048 | mux == 2 & (Mod( words, 64 ) >= 1)

 

            | mux == 2 & bpw > 72 | mux == 3 & words < 4096 | mux == 3 &

 

            (Mod( words, 128 ) >= 1) | mux == 3 & bpw > 36

 

      )}

 

);

5 REPLIES
ryan_lekivetz

Joined:

Nov 1, 2013

Solution

You're almost there - first thing I noticed, is that you'll want to connect your conditions with OR ( "|"s). With the semicolons, the disallowed combinations is only looking at the final statement to evaluate. 

The other issue you'll run into is with the Mod function. Because words is continuous, outside the min and the max, the custom designer is going to have issues landing right on an integer.

 

If you put a bound on the mod function, it will find a design, such as in the code below. You could then change the value to the nearest increment for each level of mux.

 

The other option is to have words be a discrete numeric variable with a small subset of increments that work. For example, you could take the lower, upper bounds and midpoint for each level of mux. The Mod function should behave better in that case (ie, you don’t need to set the bounds on it like in the code below).

Hope that helps!

Cheers,

Ryan

 

 

DOE(

 

      {Add Response( Maximize, "Y", ., ., . ),

 

      Add Factor( Categorical, {"8", "16", "32"}, "mux", 0 ),

 

      Add Factor( Continuous, 1024, 32768, "words", 0 ),

 

      Add Factor( Continuous, 4, 144, "bpw", 0 ), Set Random Seed( 1253068796 ),

 

      Number of Starts( 40 ), Add Term( {1, 0} ), Add Term( {1, 1} ),

 

      Add Term( {2, 1} ), Add Term( {3, 1} ), Set Sample Size( 20 ),

 

      Disallowed Combinations(

 

            mux == 1 & words > 8192 | mux == 1 & (Mod( words, 32 ) >= 1) | mux == 2 &

 

            words > 16384 | mux == 2 & words < 2048 | mux == 2 & (Mod( words, 64 ) >= 1)

 

            | mux == 2 & bpw > 72 | mux == 3 & words < 4096 | mux == 3 &

 

            (Mod( words, 128 ) >= 1) | mux == 3 & bpw > 36

 

      )}

 

);

emman0101

Community Trekker

Joined:

Nov 25, 2014

Rlek2, you are right on point!  You responded the same time that a JMP Tech Support Specialist got back to me on this question. She made similar suggestions as you!

May I ask why you chose to designate mux as a categorical factor rather than discrete?  The design works in either case, but I was just wondering.

Thanks again for your help!

ryan_lekivetz

Joined:

Nov 1, 2013

Oops - I had been chatting with Tech Support about it, which is why you saw mux as categorical instead of discrete in my example.

You certainly could designate mux as discrete numeric - you just have to be more careful when defining the model, as the middle level (16) may not show up unless you include the quadratic term for the discrete numeric. You may also find cases where the middle level(s) don't show up as often. This is because the custom designer is treating the discrete numeric variable as continuous, and is trying to find the best assignment based on the model.

If you want to ensure balance among the levels of mux (or that they all get used if you have many levels), I would go with categorical.

Cheers,

Ryan

emman0101

Community Trekker

Joined:

Nov 25, 2014

You're absolutely right! I didn't pay attention to how often the middle levels were appearing. The appearance of the levels are much better when designated as categorical factors per your suggestions. 

Thanks Ryan, you saved the day.  Happy TG!

ryan_lekivetz

Joined:

Nov 1, 2013

Glad I could help.

Happy Thanksgiving!