Choose Language Hide Translation Bar
JerryFish
Staff

Custom Constraints Solves Mixture DOE Problem at Fuchs Lubricants (2021-US-30MP-896)

Level: Intermediate

 

Jerry Fish, JMP Systems Engineer, SAS
Dr. Na Liu, Group Leader/R&D Scientist, FUCHS LUBRICANTS CO.
Ryan Bottos, Research and Development Lab Technician, Fuchs Lubricants Co.

 

Fuchs Lubricants wanted to plan a Designed Experiment to test mixture components for one of their formulations.  One of the mixture components could be obtained from different sources.  However, this particular component needed different ranges depending on material source (e.g. if material came from Source A, range was 5%-10% of the mixture.  If from Source B, range was 7% to 14% of mixture.)  JMP’s Custom DOE platform was employed, along with a special constraint script, to produce an efficient design.  We will discuss the constraint script, along with experimental results.

 

 

Auto-generated transcript...

 

Speaker

Transcript

Jerry Fish, JMP Alright, how are you.
ROBYN GODFREY I'm good it's.
Jerry Fish, JMP been a while.
I think we'll ever get away from this pandemic thing, so we can all get together again.
ROBYN GODFREY Oh I'm so ready.
The whole going backwards on this, and everything is really annoying.
Yes.
Jerry Fish, JMP I agree, I agree.
ROBYN GODFREY That, I think a lot of people are over it, because people aren't really follow the rules like they were.
kind of like half ass around here.
Jerry Fish, JMP yeah So where are you located I forgot.
ROBYN GODFREY I live in wilmington North Carolina so.
I'm on the coast about 60 miles north of myrtle beach yeah.
Jerry Fish, JMP yeah so I'm up here in indiana and and.
I think every county in the state is a red county now in terms of high risk for the delta variant and hospitals overflowing and so forth, and people just don't care.
they're all going to walmart mask listen.
restaurants mass close.
I don't know what else you gonna do.
ROBYN GODFREY yeah I think a lot of people here feel it's just see from it, you know.
Jerry Fish, JMP yeah yeah.
ROBYN GODFREY I was talking to my chiropractor this morning and.
He was telling me about his fallacious vacation it planning this trip to Jackson hole hiking yellowstone and all that and all these delays getting there because the lightning strikes and stuff and then they find.
their son gets coated.
Oh yeah and they have rented a car, so there were like all of our togethers or five of them, and it just went through the whole family, and so they had to rent a car and drove all the way home from wyoming.
that's a long way and they couldn't really.
stay in hotels and stuff and they.
Just basically drove straight through and so when they go back and.
That Gray bar my chiropractor said that he didn't really feel that he tested positive for HIV feel that so he just kind of went about his business by the state, you know state quarantine but there's a lot on the grass, he was really super bored he's like no in the neighbors Christ and.
I was like yeah that probably wasn't a very good idea, and he said no, I got pneumonia after that.
So then he had to be like another to meet quarantine and I was like well, that was a smart your doctor, he should know better.
Jerry Fish, JMP You know, and all I had been vaccinated.
ROBYN GODFREY It all been vaccinated so.
Jerry Fish, JMP my gut got married back in January, and he nor his wife had had the vaccine so three four weeks ahead of the wedding my son comes down with cellulitis in his leg it's a some sort of a bacterial infection that can be pretty bad.
yeah it can be dangerous, and so they put him in the hospital for that he got out after several days of heavy antibiotics went home and they had a welcome home party forum where his future Father in law came and had coven expose the entire family to that.
It ran through the whole family, except for Jeremy and then two weeks before the wedding day.
JEREMY picks it up.
So now he's got co but he's feeling worse he's feeling worse, he finally though gets to the point where he tests negative for coven.
But he's still feeling bad we get right up to destination wedding down in gatlinburg and.
He can just barely hold himself up but he's determined he's going to go through with this wedding.
So they go through with the wedding the next day.
They stayed overnight down their course and and the next day he gets up he can hardly get out of bed, they have to put them in hospital for another week and it's pneumonia.
Yes, get through there so.
I mean, it was a month of just horrible horrible stuff for him and his family.
ROBYN GODFREY wow.
Like finally but.
Jerry Fish, JMP yeah it was it was rough for a while.
ROBYN GODFREY yeah I had it back in January and I.
Did yeah yeah my husband got it first and then he gave it to me, I thought I was like in the clear, you know because I was like.
It was like day 10 like man I'm not gonna get it, and then all of a sudden, I lost my taste and I had made this incredible sandwich knows really like sit down and just like devour the sandwich and suddenly, this is it honey tastes.
it's really.
ROBYN GODFREY Like.
Jerry Fish, JMP Oh.
yeah I don't think jeremy's tastes just come back now.
ROBYN GODFREY My monitor percent.
Maya I smell is still really off all is really off and my taste is.
I wouldn't say it's 100% like when you're dreaming white wines, like, I can tell the difference between like a shark and a peanut ratio, but if you were to put down like three different kinds of like close together wines I wouldn't be able to tell.
A story struggle with my bike my palates until the back.
And this will taste up and it's not a complete palette so.
hi Ryan.
ROBYN GODFREY You know I'm you.
Do you have to put some light in front of you, because you're really dark.
Ryan.Bottos trying to figure something out.
ROBYN GODFREY yeah turn around.
Jerry Fish, JMP or cut out some of the light that's.
behind you, one of the other.
let's see I need to.
ROBYN GODFREY chatter better.
Yes, you're kind of looking down but it's better.
than you.
rearrange your entire office we can't hear you you're muted.
You have another one yeah the lighting is better now you it's a little dark but it's better than it was on the other side.
Ryan.Bottos Okay let's see if I can find a lamp or something.
ROBYN GODFREY yeah if you if you can.
yeah.
ROBYN GODFREY yeah another presenter Jerry is it just your line.
Jerry Fish, JMP There so third one Kelly.
I don't know why.
ROBYN GODFREY So I wasn't that sick, I have to spell it out a hangover for two weeks.
And we'll come with an army tired rundown feeling kind of rally like mid day and I've got time for a while and then I would like go to bed at eight o'clock and sleep for 14 hours and start over again.
yeah it was just like for two weeks, you just in my inside of my nose around but I never got.
A chest congestion or any kind of head congestion and no fever nothing that was asked for me my parents were really, really sick they got it and they were super sick and I had to like.
I was the only one that was like somewhat healthy and I had to go get food for people and stuff like that so.
Jerry Fish, JMP My mom said she was sick she couldn't even like stand up to make food.
ROBYN GODFREY So yeah I ordered food and pick it up for him and suddenly.
Jerry Fish, JMP yeah I don't want any part of it, if I can avoid it but.
boy true sounds like.
Even if you vaccinate.
ROBYN GODFREY yeah well, hopefully, you know your contract, I feel like I haven't heard of anybody who's had it recovered and vaccinated and so that I met, so I think I'm pretty good to go.
Jerry Fish, JMP let's see I'm supposed to there's.
No.
Na.Liu I sorry I forgot, this is the new computer, so we didn't have zoom, of course.
Jerry Fish, JMP Robin are we supposed to have the backgrounds behind us.
ROBYN GODFREY You can I think we're Okay, as long as there's not any sort of copyright issues or anything about seeing anything that would cause them.
Okay.
Jerry Fish, JMP Good Ryan, the legs is pretty decent where you're out there.
yeah it's looking better yeah.
ROBYN GODFREY Before you were you were very dark so it was like oh you can't see you.
Ryan.Bottos I brought in a rolling chair to put the laptop on so now it's a little before.
Jerry Fish, JMP perfect.
ROBYN GODFREY I gotta figure out how to hide myself here.
do this.
I'm just go through my little checklist here, make sure we're all good so everybody knows they're being recorded.
and make sure you have any any kind of phones or.
like an email and stuff is all off so that it won't pop up on the screen if you're sharing.
I'm.
struggling every day.
Na.Liu So so Jerry are you you're sharing.
Jerry Fish, JMP I'm not yet.
Na.Liu You will right.
Jerry Fish, JMP Yes, I will be yes.
ROBYN GODFREY Right.
Jerry Fish, JMP fiddling with my phones right now sure they're shut off.
ROBYN GODFREY Okay, so um.
yeah make sure your taskbar is like hidden and all that so nothing pops up.
I won't interrupt anything if you guys need to start over if there's an issue, then let me know and we can start over.
that's about it, you guys are ready, what I'll do is kind of.
Count you down we're recording so I'll count you down and then.
myself on you yeah.
Jerry Fish, JMP Okay, let me get back up here to the top.
Okay, and I wanted to start my watch over here, so I keep track see.
This.
stopwatch reset.
Jerry Fish, JMP No.
well.
Forget it I'll just keep an eye on the time.
ROBYN GODFREY Alright, so I'm gonna mute myself and then Jerry you guys can start whenever you're ready.
Jerry Fish, JMP Okay, and now you're gonna kick it off.
Na.Liu Okay.
Hello, everyone. So we would like to have this chance to present our study on the custom design solves mixture DOE problem at Fuchs Lubricants. My name is Na Liu. I'm a scientist at lubricants...Fuchs Lubricants Company.
So before we get into the design, I would like to start the talk with some background information of our application and the problem statement. So as part of our business at Fuchs Lubricants, we are developing new technologies and formulations for metal forming lubricant applications.
What is metal forming and where do we see the applications? I believe everybody know, you know, or like you know, may own
a passenger car, so when you look at a typical passenger car, they're roughly 70% of the components are made out different metals, so metals like steel, iron, aluminum, titanium, and other others.
And how those metals got into the shapes, that's through the metal forming process. So metal forming is one of the most important process really in the automotive industry.
And it really made it possible to work with different metals and gather the metal blanket and sheet into different to shape, sometimes very concise one
and at a very large range of dimensions.
And there are many ways the metals can be deformed into desired shapes, so when you...if we're really talking about really specific process, we're talking about bending, drawing, stamping,
extrusion, forging, etc. So for this study, we tried to do out to optimized formulation for metal stamping process.
So what is metal stamping? Metal stamping is one branch of the metal forming process. So the message is really thinking about, you know, you look at the inside of your car door.
And then it started from a metal sheet, really they call it a blank, so it involves some cutting, forming
of this blank into different shapes. You really can quickly and cleanly create solid metal parts and forms.
And you really use really specialized dies, those metal blanks into very precise forms. And in this process, you can imagine, there will be metal debris generation, there will be heat and wear. Without proper lubrication we can think about it will be
quality issues. It will be scrap, of course, as well as premature failing of the tools. So lubricants and corrosion preventatives are really needed in this process and the desired product must provide the right balance of a film thickness, cleanness,
friction reduction, as well as storage stability.
Next slide please.
For this study, our objective is to identify the optimal design space for dry film lubricants to achieve the characteristics we just mentioned above, especially on the...
especially want to improve the film hardness and the cleanability, and we identified many different additive groups, and we would like to put them into this design.
And for each of the additives they have unique treat ratet range to work with. So from here, I would like to hand over to Jerry to talk about design.
Jerry Fish, JMP Thank you, Na.
This part is of the presentation is going to talk about the script that we came up with to to handle these special constraints.
So, to review a little bit of where we started with this design, we had a categorical factor of the additive type. And here, we're just calling those Additive 1 through Additive 8. There were eight different levels where we started.
Then we had a mixture factor, M1, and this is, of course, is the fractional level defined by whichever additive type is selected.
So Additive 1 might be from 20 to 30%, Additive 2 might be from 10 to 15%.
Each of these could be individually added to the mixture, never two of them together, always individual. So in the script, we chose to create this as a continuous factor, and then we use disallowed combination constraints to
to limit the ranges. And we'll show you that in just a minute.
Let's see. We had four other mixture components. There was M1 that was defined by Additive 1, 2, 3, 4 up through 8, and then M2, M3 and M4 could be any other additives,
pressure, temperature, time. But we did not in this case, we just limited it to the four mixture factors.
First constraint we needed to deal with is that the mixture needed to add up to 100%, M1+M2+M3+M4 is 1.0. And JMP handles that automatically if you have a mixture...a standard mixture design.
Now, in our case, we had to do this via script with some special constraints, so we added
this disallowed combinations constraint, but it wasn't just that M1+M2+M3+M4 had to equal 1.000,
the JMP algorithm requires that you give it a little bit of flexibility. So what we did was say the sum of the four mixture components,
since this is a disallowed combination, can't be greater than 1.01 or it can't be less than .99. So it looks like it's kind of inside out, but that's that's the way that we defined this
this constraint on the total mixture.
Now the range that M1 can take depends on which additive type was selected. So here (these are sample ranges not the actual ranges that we ran),
but here Additive 1 could range between .5 and .6 of the mixture, for example. Now that, again, is a disallowed combination filter, so what we're saying is that if it's Additive 1,
the mixture can't be below...the M1 concentration can't be below .5 or greater than .6.
Or if the additive is Additive 2, then the mixture has to be between these levels or or or all the way down to the bottom.
This ended up being a screening to...well, it ended up being a screening test. If we were going to do that, we would only include the main effects in the model.
In this example, what I'm going to show is a Scheffe cubic model, which is typically used when you're doing a mixture design. It handles curvature and interactions.
I'm going to talk about that Scheffe cubic model in an upcoming blog post on the JMP Community, talking about where these terms come from.
the additive type, M1, M2, M3 and M4. There were four two-way interactions between additive and M1, the additive type and M1, the additive type and M2, and so forth.
There were six two-way interactions between each of the mixture levels, and there were four three-way interactions,
as shown.
And then the curvature is handled via these squared by a main effects term, so kind of a combination of a quadratic and a two-way interaction.
This handles the the cubic term as well, and like I said, I'll talk about the upcoming blog.
A couple of other design parameters. We used 100 starts, so this is where JMP will go out and start looking for a solution, find a solution, then it'll pick a different starting point, find another solution and find the best solution that it comes up with out of 100 starts.
Our test required 65, a sample size of 65. Actually, where that comes from is there are 56,
if you add them up, there are 56 coefficients in this model, 56 unknowns that have to be
calculated, so you have to have at least 56 independent trials. We bump that up to 65 just so we had some extra for looking at repeatability errors and goodness of fit and we did a D optimal design.
The way we started was to use the custom designer to generate a simple four-component mixture design.
And we saved that script to the new script window and that gave us our template that we could use then to add our disallowed combination script...script statements, and this is what that script look like.
This script will be attached to the presentation so everybody can get in and and have a look at it.
When we ran the script, one of the things we noticed, this plot shows if we chose Additive 1, the script requested that it come out between .5 and .6. so as we did that,
sure enough, the red dots indicate where the
actual data points fell within that range. But if you notice here for Additive 2, it didn't quite go down to the the requested .2 on the lower end.
And on Additive 3, it didn't quite go up all the way to .5.
I don't understand it. It did a very good job of covering it, don't really understand why it didn't cover the entire range, though, and I'm working with the developers to see if we can figure that out, make that a little more robust.
This is our...
our correlation matrix and shows that we've got mostly very low cross correlation between any of the terms in the model. There are a few terms up here. We can address this by increasing the number of trials, for example, and and pull those down a little bit.
A few other observations, occasionally a design would not converge. All I did was rerun it. Apparently the starting spots just weren't quite right, and so, sometimes it wouldn't convert. So
just restart the model and it went just fine. How did I determine that 56 trials was our minimum?
Well, I didn't really know how many coefficients there were in the model, didn't want to try to write it all out and add it up. If you set in trials to 2 or some very low value, JMP kind of ignores it and gives you the minimum number of trials, which turned out to be 56.
If we had done a full factorial design, there were eight different additive types times three levels of M1, so that we got a center point,
three of M2, three of M3, and three of M4, that's 648 trials, instead of the 65 we ended up with, so it was very efficient in the design.
If you're doing a a mixture design, you want to turn the intercept off. And a profiler trick, sometimes if these ranges of Additive 1 versus Additive 2 are too far apart,
the prediction profiler at the end of the analysis can can start having some issues, doesn't allow you to sweep from one additive type to the next. So a trick was to use the local data filter on additive type and then you could see the results fairly readily.
Now, with all that said, we came up with this complex script and the complex design and then the people at Fuchs decided that they needed to greatly reduce the complexity. They really were only looking at, in the end, at M1. They had seven different additives that they wanted to discover
the effect of. They wanted to screen through those. So it turned out to be a much, much simpler test. In fact, you could have done this as seven independent two-trial tests,
low and high in each...for each additive, and then had seven different slope intercepts that you determine. So it's like seven different experiments, a total 14 trials.
Or it could be modeled with regression techniques. Turns out, there are still 14 unknowns that had to be solved, so that's where we ended up.
And at this point, I'll turn it over to Ryan back at Fuchs to talk about the findings.
Ryan.Bottos Thanks, Jerry. I'm Ryan Bottos. I'm a research and development technician for Fuchs Lubricants Company and I'll be going over the testings and findings.
So we conducted three tests in order to determine the three factors most important in determining the effectiveness of each additive, respectively. First factor that needed to be tested was film brittleness, which was tested using a needle penetration,
where the softness of the additive can be determined by the depth that the needle penetrates and which gives us an estimate of film brittleness.
The second test factor that needed to be investigated was the stability of the product, which was done by centrifuging each product...each product with the additive
and then finding its separation index, which gives us a value for stability. Next slide, please.
The final factor that needed to be evaluated was the coefficient of friction, or CoF.
This was performed using a stamping lubricants testing machine, where each product is applied to a strip of metal,
which is then pressed between two dies at a given pressure and then pulled through the hydraulic tool. The amount of pull that it takes for the hydraulic to pull it through the dies is measured and this gives a measurement of lubricity,
which shows the amount of force needed.
Next slide.
Now we can see the results of the testing as they were presented on JMP. A generalized regression was used in order to enable the detection limit function.
This allowed us to identify trends of each additive in the product compared to the weight percentage of each. As you can see, the separation index for each additive increased with the increasing weight percentage of each additive in the product, thus decreasing the stability of the product.
For film brittleness, most of the products became softer with the increases in additive weight percentage, with Additive 3 showing the most significant change per weight percent.
Additive 5 results, however, were out of spec and therefore could not be tested, and for that reason, they were removed from the model.
The coefficient of friction showed analogous results with the two previous tests, with the coefficient increasing as additive weight
increased.
This indicates a loss in lubricity as additive weight is increased. As you can see in the chart, Additive 3 remained the most consistent across weight percentages.
Next slide, please.
Using the results of the testing, along with the data from the generalized regression, we were able to accumulate the data on the prediction profiler. Here, we were able to adjust the importance of each factor to better evaluate the additives in our project.
In our project, film resilience was the most valuable, so products that performed best in this area were higher valued over those that were more stable or more lubricious.
Using this model, we were able to determine that Additive 3 at a concentration of 5.7% is most likely to give us optimal results.
Finally, we are going to upload these files, along with the recording onto the site for you. And on behalf of Jerry, Na, and I, thank you for your time.

 

