公開日: 04/01/2021

確率的最適化の例

ここでは、Box and Draper(2007)の著作から借用し、アレンジした「Stochastic Optimization.jmp」データテーブルを使います。ある化学反応プロセスで、化学物質Aが化学物質B、化学物質Bが化学物質Cに変化するとしましょう。化学物質Bの量は、反応時間と反応温度の関数として表されます。化学物質Bの収率を最適にする因子設定を、プロファイルとシミュレータを使用して探してみましょう。

図8.13 化学反応 

Image shown here

この反応では化学物質Bの収率はアレニウスの法則に従っているとします。「収率」列に収率の計算式が保存されています。計算式は、「反応時間」と反応率の「k1」および「k2」の関数です。反応率は、「反応温度」(単位はケルビン)と既知の物理定数、θ1, θ2, θ3, θ4の関数です。そのため、「収率」「反応時間」「反応温度」の関数ということになります。

満足度関数を用いた収率の最大化

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Stochastic Optimization.jmp」を開きます。

2. [グラフ]>[プロファイル]を選択します。

3. 「収率」を選択し、[Y, 予測式]をクリックします。

4. [中間計算式の展開]をクリックし、[OK]をクリックします。

満足度関数を有効にした予測プロファイルが表示されます。満足度関数については、満足度プロファイルと最適化を参照してください。

5. 「予測プロファイル」の赤い三角ボタンをクリックし、[最適化と満足度]>[満足度の最大化]を選択します。

すると、「収率」が最大化され、グラフの「反応時間」「反応温度」の値が最適値に設定されます。

図8.14 「収率」の最大値 

Image shown here

「収率」の値が最大(およそ0.62)になるのは、「反応時間」が0.115、「反応温度」が540度のときです。つまり、温度が高く、時間が短いのが最適と言えます(この最適化の計算においては、初期値が乱数によって決められているので、実際の結果は異なるかもしれません)。

最大収率の不適合率シミュレーション

実際の製造環境では、工程の入力因子を常に正確に制御できるとは限りません。入力因子(「反応時間」「反応温度」)に確率変動があった場合、「収率」にはどのような影響が及ぶでしょうか。さらに、「収率」に仕様限界がある場合、仕様外となる製品の割合は何パーセントでしょうか。「シミュレータ」を使えば、「反応時間」「反応温度」におけるばらつきによって、「収率」がどの程度ばらつき、そして不適合率がどれぐらいになるかを調べることができます。

1. 「予測プロファイル」の赤い三角ボタンをクリックし、[最適化と満足度]>[満足度関数]の選択を取り消します。

2. 「予測プロファイル」の赤い三角ボタンをクリックし、[シミュレータ]を選択します。

3. 「反応温度」に対して[ランダム]を選択し、平均=540、標準偏差=1である[正規 加重]に設定します。

4. 「反応時間」に対しても[ランダム]を選択し、平均=0.115、標準偏差=0.03をもつ[正規 加重]に設定します。

5. 「繰り返し数」の値を15,000に変更します。

図8.15 「シミュレータ」の設定 

Image shown here

「収率」には、列プロパティとして0.55の下側仕様限界が設定されており、図8.15に赤い線として表示されています。

6. [シミュレート]ボタンをクリックします。

注: シミュレーションでは乱数が使われるため、実際の結果は図8.16に示されるものと多少異なります。

図8.16 シミュレーションの結果 

Image shown here

反応温度540と反応時間0.115により予測された「収率」は0.62です。このシミュレーションは温度と時間のばらつきを考慮しました。このシミュレーションでは、不適合率はおよそ6%と推定されました。また、「収率」の標準偏差は0.03であると推定されました。不適合率はおよそ6%ですが、これはおよそ6%の製品が仕様外であることを意味します。

次に、シミュレータによって「収率」を高めながらも、不適合率が最小となるような「反応温度」「反応時間」の設定を求めてみましょう。設定を変更する前に、後で比較するために「収率」が最大になるときの因子設定を保存しておきます。

7. 「予測プロファイル」の赤い三角ボタンのメニューから、[因子設定]>[設定を記録]をクリックします。

8. 「最大収率」と入力し、[OK]をクリックします。

レポートウィンドウに設定が表示されます。

図8.17 「収率」が最大になるときの設定の記録 

Image shown here

9. 「反応温度」の平均値を535に変更します。

プロット内の「反応時間」の赤い点線を「収率」が最大になっている個所まで変更します。その値はおよそ0.16です。

