謝謝@傑瑞魚感謝 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 的約束的想法有點矛盾。
因此,邏輯運算符在不同情況下的工作方式可能會有很大不同,這還取決於我們指定的變量是分類變量還是連續變量。
出於這個原因,我喜歡採取一次指定一個約束、生成設計、證明它按照我預期的方式工作,然後逐步將它們組合在一起的方法(前兩個條件,然後是三個,依此類推)在)。