Comments

Thank you @JerryFish for the contribution here with Na and Ryan from FUCHS LUBRICANTS CO!

 

This project highlights a very valuable consideration around constraints specification using the Disallowed Combinations Script, and I think it's worth highlighting here for increased visibility for our users. It also demonstrates how we can specify a Sheffe Cubic model and a mixture constraint with a more flexible tool (the disallowed combinations feature), if the user knows how to use it! 

 

So, running the script you provided (2021-US-30MP-896 - Final Script.jsl) in the attached to generate this design:

 

 

DOE(
	Custom Design,
	{
		Add Response( Maximize, "Y", ., ., . ),
		Add Factor( Categorical, {"Additive 1", "Additive 2", "Additive 3", "Additive 4", "Additive 5", "Additive 6", “Additive 7”, “Additive 8” }, "Additive", 0 ),
		Add Factor( Continuous, 0, 1, "M1", 0 ), 
		Add Factor( Continuous, 0, 1, "M2", 0 ),
		Add Factor( Continuous, 0, 1, "M3", 0 ), 
		Add Factor( Continuous, 0, 1, "M4", 0 ),
	
		// Manually enter all main effects
		Add Term( {1, 1} ), // Additive main effect
		Add Term( {2, 1} ), // M1 main effect
		Add Term( {3, 1} ), // M2 main effect
		Add Term( {4, 1} ), // M3 main effect
		Add Term( {5, 1} ), // M4 main effect
	
		// Manually enter all 2-way interactions between mixture components
		Add Term( {2, 1}, {3, 1} ), // M1*M2 interaction
		Add Term( {2, 1}, {4, 1} ), // M1*M3 interaction
		Add Term( {2, 1}, {5, 1} ), // M1*M4 interaction
		Add Term( {3, 1}, {4, 1} ), // M2*M3 interaction
		Add Term( {3, 1}, {5, 1} ), // M2*M4 interaction
		Add Term( {4, 1}, {5, 1} ), // M3*M4 interaction
	
		// Manually enter all interactions between Additive and mixture components
		Add Term( {1, 1}, {2, 1} ), // Additive*M1 interaction
		Add Term( {1, 1}, {3, 1} ), // Additive*M2 interaction
		Add Term( {1, 1}, {4, 1} ), // Additive*M3 interaction
		Add Term( {1, 1}, {5, 1} ), // Additive*M4 interaction
		
		// Manually enter all 3-way interactions
		Add Term( {2, 1}, {3, 1}, {4, 1} ), // M1*M2*M3 3-way interaction
		Add Term( {2, 1}, {3, 1}, {5, 1} ), // M1*M2*M4 3-way interaction
		Add Term( {2, 1}, {4, 1}, {5, 1} ), // M1*M3*M4 3-way interaction
		Add Term( {3, 1}, {4, 1}, {5, 1} ), // M2*M3*M4 3-way interaction
		
		// Manually enter appropriate Scheffe Cubic interactions
		Add Term( {2, 2}, {3, 1} ), // M1^2*M2 interaction
		Add Term( {2, 2}, {4, 1} ), // M1^2*M3 interaction
		Add Term( {2, 2}, {5, 1} ), // M1^2*M4 interaction
		Add Term( {3, 2}, {4, 1} ), // M2^2*M3 interaction
		Add Term( {3, 2}, {5, 1} ), // M2^2*M4 interaction
		Add Term( {4, 2}, {5, 1} ), // M3^2*M4 interaction

		
		// Now add the disallowed combinations:
		Disallowed Combinations
			(
				(M1 + M2 + M3 + M4 > 1.01 | M1 + M2 + M3 + M4 < 0.99) | 
				(Additive == "Additive 1" & (M1 < 0.5 | M1 > 0.6)) | 
				(Additive == "Additive 2" & (M1 < 0.2 | M1 > 0.3)) | 
				(Additive == "Additive 3" & (M1 < 0.2 | M1 > 0.5)) | 
				(Additive == "Additive 4" & (M1 < 0.1 | M1 > 0.3)) | 
				(Additive == "Additive 5" & (M1 < 0.0 | M1 > 0.2)) | 
				(Additive == "Additive 6" & (M1 < 0.2 | M1 > 0.4)) |
				(Additive == "Additive 7" & (M1 < 0.3 | M1 > 0.5)) |
				(Additive == "Additive 8" & (M1 < 0.1 | M1 > 0.4))
			), 

		Set Random Seed( 0 ), 
		Number of Starts(100 ), 	
		Set Sample Size(65),
		Optimality Criterion( Name( "Make D-Optimal Design" ) ),
		Simulate Responses( 0 ), 
		Save X Matrix( 0 ), 
		Make Design}
);

 