10. 「反応時間」の平均値を0.16に変更します。

11. [シミュレート]をクリックします。

注: シミュレーションでは乱数が使われるため、実際の結果は図8.18に示されるものと多少異なります。

図8.18 「温度」が535のときの不適合率 

Image shown here

入力因子設定を少々変更することで、予想された収率の減少を0.01未満に抑えながら不適合率を約1.8%に減少させることができます。つまり、因子はばらつかず特定の値に固定できる条件下で「収率」を最大にする最適設定は、因子にばらつきがある条件下で得られた最適設定とは一致しないことがわかります。

シミュレーション実験

[シミュレーション実験]を利用すると、不適合率を最小にする「反応温度」「反応時間」の設定を特定できます。その設定を特定するには、[シミュレーション実験]を用いて「反応温度」「反応時間」の実験点で不適合率のシミュレーションを実行します。その後、そのシミュレーションで得られた不適合率にモデルをあてはめ、不適合率を最小にする因子設定を特定します。

1. 「シミュレータ」の赤い三角形をクリックし、[シミュレーション実験]を選択します。

2. 実験回数を80に設定し、因子空間の全体で実験するために実験空間の割合を1に設定します。

3. [OK]をクリックします。

指定された因子の空間から、ラテン超方格法によって80の計画点を持つ計画が作成されます。そして、80個の各計画点において「繰り返し数」に指定した個数だけ乱数が生成されます。乱数の分布は計画点を中心とし、ばらつきと形状には因子に指定した分布のものが使用されます。

実験結果を収めたデータテーブルが作成されます。このデータテーブルでは、各計画点において、「全体 不適合率」が計算されます。これで、「反応温度」「反応時間」の関数によって不適合率を表すモデルをあてはめる準備ができました。

注: 「Stochastic Optimization」のプロファイルウィンドウは、開いたままにします。後ほどこのウィンドウに戻ります。

4. 新しいデータテーブルから、「Gauss過程」スクリプトの横にある緑の三角形をクリックします。

図8.19 「Gauss過程」であてはめたモデル 

Image shown here

注: シミュレーションでは乱数が使われるため、実際の結果は多少異なる場合があります。

5. 不適合率を最小にする「反応温度」「反応時間」の設定を特定するには、「予測プロファイル」の赤い三角形をクリックし、[最適化と満足度]>[満足度の最大化]を選択します。

満足度関数は、不適合率の最小化をするようにすでに設定されています。

図8.20 不適合率を最小化する設定 

Image shown here

不適合率を最小にする設定は、「反応温度」がおよそ526、「反応時間」がおよそ0.3です。

6. [元のプロファイルをこの因子設定にする]ボタンをクリックします。

クリックすると、不適合率を最小にする「反応温度」「反応時間」の設定が、元のプロファイルに適用となります。

7. 元の「プロファイル」レポートウィンドウに戻ります。

8. 「予測プロファイル」の赤い三角ボタンのメニューから、[因子設定]>[設定を記録]をクリックします。

9. 「最小不適合率]と入力し、[OK]をクリックします。

図8.21 不適合率が最小になる設定 

Image shown here

10. 新しい設定が記録されたところで、[シミュレート]ボタンをクリックし、不適合率を推定します。

図8.22 不適合率の低下 

Image shown here

新しい設定での不適合率は0.05%です。これは、「収率」を最大化する設定の6.0%よりかなり低い値です。その改善率はおよそ120倍にもなります。最初の設定では、「収率」の平均が0.62でした。新しい平均は0.59です。平均「収率」は0.03減少してしまいましたが、その代わり不適合率は120倍にもなっています。

[設定を記録]を使って設定を保存してあるので、前の設定と新しい設定を簡単に比較することができます。「差」レポートには差の要約が表示されます。

11. 各設定のプロファイルを見るには、[設定の記録]レポートにあるラジオボタンをクリックします。

図8.23 設定の比較 

Image shown here

これで、どの設定を使用すれば工程の品質が向上するかが判明しました。因子にばらつきがないなら、温度を高く、時間を短くすれば「収率」が最大になります。しかし、工程の入力因子に、この例で行ったシミュレーションのようなばらつきがある場合は、「収率」を最大にすると不適合率まで高くなってしまいます。そのため、因子にばらつきがある場合に不適合率を最小化するには、温度を低く、時間を長くする必要があります。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).