assimeeの活用ー半導体製造プロセスを模したモデルで最適化ー

2023年6月9日公開

モデルチューニング

今回は前回作成した半導体製造プロセスを念頭に置いたモデル

図 プロセスモデル

を使ってモデルチューニングを行う方法について解説します。今回はライン製造方式を使ったモデルで行ったモデルチューニングに加えて、部品交換によるプロセスの停止時間を設けるという条件を加えた際の在庫最適化や人員最適化の実行について解説します。

モデルチューニングの準備

モデルチューニングのために実データのcsvファイルを用意します。
ここで読み込ませるデータは以下の表の通りとしました。

time item count
60 製品 10
120 製品 15
180 製品 15
240 製品 15
300 製品 20

この時csvファイルの内容は以下の通りとなります。


time,item,count
60,製品,10
120,製品,15
180,製品,15
240,製品,15
300,製品,20

今回のモデルで出荷するものの名前は製品としてあるので、itemには製品と記述します。
ファイルが用意出来たら編集画面から出荷プロセスを選択し、「目標値をcsvでインポート」ボタンをクリックしてcsvファイルを読み込ませます。

図 編集画面より出荷プロセスを選択

図 実データcsvファイルの読み込み

csvファイルを読み込ませたら、シミュレーションの結果に下図のように製品のデータグラフが追加されていることを確認します。追加されない場合はcsvファイルの記述が間違っているか出荷プロセスに読み込ませる際の設定ミスと考えられるので確認してください。

図 実データが追加されたシミュレーション結果

プロセス最適化

モデルチューニングや在庫最適化、人員最適化では目標値を達成するように稼働率が最適化されます。ただし、今回のモデルは簡単のため全ての処理時間が最小の1分と設定されていることに加えて、1分間に1個の製品が組立・加工・検品される設定、故障率や段替え、部品交換時間などが最小設定(0)となっているため、プロセスは既に最大効率に近くなっています。よって、60分間に最大となる約60個の製品が出荷されており、すでに目標である60分間で15個から20個を達成していること、加えて最大効率以上に出荷が増えることはないことに留意してください。この状態で最適化を実行すると何が起きるでしょうか?例えば、組立(ワイヤーボンディング)の処理時間を最適化パラメータとすれば、処理時間が長くなること(逆に考えれば、処理にどれだけの時間が掛けることができるか)が想定されます。また、組立(ワイヤーボンディング)、加工(モールディング)、検品(最終検査)の内最も上流にあるワイヤーボンディングの処理時間が最も影響が大きく、下流側の2つのプロセスはボトルネックが生じない処理時間が1以上の状態であれば、どんな値でも良くなることが想定されます。まずは、以上の想定通りに処理時間が長くなるかどうかとその時の稼働率がどうなるかを中心に見てみましょう。

モデルチューニング

モデルチューニングタブをクリックすると初回の場合、以下の画面が表示されます。2回目以降はチューニングした中で直近の結果が表示されます。

図 モデルチューニングの実行

「モデルチューニング」ボタンを押すとモデルの中でパラーメーターに設定することが可能な変数の一覧が表示されます。

図 パラメータ一覧

今回は組立(ワイヤーボンディング)、加工(モールディング)、検品(最終検査)の各処理時間をパラメーターとして指定します。想定通りであれば、60分で60個の製品の生産を15から20の間へ落とすため、上流側のワイヤーボンディングの処理時間が4に近くなることが想定されます。加えてワイヤーボンディングの出力が、次のモールディングの入力となること、中間在庫置き場がそれほど大きくないことで制約がかかるため、ワイヤーボンディングより後工程となるモールディングや最終検査の処理時間は4より小さい適当な値になることが想定されます。それではチューニングを実行し結果を確認してみましょう。
ワイヤーボンディング、モールディング、最終検査の各処理時間をパラメーターとして指定し、下限値を1、上限値を10へ変更します。

図 パラメーターと範囲の設定

図 モデルチューニングの結果(パラメーター)

