生産ラインのボトルネックの探索方法の解説

assimeeによるモデル作成方法やプロセスについてのより深い理解のためにこの記事を読む前に以下の記事を先にご覧いただくことをことをお勧めします。

ー概要ー

今回の記事ではassimeeを使って課題を解決する方法について解説して行きます。今回の課題は製造ラインに何かしらの問題があり、生産目標が達成できない場合で、この課題をassimeeを使ってボトルネックを発見し、人員数最適化機能を使って課題を解決するやり方について解説します。

ーモデルー

以下のように入荷する3つの部品から製品の組み立てを行って出荷する生産ラインを考えます。

モデル設定

  1. 3つの部品は1分間あたり2個入荷し、加工の上で3つの部品を1個ずつ使って製品1個を組立
  2. 3つの部品の加工時間はそれぞれ異なる
  3. 生産目標は1時間当たり120個
  4. 配置できる人員数の上限はなし

モデルの作成

以下のようにプロセスカードを配置し設定して行きます。

入荷プロセス:
プロセス名を「0000入荷」へ変更、
詳細設定からパーツの入荷を3つ設定
1つ目:入荷パーツ名称を「駆動部品」、間隔を「1分」、個数を「2個」、
2つ目:入荷パーツ名称を「内装部品」、間隔を「1分」、個数を「2個」、
3つ目:入荷パーツ名称を「外装部品」、間隔を「1分」、個数を「2個」と設定

置き場プロセス:
プロセス名を「0001入荷品置き場」へ変更、容量を「1000個」と設定

検品プロセス:
プロセス名を「0002入荷時検品」へ変更、不良品率を0.1%、処理時間を「1分」、作業人数を「10人」と設定

分岐プロセス:
プロセス名を「0003不良品排除」へ変更、処理時間を「0分」、作業人数を「1人」と設定
*処理時間を「0」とすることでパススルーとなります。

分岐先として2つのプロセスを設置:

置き場プロセス:
プロセス名を「0004合格品置き場」へ変更、容量を「1000個」と設定

置き場プロセス:
プロセス名を「1000不良品置き場」へ変更、容量を「1000個」と設定

分岐条件:

条件1:
・送り先:0004合格品置き場
・分岐条件:パーツステータスが一致
・パーツステータス:正常
条件2:
・送り先:1000不良品置き場
・分岐条件:パーツステータスが一致
・パーツステータス:不良

入荷部品の不良品処理

置き場プロセス(再掲):
プロセス名を「1000不良品置き場」へ変更、容量を「1000個」と設定
以降は最後に設定

合格品処理

置き場プロセス(再掲):
プロセス名を「0004合格品置き場」へ変更、容量を「1000個」と設定

運搬プロセス(ローラーコンベア):
プロセス名を「0005運搬」へ変更、積荷容量を「10個」、処理時間「1分」と設定

分岐プロセス:
プロセス名を「0006分岐」へ変更、処理時間を「0分」、作業人数を「1人」と設定

分岐先として3つのプロセスを設置:

置き場プロセス:
プロセス名を「2000駆動部品置き場」へ変更、容量を「1000個」と設定

置き場プロセス:
プロセス名を「2100内装部品置き場」へ変更、容量を「1000個」と設定

置き場プロセス:
プロセス名を「2200外装部品置き場」へ変更、容量を「1000個」と設定

分岐条件:

条件1:
・送り先:2000駆動部品置き場
・分岐条件:パーツ名が一致
・パーツ名:駆動部品
条件2:
・送り先:2100内装部品置き場
・分岐条件:パーツ名が一致
・パーツ名:内装部品
条件3:
・送り先:2200外装部品置き場
・分岐条件:パーツ名が一致
・パーツ名:外装部品

駆動部品加工処理

置き場プロセス(再掲):
プロセス名を「2000駆動部品置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「2001駆動部品チェック」へ変更、処理時間を「20分」、作業人数を「1人」と設定、
対象パーツ名称を「駆動部品」、個数を「1個」、
出力パーツ名称を「チェック済駆動部品」、個数を「1個」と設定

置き場プロセス:
プロセス名を「2002チェック済駆動部品置き場」へ変更、容量を「1000個」と設定

運搬プロセス(ローラーコンベア):
プロセス名を「2003運搬」へ変更、積荷容量を「10個」、処理時間「1分」と設定

置き場プロセス:
プロセス名を「3000組立前部品置き場」へ変更、容量を「1000個」と設定

内装部品加工処理

置き場プロセス(再掲):
プロセス名を「2100内装部品置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「2101内装部品加工」へ変更、処理時間を「10分」、作業人数を「1人」と設定、
対象パーツ名称を「内装部品」、個数を「1個」、
出力パーツ名称を「加工済内装部品」、個数を「1個」と設定

置き場プロセス:
プロセス名を「2102加工済内装部品置き場」へ変更、容量を「1000個」と設定

運搬プロセス(ローラーコンベア):
プロセス名を「2103運搬」へ変更、積荷容量を「10個」、処理時間「1分」と設定
以降は「3000組立前部品置き場」へ合流

外装部品加工処理

