谢谢@杰瑞鱼感谢 FUCHS LUBRICANTS CO 的 Na 和 Ryan 的贡献!
该项目强调了关于使用不允许的组合脚本的约束规范的非常有价值的考虑因素,我认为值得在这里强调,以提高用户的可见性。 它还演示了如何使用更灵活的工具(不允许的组合功能)指定 Sheffe Cubic 模型和混合约束(如果用户知道如何使用它)!
因此,运行您提供的脚本( 2021-US-30MP-896 - Final Script.jsl)在附件中生成此设计:
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}
);
我们得到以下信息:

结果证实了一些我认为值得强调的事情。
对于不允许的组合脚本,为了让我们指定“M1 + M2 + M3 + M4 = 1”,我们首先必须了解该脚本用于迪斯-允许的组合,这意味着我们指定它的方式是使用条件逻辑(和/或和不等式符号),即基本上与我们想要指定的相反。
从逻辑上讲,这意味着:
M1 + M2 + M3 + M4 != 1
但我们还没有完成,事实上,这是行不通的。
接下来我们必须了解的是,自定义设计器无法收敛于恰好为 1 的值(或者至少不可能)。为此,我们需要为 1.00 的约束规范目标添加一些“容差”。为此,我们必须从逻辑上说,M1 到 M4 的总和必须等于或不小于低于 1 的某个值 (-delta),并且不超过高于 1 的某个值 (+delta)。了解了禁止许可,这看起来像这样,假设我们设置 delta = 0.01(一个数字我们选择并且请记住,增量越小,JMP 就越难搜索空间以找到收敛的有效设计解决方案)。 因此,出于禁止组合脚本规范的目的,这将约束变为以下形式:
M1 + M2 + M3 + M4 > 1.01 | M1 + M2 + M3 + M4 < 0.99
“|”是 OR 运算符(意味着 AND),由于不允许,不等式符号被翻转以获得我们想要的结果。

我认为这里值得一提的另一件事是,这里存在多个约束,在这种情况下,不允许的组合脚本中的规范可能会非常复杂。
请注意,当我们在这里将它们串在一起时,我们使用“OR”运算符,它在逻辑上意味着“AND”。
另请注意,例如,对于约束:
(添加剂==“添加剂1”&(M1 < 0.5 | M1 > 0.6))
我们实际上是在告诉定制设计师,当添加剂等于添加剂1 , 然后M1 应在 0.5 至 0.6 之间。在这种情况下,AND 运算符(& 符号,即“&”)的工作方式类似于然后语句,Additive == Additive 1 的双等号实际上指定了 Additive 的级别平等l 到 1(这与我们如何指定上述 M1 到 M4 总和为 1 的约束的想法有点矛盾。
因此,逻辑运算符在不同情况下的工作方式可能会有很大不同,这还取决于我们指定的变量是分类变量还是连续变量。
出于这个原因,我喜欢采取一次指定一个约束、生成设计、证明它按照我预期的方式工作,然后逐步将它们组合在一起的方法(前两个条件,然后是三个,依此类推)在)。