テクニカル サポートでは、JMP の実験計画プラットフォームでの因子制約の使用に関する質問を頻繁に受けます。線形制約、許可されていない組み合わせフィルター、許可されていない組み合わせスクリプトの 3 つのオプションにより、設計空間を制限することができます。ただし、結果として得られる設計が定義した制約に従っていないという報告をユーザーから受けることがあります。
このブログ投稿では、特に、禁止された組み合わせのスクリプトの使用について説明します。これは、禁止された組み合わせのフィルターよりもユーザーフレンドリーであるため、通常はユーザーに推奨しています。線形制約オプションはかなり簡単ですが、それに関するガイダンスを見つけることができます。ここ必要であれば。
禁止された組み合わせのスクリプトオプションを使用すると、JSLスクリプトを使用して設計空間の制限を定義できます。覚えておくべき重要な点は、どの因子レベルの組み合わせが禁止されるかを指定することです。ない設計で許可されている組み合わせ。入力した JSL スクリプトはブール式として評価される必要があります。式が true の場合、その組み合わせは設計で発生しません。スクリプトは線形形式である必要がないため、非線形制約を指定できるという利点もあります。関数を使用することもできます (この投稿の後半の例の 1 つで説明されているように、インジケータ関数は特に便利です)。
許可されていない組み合わせスクリプトは、連続、離散数値、およびカテゴリ要因と組み合わせて使用できますが、混合要因またはブロック要因ではサポートされていません。混合シナリオで制限を定義する別の方法については、後の例で説明します。
式では、連続数値因子と離散数値因子のレベルは数値によって参照されます。カテゴリ因子のレベルは、関連付けられた順序値 (1、2、3 など) または名前付きレベル値によって参照できます。
2 つの連続因子、1 つの 4 レベルの離散数値因子、および 1 つの 3 レベルのカテゴリ因子を含むカスタム デザインを検討します。
上記の要因を使用して開始 DOE ダイアログを再現するスクリプトは次のとおりです。
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Continuous, -1, 1, "X1", 0 ),
Add Factor( Continuous, 100, 105, "X2", 0 ),
Add Factor( Discrete Numeric, {10, 20, 30, 40}, "X3", 0 ),
Add Factor( Categorical, {"A", "B", "C"}, "X4", 0 ),
Add Term( {1, 0} ), Add Term( {1, 1} ),
Add Term( {2, 1} ), Add Term( {3, 1} ), Add Potential Term( {3, 2} ),
Add Potential Term( {3, 3} ), Add Term( {4, 1} ),
Add Alias Term( {1, 1}, {2, 1} ), Add Alias Term( {1, 1}, {3, 1} ),
Add Alias Term( {1, 1}, {4, 1} ), Add Alias Term( {2, 1}, {3, 1} ),
Add Alias Term( {2, 1}, {4, 1} ), Add Alias Term( {3, 1}, {4, 1} ),
Set Sample Size( 12 ), Simulate Responses( 1 ), Save X Matrix( 0 )}
);
たとえば、因子 X1 が値 1 を取り、同時に因子 X4 が値 A を取るという実行が設計で発生しないとします。この単純な許可されていない組み合わせのスクリプトは次のように記述されます。
X1 == 1 & X4 == 1
または
X1 == 1 & X4 == "A"
最初の式では、X4 = A の値に関連付けられた序数値を使用し、2 番目の式では単に文字値を参照します。どちらでもかまいません。この式により、実行時に X1 = 1 と X4 = A が同時に発生することがなくなります。
スクリプトを実行した後、「因子制約の定義」セクションの「許可されていない組み合わせスクリプトの使用」の横にあるラジオ ボタンを選択し、上記の式のいずれかを入力します。
スクリプトに設計空間の制限を追加するには、OR (|) 演算子を使用します。これは、設計に式 1 の基準を満たす実行を含めることができない場合に式を区切るために必要です。または式2、または式3など
同じ設計で、因子 X3 の値が 3 の場合、因子 X1 と X2 の合計が 102 を超えることはできないとします。この許可されていない組み合わせは次のように記述されます。
((X1 + X2) > 102 & X3 == 30)
| 演算子を使用すると、許可されない組み合わせの完全なスクリプトは次のように記述されます。
(X1 == 1 & X4 == 1) |
((X1 + X2) > 102 & X3 == 30)
設計を行った後、JMP が以下のようにスクリプトを再フォーマットし、カテゴリ因子レベルを文字値で表し、解析によって不要な括弧を削除する場合があることに気付くでしょう。