モデルチューニングの結果は上図となり、製品の生産数(出荷量)が減少して目標値に近づいていることが分かるでしょうか。次にパラメーターがどう変化したのかを確認します。モデル図の処理時間が書き換わっており、ワイヤーボンディングの処理時間が1から4に近い3.87へ、モールディングの処理時間が1から3.72へ、全体検査の処理時間が1から2.86へ変化しました。想定どおり、最も上流側の処理時間に全体が依存していることがわかります。*最適化にはランダムな変数が含まれるため、必ずしも毎回ぴったり同じ結果にならないことに注意してください。

図 モデルチューニングの結果(生産数)

更に稼働率を確認しましょう。モデルのシミュレーション結果やモデルチューニング結果はデフォルトでは全体結果の表示となっていますが、タブを選択することで値の切り替え、各プロセスのアイコンをクリックすることで、各プロセスの表示に切り替えをすることができます。シミュ―ション結果を選び、確認したいプロセスを選択し、右下のアイテム数推移を稼働率推移へ切り替えることで、稼働率を確認することができます。稼働率はワイヤーボンディングでは高い値をとりますが、後半のプロセスでは稼働率が落ち込んでいる事がわかります。これも今回のモデルが上流のワイヤーボンディングへ最も依存すること、より下流のプロセスには不定性(あるいは冗長性)があることから来ています。

図 ワイヤーボンディングの稼働率

図 モールディングの稼働率

図 最終検査の稼働率

3つの処理時間をパラメータとしたモデルチューニングを行いました。今回のモデルの設定では与えた生産目標に対して最上流のワイヤーボンディングの処理時間の影響が最も大きく、下流側の他のプロセスの影響は小さい事がわかりました。

在庫最適化

次に在庫最適化の解説を行います。在庫最適化も生産目標を達成するようにユーザーが指定したパラメータを用いて最適化を行います。最適化を行う前に、在庫置き場の影響がわかりやすくなるように各パラメータと実データを調整します。特に部品交換による最終検査プロセスの停止時間を設定します。編集画面を開いて、以下の変更を行います。

  • 入荷プロセス:詳細画面から部品Aの入荷数を1から10に変更、部品AAの入荷数を2から20へ変更
  • 運搬プロセス:運搬(ローラーコンベアー)から運搬(人)へ、積荷容量を10へ、運搬人数を3へ変更
  • ワイヤーボンディング(組立プロセス):作業人数を1から10へ変更
  • モールディング(加工プロセス):作業人数を1から10へ変更
  • 4か所の置き場:すべての置き場容量を10から100に変更
  • 最終検査(検品):作業人数を1から20へ変更、工具の交換時間を30、工具の交換間隔を60へ変更しプロセスが停止する時間を設定
    • 編集画面の詳細画面から下図のように変更

図 最終検査の詳細設定画面

変更後のパラメーターを一覧で確認します。

図 編集結果の確認

これらの変更により、最終検査が止まる時間帯が生じます。下図は最終検査の稼働率となりますが、工具交換のためプロセスが稼働していない時間が生じたことがわかります。また、最終検査の停止により生産も止まるので、生産停止を在庫で補って出荷を続けるために置き場を置く必要性が増します。

図 最終検査の稼働率(工具交換の導入後)

続いて、出荷プロセスには以下の実データを読み込ませます(csvを通常通り読み込ませれば自動で上書きされます)。

time item count
60 製品 400
120 製品 400
180 製品 400
240 製品 400
300 製品 400


time,item,count
60,製品,400
120,製品,400
180,製品,400
240,製品,400
300,製品,400

編集が終わったらモデルを上書き保存し、シミュレーションを行い状態を確認します。前述の最終検査の稼働率と合わせて考えると工具交換時に在庫が溢れることで、シミュレーション途中で生産が停止している事がわかります。

図 シミュレーション結果

これは最終検査プロセスが部品交換で止まったことで、モールディングと最終検査の間にある置き場がオバーフローし、入荷など上流のプロセスがストップしたためです。
それでは在庫最適化で置き場の容量を最適化して、生産目標が達成できるようになるかどうかを確認しましょう。
「在庫最適化」タブをクリックすると、モデルチューニングと同様に以下の画面が表示されます。