置き場プロセス(再掲):
プロセス名を「2200外装部品置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「2201外装部品加工」へ変更、処理時間を「5分」、作業人数を「1人」と設定、
対象パーツ名称を「外装部品」、個数を「1個」、
出力パーツ名称を「加工済外装部品」、個数を「1個」と設定

置き場プロセス:
プロセス名を「2202加工済外装部品置き場」へ変更、容量を「1000個」と設定

運搬プロセス(ローラーコンベア):
プロセス名を「2203運搬」へ変更、積荷容量を「10個」、処理時間「1分」と設定
以降は「3000組立前部品置き場」へ合流

合流後に組立処理

置き場プロセス(再掲):
プロセス名を「3000組立前部品置き場」へ変更、容量を「1000個」と設定

組立プロセス:
プロセス名を「3001組立」へ変更、処理時間を「1分」、作業人数を「10人」と設定、
詳細設定から対象パーツを3つ設定

1つ目:
対象パーツ名称を「チェック済駆動部品」、個数を「1個」、
2つ目:
対象パーツ名称を「加工済内装部品」、個数を「1個」、
3つ目:
対象パーツ名称を「加工済外装部品」、個数を「1個」、

出力パーツ名称を「製品」、個数を「1個」と設定

置き場プロセス:
プロセス名を「3002製品置き場」へ変更、容量を「1000個」と設定

検品プロセス:
プロセス名を「3003完成品検品」へ変更、不良品率を0.1%、処理時間を「1分」、作業人数を「5人」と設定

分岐プロセス:
プロセス名を「3004分岐」へ変更、処理時間を「0分」、作業人数を「1人」と設定
*処理時間を「0」とすることでパススルーとなります。

分岐先として2つのプロセスを設置:

置き場プロセス:
プロセス名を「3005合格品置き場」へ変更、容量を「1000個」と設定

置き場プロセス:
プロセス名を「4000不良品置き場」へ変更、容量を「1000個」と設定

分岐条件:

条件1:
・送り先:3005合格品置き場
・分岐条件:パーツステータスが一致
・パーツステータス:正常
条件2:
・送り先:4000不良品置き場
・分岐条件:パーツステータスが一致
・パーツステータス:不良

合格側の出荷処理

置き場プロセス(再掲):
プロセス名を「3005合格品置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「3006梱包」へ変更、処理時間を「1分」、作業人数を「5人」と設定、
対象パーツ名称を「製品」、個数を「1個」、
出力パーツ名称を「梱包用段ボール」、個数を「1個」と設定

置き場プロセス:
プロセス名を「3007出荷品置き場」へ変更、容量を「1000個」と設定

運搬プロセス(ローラーコンベア):
プロセス名を「3008運搬」へ変更、積荷容量を「10個」、処理時間「1分」と設定

出荷プロセス:
プロセス名を「3009出荷」へ変更

製品の不良品処理

置き場プロセス(再掲):
プロセス名を「4000不良品置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「4001不良品破破壊」へ変更、処理時間を「1分」、作業人数を「1人」と設定、
対象パーツ名称を「製品」、個数を「1個」、
出力パーツ名称を「破棄品」、個数を「1個」と設定

出荷プロセス:
プロセス名を「4002破棄」へ変更

入荷部品の不良品処理

置き場プロセス(再掲):
プロセス名を「1000不良品置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「1001不良品破壊」へ変更、処理時間を「1分」、作業人数を「1人」と設定、
詳細画面よりパーツごとに以下のように設定

1つ目:
対象パーツ名称を「駆動部品」、個数を「1個」、
出力パーツ名称を「破棄品」、個数を「1個」と設定
2つ目:
対象パーツ名称を「内装部品」、個数を「1個」、
出力パーツ名称を「破棄品」、個数を「1個」と設定
3つ目:
対象パーツ名称を「外装部品」、個数を「1個」、
出力パーツ名称を「破棄品」、個数を「1個」と設定

出荷プロセス:
プロセス名を「1002破棄」へ変更

出荷目標の設定

プロセスカードの配置が終わったら、「3009出荷」の設定画面を開き、「出荷データを直接入力」ボタンを押します。すると以下の画面が立ち上がるので、出荷目標を設定します。

デフォルトではモデルに存在するすべてのパーツ名称が表示されるので、「梱包済段ボール」以外を左側のボタンを押して削除します。次に目標出荷個数を入力して行きますが、デフォルトでは300分までしか表示されていないので、+ボタンを押して480分まで欄を増やしつつ、設定します。以下が設定後の画面となります。

シミュレーション

目標の入力が終わったらモデル名を「課題解決:ボトルネック探索」として、シミュレーションモデルを保存します。
シミュレーションモデルを保存したら、シミュレーションタブからシミュレーションを行います。今回のシミュレーション時間は480分に設定します。
シミュレーションが終わると以下の画面が表示されます。生産目標に対して出荷数がかなり少ないことが分かります。*2カ所の検品プロセスにランダム変数が含まれるため、以下の結果とは必ずしも一致しないことには注意してください。

ー課題解決ー

課題の発見

