需要对具有复杂约束的定制 DOE 提供帮助。大家好,JMP社区,
我正在定制 DOE。我有 4 种成分:X1、X2、X3 和 X4。附图中显示了每种成分的最低和最高含量。

我有以下需要纳入的限制:
- 每个配方中的成分总浓度不能低于 9。
- 每个配方中的成分总浓度不能高于18。
- 每个食谱最多只能有 3 种原料。
因此,我在“使用不允许的组合脚本”下指定了上述约束,如下所示:

X1 + X2 + X3 + X4 < 9 对应于第一个约束:每个配方中的总成分浓度不能低于 9。
X1 + X2 + X3 + X4 > 18 对应于第二个约束:每个配方中的总成分浓度不能高于 18。
(X1 * X2 * X3 * X4 > 0) 对应第 3 个约束:每个菜谱最多只能有 3 种原料。
我正在指定一个添加三次和四次项的响应曲面模型,如下所示:

并且,我为该设计指定了用户指定的 50 次运行。
但是,我在生成设计时遇到错误,如下所示:

经过一些故障排除后,我能够成功生成仅具有前两个约束的设计(X1 + X2 + X3 + X4 < 9 | X1 + X2 + X3 + X4 > 18)。我似乎无法在任何配方中加入不超过 3 种成分的第三个约束。我是否错误地指定了第三个约束?请帮忙。我不知道如何解决这个问题。
提前致谢。
实验设计回复:需要对具有复杂约束的自定义 DOE 提供帮助。补充说明:
即使仅指定第 3 个约束,我也遇到错误: (X1 * X2 * X3 * X4 > 0) 。这个表达式有什么问题吗?
回复:需要对具有复杂约束的自定义 DOE 提供帮助。你好@stat_ranger ,
欢迎加入社区!
@stat_ranger写道:我有以下需要纳入的限制:
- 每个配方中的成分总浓度不能低于 9。
- 每个配方中的成分总浓度不能高于18。
- 每个食谱最多只能有 3 种原料。
我可以问一下你第三个约束背后的原因吗?如果有实际原因(例如溶解度),你可以保留它,但除此之外,我不会事先限制实验空间,但更有可能事后这样做。这有助于增加推理空间,找到最优值,并确保你没有探索有希望的领域,以及确保你的第三个约束是可行的(如果没有这 4 个组件,也许你不会达到最优值)。
您的设计定义似乎存在一些错误:
- 您可以将“指定线性约束”用于第一和第二个约束,设置起来会容易得多:

- 您的第三个约束不符合您想要执行的操作,并且在您的因素之间创建了依赖关系(因此出现错误消息)。如果您想要进行最多 3 个组件的实验,请指定一个更简单的模型,最多包含三阶项(而不是更高)。这样,设计生成将主要为每个实验创建 1 到 3 个组件的运行(在我生成的设计中的 28 个实验中,只有 5 个有 4 个组件)。

- 最后,如果您对实验空间的预测感兴趣,可以通过单击自定义设计、“最优标准”和“制作 I 最优设计”旁边的红色三角形将最优标准设置为“I 最优”。有关最优标准的更多信息,请访问此处: 最优标准
然后选择您想要的运行次数,通过此设置,您应该在设计中尊重前 2 个约束,没有错误消息,并且大多数运行都有 2 到 3 个组件:

以下是生成设计(和附加表)的脚本:
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Continuous, 0, 16, "X1", 0 ),
Add Factor( Continuous, 0, 16, "X2", 0 ),
Add Factor( Continuous, 0, 16, "X3", 0 ),
Add Factor( Continuous, 0, 4, "X4", 0 ), Set Random Seed( 2088020479 ),
Number of Starts( 719 ), Add Constraint( [-1 -1 -1 -1 -9, 1 1 1 1 18] ),
Add Term( {1, 0} ), Add Term( {1, 1} ), Add Term( {2, 1} ), Add Term( {3, 1} ),
Add Term( {4, 1} ), Add Term( {1, 1}, {2, 1} ), Add Term( {1, 1}, {3, 1} ),
Add Term( {1, 1}, {4, 1} ), Add Term( {2, 1}, {3, 1} ),
Add Term( {2, 1}, {4, 1} ), Add Term( {3, 1}, {4, 1} ), Add Term( {1, 2} ),
Add Term( {2, 2} ), Add Term( {3, 2} ), Add Term( {4, 2} ),
Add Term( {1, 1}, {2, 1}, {3, 1} ), Add Term( {1, 1}, {2, 1}, {4, 1} ),
Add Term( {1, 1}, {3, 1}, {4, 1} ), Add Term( {2, 1}, {3, 1}, {4, 1} ),
Add Term( {1, 3} ), Add Term( {2, 3} ), Add Term( {3, 3} ), Add Term( {4, 3} ),
Set Sample Size( 28 ), Optimality Criterion( "Make I-Optimal Design" ),
Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
)
如果您的第三个约束是必要的,那么有一些解决方法可以帮助您,例如通过生成大量设计运行,删除具有 4 个组件的设计运行,然后使用此筛选表作为最终设计创建的候选集。请参阅候选集设计:根据问题定制 DOE 约束 (2021-EU-30MP-78... - JMP 用户社区
希望这些建议能帮助你,
回复:需要对具有复杂约束的自定义 DOE 提供帮助。第三个限制的原因是什么?
回复:需要对具有复杂约束的自定义 DOE 提供帮助。听起来你想要一个像这样的混合设计

16/18=.89
在模型中,选择全部 4 个项,然后单击 Scheffe Cubic
您将获得像这样的 30 次运行设计

一旦你分析了实验,你就可以模拟所有不同的组合

回复:需要对具有复杂约束的自定义 DOE 提供帮助。你好@Byron_JMP ,
我也考虑过使用混合设计,但由于 X1+X2+X3+X4 的总量不固定(应该在 9 到 18 个单位之间),所以我改用了最佳因子设计。
混合设计可以成为此用例的一个很好的替代方案,通过添加第 5 个连续因子,使成分总量在 9 到 18 之间变化:

指定 Scheffé Cubic 模型并为 X5(总量)添加二次效应,可以实现符合所有约束的有趣设计:

(第 25 行的 X4 值可以切换为 0 而无需进行大的变化,以避免在真正需要时在混合物中使用 4 种组件)。
生成设计的脚本:
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor( Mixture, 0, 0.89, "X1", 0 ),
Add Factor( Mixture, 0, 0.89, "X2", 0 ), Add Factor( Mixture, 0, 0.89, "X3", 0 ),
Add Factor( Mixture, 0, 0.22, "X4", 0 ),
Add Factor( Continuous, 9, 18, "Total Quantity", 0 ),
Set Random Seed( 1320459420 ), Number of Starts( 743 ), Add Term( {1, 1} ),
Add Term( {2, 1} ), Add Term( {3, 1} ), Add Term( {4, 1} ), Add Term( {5, 1} ),
Add Term( {1, 1}, {2, 1} ), Add Term( {1, 1}, {3, 1} ),
Add Term( {1, 1}, {4, 1} ), Add Term( {2, 1}, {3, 1} ),
Add Term( {2, 1}, {4, 1} ), Add Term( {3, 1}, {4, 1} ),
Add Term( {1, 1}, {2, 1}, {3, 1} ), Add Term( {1, 1}, {2, 1}, {4, 1} ),
Add Term( {1, 1}, {3, 1}, {4, 1} ), Add Term( {2, 1}, {3, 1}, {4, 1} ),
Add Term( {1, 1}, {2, 1} ), Add Term( {1, 1}, {3, 1} ),
Add Term( {2, 1}, {3, 1} ), Add Term( {1, 1}, {4, 1} ),
Add Term( {2, 1}, {4, 1} ), Add Term( {3, 1}, {4, 1} ), Add Term( {5, 2} ),
Add Alias Term( {1, 1}, {5, 1} ), Add Alias Term( {2, 1}, {5, 1} ),
Add Alias Term( {3, 1}, {5, 1} ), Add Alias Term( {4, 1}, {5, 1} ),
Set Sample Size( 30 ), Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
)
并附有数据表。
希望本次讨论能对@stat_ranger有所帮助,
回复:需要对具有复杂约束的自定义 DOE 提供帮助。你好,维克多,
非常感谢您对我的问题做出的及时详细回复。这帮助我构思出了理想的设计。第三个限制是成分不超过 3 种,这是出于后勤原因;与物理限制(例如凝固)无关。
一个简单的问题:你如何评价混合设计的质量?
再次感谢您!
回复:需要对具有复杂约束的自定义 DOE 提供帮助。感谢 Byron 的建议。您的建议为 Victor 的进一步发展奠定了重要基础。因此,我很感激您的建议。非常感谢您抽出时间回复。
回复:需要对具有复杂约束的自定义 DOE 提供帮助。你好,马克,
第三个限制是成分不超过 3 种,这是出于逻辑原因,与物理限制(例如凝固等)无关。
回复:需要对具有复杂约束的自定义 DOE 提供帮助。你好@stat_ranger ,
好的,感谢您澄清这 3 个组件背后的逻辑原因。
混合设计通常是优化设计,您尝试根据成分比率预测和优化响应。因此,我将使用评估设计平台并查看与预测性相关的信息,例如预测方差概况、 设计空间图的分数,以及设计诊断,例如 G 效率和预测的平均方差(与 I 效率相关)。此评估的目标是了解所用设计的预测性能。
请注意,如果没有任何参考设计/基准,评估设计可能会很困难,因此我建议创建多个设计并使用比较设计平台来更好地评估每个设计的优缺点。您可以改变运行次数、模型的复杂性等...
希望这个快速回答能帮助你,