図 在庫最適化の実行(初回)

「モデルチューニング」ボタンを押すとパラメーター設定画面が表示されるので、置き場のチェックボックスをチェックし、3番目(モールディングと最終検査の間)の置き場の容量の変動範囲を指定します。ここでは1から1000の範囲を指定します。同時に最終検査プロセスの処理時間のチェックボックスをオンにしてパラメータへ加えます。これはシミュレーションの生産量が目標生産量からずれている状態は在庫だけでは調整できないため、どこかプロセスの処理時間を同時に在庫と同時に最適化する必要が出てくるためです。

図 在庫最適化の設定画面

在庫最適化を行うと以下の画面となります。パラメーターとして指定した最終検査の処理時間が2から1.77へ、置き場の容量が100から831へ調整されて、最終検査が部品交換のために止まっても、一旦置き場に貯めた在庫を放出することで、ラインが常に製品を出し続けるようになった事がわかります。*最適化にはランダムな変数が含まれるため、必ずしも毎回ぴったり同じ結果にならないことに注意してください。

図 在庫最適化の結果(パラメーター)

図 在庫最適化の結果(生産数)

人員最適化

人員最適化はプロセス全体の人員配置を生産数目標を達成するように最適化します。今回は人員最適化は在庫最適化と同じモデルを利用しますが、在庫最適化の結果を活用して、まずモールディングと最終検査の間の置き場の容量と、最終検査の処理時間を以下の通り変更します(置き場は切り良くしました)。生産目標は今回変更しません。

置き場の容量:100を830へ変更
最終検査の処理時間:2から1.77へ変更

図 人員最適化のためのパラメーターの変更

変更が終了したら、モデルを保存しシミュレーションを行なって動作を確認します。

図 人員最適化の準備

人員最適化を行うには「人員最適化」タブをクリックすることで、他の最適化と同様に以下の画面が表示されます。

図 人員最適化の実行(初回)

「モデルチューニング」ボタンを押すと他と同様にパラメーター設定画面が表示されます。今回のモデルではワイヤーボンディングとモールディング、最終検査の4つのプロセスの作業人数がパラメーターとして利用できます。今回は以下の様に3つ全ての作業人数をパラメーターとして人員を最適化してみましょう。最適化の範囲を以下のように変更します。

ワイヤーボンディングとモールディングの作業人数:下限1、上限20
最終検査の作業人数:下限1、上限:40

図 人員最適化画面

変更が終わったら、「モデルチューニング実行」ボタンをクリックし終了するのを待ちます。結果は以下のようになります。ワイヤーボンディング、モールディング、最終検査の各作業人員に変化があるはずです。在庫最適化だけを行なった場合と比べて、より生産目標に近くなるパラメーターが得られていることを、枠内に表示される目標と結果の間の誤差を用いて確認してみましょう。

図 人員最適化の結果(パラメーター)

図 人員最適化の結果(生産数)

今回は最終検査プロセスの部品交換で生産が停止する時間を設定した上で、60分間で400個の割合での生産を継続することを目標として最適化を行いました。在庫と人員の最適化の結果は目標と結果の間の誤差を指標として比較すると以下の通りとなりました。*最適化にはランダムな変数が含まれるため、必ずしも毎回ぴったり同じ結果にならないことに注意してください。

在庫最適化前:在庫のオーバーフローによる生産停止
在庫最適化後の誤差:54550
(在庫+人員)最適化後の誤差:51668

このように在庫最適化と人員最適化を組み合わせたり繰り返すことでより誤差の小さい最適なパラメーターを求めることが可能です。

まとめ

今回は半導体製造プロセスの後工程を念頭に置いたモデルを使い、新規に追加された在庫最適化と人員最適化について解説しました。次は分解プロセスや分岐プロセスを追加し運送プロセスをさらに追加することで、半導体製造プロセスの後工程モデルの再現度を上げる予定です。ご期待ください。

assimeeのトライアルのお申し込みはこちら