シミュレーション結果を見ると生産目標が全く達成できていないことが分かります。これはプロセスの中にボトルネックとなる場所が存在するからだと考えられます。この節ではassimeeのシミュレーション結果からボトルネックを発見し、そのプロセスのパラメーターをassimeeの人員数最適化機能を使って変更することで解決してみましょう。

ボトルネックの探索

先ずはボトルネックを探索します。製品組立用の部品は足りているはずなので、組み立て能力が不足しているかどこかでパーツ(部品)が詰まっていることが想定されます。

まず、「3001組立」を確認してみます。デフォルトではアイテム数推移が表示されますが、グラフ画面の右下をクリックして稼働率推移に切り替えてみましょう。稼働率推移は以下の図のようになります。

グラフによると多くの時間でパーツ待ちとなっており、組立能力には不足がないことが分かります。次に「3000組立前部品置き場」を確認しましょう。

アイテム数推移をみると、チェック済駆動部品の在庫がないことが分かります。これにより組立プロセスに供給される部品が不足していることで組立と出荷が伸びていないことが分かりました。
次に「2002チェック済駆動部品置き場」、「2102加工済内装部品置き場」、「2202加工済外装部品置き場」など3つの置き場を確認します。在庫の量は非常に少なく、運搬プロセスは問題なく動いていることが分かります。

次に「2000駆動部品置き場」、「2000内装部品置き場」、「2200外装部品置き場」など3つの置き場を確認しましょう。

どの置き場も在庫が右肩上がりで増えています。間にある3つの加工プロセス、「2001駆動部品チェック」、「2101内装部品加工」、「2201外装部品加工」の稼働率を確認してみましょう。

3つのプロセス共に稼働率が100%に達しており、加工能力が不足していることが分かります。最後に念のため上流側の2つの置き場「0001入荷品置き場」と「0004合格品置き場」も確認します。この2つの置き場共に在庫が少なく、これらの周辺にボトルネックはないことが分かります。

人員数最適化

部品供給能力がボトルネックになっていることが分かったので、改善のため3つの加工プロセス「2001駆動部品チェック」、「2101内装部品加工」、「2201外装部品加工」の人員を増やすことを考えます。「人員最適化」のタブを選ぶと以下の画面が表示されます。

「新規人員最適化を実施」ボタンを押すと、最適化パラメーターの設定画面が開きます。「2001駆動部品チェック」、「2101内装部品加工」、「2201外装部品加工」、3つのプロセスの作業人数の横にあるチェックボックスにチェックを入れます。今回は無尽蔵に人員を使える仮定なので、どのプロセスも上限を「40人」に設定します。

設定が終わったら、「モデルチューニング実行」ボタンを押します。

人員数最適化後のシミュレーション結果の検討

人員数最適化が終わると以下のようにパラメーターに指定した作業人数が最適化されます。

シミュレーション結果を見ると出荷目標が達成できていることが分かります。*今回のケースでは部品の入荷数を考えると出荷目標を問題なく達成できますが、達成できていない場合は最適化時の上下限の範囲を広げたり、他のボトルネックがないかを探索します。

人員数最適化の結果、「2001駆動部品チェック」、「2101内装部品加工」、「2201外装部品加工」の作業員数はそれぞれ四捨五入すると以下のようになりました。(最適化に乱数が含まれるため必ずしも同じ人数にはなりません。)

  • 「2001駆動部品チェック」:40人
  • 「2101内装部品加工」:36人
  • 「2201外装部品加工」:34人

この結果で問題がないか、先ほどチェックしたように置き場の在庫(アイテム数)と稼働率をチェックして行きます。

3つの置き場共に在庫がほとんどなくなっており、ボトルネックの解消により無駄な在庫が発生していないことが分かります。一方で、「2001駆動部品チェック」、「2101内装部品加工」、「2201外装部品加工」の稼働率を確認すると以下のようになります。

「2001駆動部品チェック」の稼働率はたまたま100%に近いものの、「2101内装部品加工」、「2201外装部品加工」に関しては稼働率が低い=人数が多いことが分かります。そこで、2つの加工プロセスの稼働率が100%になるように作業人数を減らしてみます。これは例えば、稼働率が75%の場合は作業人数が25%多いということなので、25%減らすというようにします。今回の例では以下のように減らしてみましょう。

  • 「2001駆動部品チェック」:40人のまま
  • 「2101内装部品加工」:36人→20人
  • 「2201外装部品加工」:34人→10人

再度シミュレーションを行うと、シミュレーション結果は以下の図の通りで、出荷目標が達成されていることは変わっていません。

一方で「2001駆動部品チェック」、「2101内装部品加工」、「2201外装部品加工」の稼働率も100%に近くなり最適な人数となったことが分かります。

以上のようにしてラインに生じたボトルネックを発見し解消できました。

ーまとめー

今回はボトルのネックの解消を行う方法について簡単に解説しました。今回は作業人数だけを変更する簡単な例でしたが、assimeeを使うことで、ラインのシミュレーションを行いながらボトルネックとなっているプロセスを探索することで、最適な設定であるかを簡単に検証することが出来ます。

関連記事