We obtain the following:

PatrickGiuliano_0-1691538685283.png

The result bears a few things out that I think are worth highlighting. 

 

For the Disallowed Combinations script, in order for us to specify that " M1 + M2 + M3 + M4 = 1" we first have to understand that the script is for Dis-allowed combinations, which means that the way we specify it is using conditional logic (and/or and inequality symbols) that is basically the opposite of what we want to specify.  

 

So logically, that would imply:

M1 + M2 + M3 + M4 != 1  

 

But we're not done and in fact, this won't work.  

 

The next thing we have to understand is that the Custom Designer cannot converge on a value of exactly 1 (or at least it is not likely to).  For this reason, we need to add some "tolerance" to the constraint specification target of 1.00.  To do this, we have to say logically that the sum of M1 to M4 must be equal to not less than some amount (-delta) below one, and not more than some amount (+delta) above 1.  Taking into account what we learned about dis-allowance,  this would look like this, where suppose we set that delta = 0.01 (a number that we choose and bearing in mind that the smaller the delta, the harder JMP will have to search the space to find a valid design solution that converges). So, this turns the constraint - for the purposes of the Disallowed Combinations script specification - into the following: 

 

M1 + M2 + M3 + M4 > 1.01 | M1 + M2 + M3 + M4 < 0.99

 

"|" is the OR Operator (which implies AND) and the inequality symbols are flipped in order to get what we want due to the dis-allowance. 

 

PatrickGiuliano_1-1691538710100.png

 

The other thing I think is well-worth mentioning here is that there are multiple constraints here, and when that's the case the specification in the disallowed combinations script can be quite complicated. 

Notice how, when we are stringing them together here, we are using "OR" operators which logically imply "AND."

Also notice that for example, for the constraint:

 

(Additive == "Additive 1" & (M1 < 0.5 | M1 > 0.6))

 

We are actually telling the custom designer that when additive equals Additive 1, Then M1 should be between 0.5 and 0.6.  In this case the AND Operator (ampersand, i.e. "&") works like a then statement, and the double equals sign for Additive == Additive 1 actually specifies the level of Additive equal to 1 (which kind of contradicts our thinking a bit with respect to how we specified the constraint above on M1 to M4 summing to 1. 

 

So, the logical operators can work quite differently in different situations, and it also depends on whether the variables we are specifying on are Categorical or Continuous.

 

For this reason, I like to take the approach of specifying one constraint at a time, generating the design, demonstrating that it's working the way I intend it to, and then putting them together incrementally (first two conditions, then then three, and so on).