ユーザーからよく寄せられるシナリオは次のとおりです。
1) 混合因子では許可されていない組み合わせがサポートされていないため、混合設計の設計空間に対する制限をどのように指定すればよいですか?
混合因子の代わりに離散数値因子や連続因子を使用すると、これに対処する方法はいくつかあります。まず、不許可の組み合わせスクリプトに等式制約を課すことができます(その他の必要な制約を追加します)。JMPは、厳密な等式制約(!=演算子の使用、または1つの条件での<および>の厳密な不等式の使用など)を使用して実行可能な設計を見つけることができない可能性があります。したがって、因子値の合計が近い1.
混合因子が 3 つあり、混合合計が 1 であるとします。因子の 1 つ (X1) は、0、0.25、0.5、0.75、1 の離散レベルのみを取ることができます。他の 2 つの因子 (X2 と X3) は、0 から 1 までの間の任意の値を取ることができます。したがって、最初の因子を 5 レベルの離散数値因子として定義し、他の 2 つを連続因子として定義するのが最も理にかなっています。3 つの因子の合計がほぼ 1 になるように、疑似等式制約を次のように指定できます。
X1 + X2 + X3 > 1.001 | X1 + X2 + X3 < 0.999
合計が 1 の 1000 分の 1 以内に制限されます。この質問の原動力は、混合設計のコンテキストで因子制約を指定できるようにすることであると考えて、設計で X3 の値が X2 の値よりも大きくなるのを防ぎたいとします。この場合、許可されていない組み合わせのスクリプト フィールドに入力する完全な式は次のようになります。
X1 + X2 + X3 > 1.001 | X1 + X2 + X3 < 0.999 | X3 > X2
このデザインの例を作成するには、以下の JSL スクリプトを実行します。
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Discrete Numeric, {0, 0.25, 0.5, 0.75, 1}, "X1", 0 ),
Add Factor( Continuous, 0, 1, "X2", 0 ), Add Factor( Continuous, 0, 1, "X3", 0 ),
Set Random Seed( 12345 ), Number of Starts( 1000 ), Add Term( {1, 1} ),
Add Term( {1, 2} ), Add Term( {1, 3} ), Add Term( {1, 4} ), Add Term( {2, 1} ),
Add Term( {3, 1} ), Add Alias Term( {1, 1}, {2, 1} ), Add Alias Term( {1, 1}, {3, 1} ),
Add Alias Term( {2, 1}, {3, 1} ), Set Sample Size( 20 ),
Disallowed Combinations( X1 + X2 + X3 > 1.001 | X1 + X2 + X3 < 0.999 | X3 > X2 ),
Make Design}
);
3 つの因子の値の合計は正確に 1 にならないため、結果の設計テーブルで連続因子の値の 1 つをわずかに調整する必要があります。
元の質問に対する 2 つ目のより明確なアプローチは、最初のカスタム デザイン ダイアログに因子 X1 (5 レベルの離散数値因子) と X2 (0 から 1 の範囲の連続因子) のみを入力することです。X3 の値は、数式 1 - X1 - X2 を使用してデザイン テーブルで簡単に生成できます。因子 X1 と X2 のみを含む最初のデザイン設定では、許可されていない組み合わせスクリプトを使用して、X1 と X2 の合計が 0 未満でも 1 より大きくもならないようにします。また、ここでも、X3 が X2 より大きくならないという制限を追加します。X3 = 1 - X1 - X2 であるため、X3 > X2 制限を 2*X2 + X1 < 1 に書き換えて、OR 演算子を使用して式に含めることができます。
このシナリオでは、許可されない完全な組み合わせのスクリプトは次のようになります。
X1 + X2 > 1 | X1 + X2 < 0 | 2 * X2 + X1 < 1
このサンプルデザインを作成するための完全なスクリプトは次のとおりです。
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor(
Discrete Numeric,
{0, 0.25, 0.5, 0.75, 1},
"X1",
0
), Add Factor( Continuous, 0, 1, "X2", 0 ),
Number of Starts( 1000 ), Add Term( {1, 0} ), Add Term( {1, 1} ), Add Potential Term( {1, 2} ),
Add Potential Term( {1, 3} ), Add Potential Term( {1, 4} ), Add Term( {2, 1} ),
Add Alias Term( {1, 1}, {2, 1} ), Set Sample Size( 20 ),
Disallowed Combinations( X1 + X2 > 1 | X1 + X2 < 0 | 2 * X2 + X1 < 1 ),
Simulate Responses( 1 ), Save X Matrix( 0 ), Make Design}
);
上記の両方のアプローチでは、設計表の因子の列プロパティは、設計の真の混合特性を反映するために最後に変更する必要があります。ガイダンスに基づいて手動でプロパティを追加できます。こちらのドキュメントをご覧くださいただし、より迅速な方法は、実際の混合係数 (許可されていない組み合わせは不要) を使用して別のカスタム デザインを作成し、テーブル (テンプレートとして) を作成することです。次に、デザインをその「テンプレート」テーブルにコピーします。これにより、混合係数の適切な列プロパティが存在することが保証されます。
2) 1 回の実験で「アクティブ」にできる因子の最大数を指定するにはどうすればよいでしょうか。因子が 6 つあるとします。ただし、実験実行ごとに 0 より大きい値を取ることができるのはそのうちの 3 つまでです。レベル数が異なる 6 つの個別の数値因子 (X1 - X6) を定義することにします。
覚えておくべき重要なツールは、不許可の組み合わせのスクリプトが関数を受け入れるという点です。このシナリオでは、インジケーター関数が重要です。たとえば、インジケーター関数 (X1 > 0) は、X1 が 0 より大きい場合は 1 に解決され、そうでない場合は 0 に解決されます。したがって、6 つの要因すべてについてインジケーター関数を合計し、合計が 3 より大きい場合を除外すると、1 回の実行で 3 つ以上の要因がアクティブにならないように設計スペースが制限されます。不許可の組み合わせのスクリプトは次のように記述されます。
(X1 > 0) + (X2 > 0) + (X3 > 0) + (X4 > 0) + (X5 > 0) + (X6 > 0) > 3
また、このサンプル デザインは次の JSL スクリプトを使用して作成できます。
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X1", 0 ),
Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X2", 0 ), Add Factor( Discrete Numeric, {0, 1}, "X3", 0 ),
Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X4", 0 ), Add Factor( Discrete Numeric, {0, 1, 5}, "X5", 0 ),
Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X6", 0 ), Add Term( {1, 0} ), Add Term( {1, 1} ), Add Potential Term( {1, 2} ),
Add Potential Term( {1, 3} ), Add Term( {2, 1} ), Add Potential Term( {2, 2} ), Add Potential Term( {2, 3} ),
Add Term( {3, 1} ), Add Term( {4, 1} ), Add Potential Term( {4, 2} ), Add Potential Term( {4, 3} ), Add Term( {5, 1} ),
Add Potential Term( {5, 2} ), Add Term( {6, 1} ), Add Potential Term( {6, 2} ), Add Potential Term( {6, 3} ),
Add Alias Term( {1, 1}, {2, 1} ), Add Alias Term( {1, 1}, {3, 1} ), Add Alias Term( {1, 1}, {4, 1} ),
Add Alias Term( {1, 1}, {5, 1} ), Add Alias Term( {1, 1}, {6, 1} ), Add Alias Term( {2, 1}, {3, 1} ),
Add Alias Term( {2, 1}, {4, 1} ), Add Alias Term( {2, 1}, {5, 1} ), Add Alias Term( {2, 1}, {6, 1} ),
Add Alias Term( {3, 1}, {4, 1} ), Add Alias Term( {3, 1}, {5, 1} ), Add Alias Term( {3, 1}, {6, 1} ),
Add Alias Term( {4, 1}, {5, 1} ), Add Alias Term( {4, 1}, {6, 1} ), Add Alias Term( {5, 1}, {6, 1} ), Set Sample Size( 16 ),
Disallowed Combinations( (X1 > 0) + (X2 > 0) + (X3 > 0) + (X4 > 0) + (X5 > 0) + (X6 > 0) > 3 ),
Save X Matrix( 0 ), Make Design}
);
スクリプトを実行した後、設計内のすべての実行で少なくとも 3 つの要素の値がゼロになることに注意してください。
これらのシナリオのいずれにおいても、JMPアラート「最適設計が収束に失敗しました」が表示された場合は、制約が厳しすぎる可能性があります。可能であれば、制約を緩めて、座標交換アルゴリズムデザインを見つける可能性が高くなります。また、開始回数および/または、想定モデル内の項の推定可能性を変更するもし可能ならの代わりに必要収束が達成できるかどうかを確認します。
いつものように、JMP の設計空間制限オプションの使用について質問がある場合、または意図した制約を考慮すると設計が合理的でない実行を生成する場合は、テクニカル サポートまでお気軽にお問い合わせください。