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

概要

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

モデル

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

モデル設定

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

STEP1 プロセス図の作成

モデル名を「課題解決:ボトルネック探索」として、シミュレーションモデルを作成して行きます。
以下のようにプロセスカードを配置します。

入荷プロセス:
特に変更なし

置き場プロセス:
プロセス名を「入荷品置き場」へ変更

検品プロセス:
プロセス名を「入荷時検品」へ変更

分岐プロセス:
プロセス名を「不良品排除」へ変更

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

 置き場プロセス:
 プロセス名を「合格品置き場」へ変更

 置き場プロセス:
 プロセス名を「不良品置き場」へ変更

入荷部品の不良品処理

置き場プロセス(再掲):
プロセス名を「不良品置き場」へ変更

加工プロセス:
プロセス名を「不良品破壊」へ変更

出荷プロセス:
特に変更なし

合格品処理

置き場プロセス(再掲):
プロセス名を「合格品置き場」へ変更

ローラーコンベアー:
プロセス名を「運搬」へ変更

分岐プロセス:
プロセス名を「分岐」へ変更

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

 置き場プロセス:
 プロセス名を「駆動部品置き場」へ変更

 置き場プロセス:
 プロセス名を「内装部品置き場」へ変更

 置き場プロセス:
 プロセス名を「外装部品置き場」へ変更

駆動部品加工処理

置き場プロセス(再掲):
プロセス名を「駆動部品置き場」へ変更

加工プロセス:
プロセス名を「駆動部品チェック」へ変更

置き場プロセス:
プロセス名を「チェック済駆動部品置き場」へ変更

ローラーコンベアー:
プロセス名を「運搬」へ変更

置き場プロセス:
プロセス名を「組立前部品置き場」へ変更

内装部品加工処理

置き場プロセス(再掲):
プロセス名を「内装部品置き場」へ変更

加工プロセス:
プロセス名を「内装部品加工」へ変更

置き場プロセス:
プロセス名を「加工済内装部品置き場」へ変更

ローラーコンベアー:
プロセス名を「運搬」へ変更
以降は「組立前部品置き場」へ合流

外装部品加工処理

置き場プロセス(再掲):
プロセス名を「外装部品置き場」へ変更

加工プロセス:
プロセス名を「外装部品加工」へ変更

置き場プロセス:
プロセス名を「加工済外装部品置き場」へ変更

ローラーコンベアー:
プロセス名を「運搬」へ変更
以降は「組立前部品置き場」へ合流

合流後に組立処理

置き場プロセス(再掲):
プロセス名を「組立前部品置き場」へ変更

組立プロセス:
プロセス名を「組立」へ変更

置き場プロセス:
プロセス名を「製品置き場」へ変更

検品プロセス:
プロセス名を「完成品検品」へ変更

分岐プロセス:
プロセス名を「分岐」へ変更

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

 置き場プロセス:
 プロセス名を「合格品置き場」へ変更

 置き場プロセス:
 プロセス名を「不良品置き場」へ変更

合格側の出荷処理

置き場プロセス(再掲):
プロセス名を「合格品置き場」へ変更

加工プロセス:
プロセス名を「梱包」へ変更

置き場プロセス:
プロセス名を「出荷品置き場」へ変更

ローラーコンベアー:
プロセス名を「運搬」へ変更

出荷プロセス:
特に変更なし

製品の不良品処理

置き場プロセス(再掲):
プロセス名を「不良品置き場」へ変更

加工プロセス:
プロセス名を「不良品破壊」へ変更

出荷プロセス:
特に変更なし

STEP2 パラメーターの設定

以下のようにプロセスカードのパラメーターを設定して行きます。

001入荷:
品目入荷を3つ設定
1つ目:入荷品目を「駆動部品」、間隔を「1分」、個数を「3個」、
2つ目:入荷品目を「内装部品」、間隔を「1分」、個数を「3個」、
3つ目:入荷品目を「外装部品」、間隔を「1分」、個数を「3個」と設定

002入荷品置き場:
容量を「1000個」と設定

003入荷時検品:
1回あたりの処理時間を「1分」、不良品率を「10%」、詳細設定を開いて作業員にチェックを入れ、作業人数を「10人」と設定

004分岐不良品排除:
1回あたりの処理時間を「0分」と設定
*処理時間を「0」とすることでパススルーとなります。

分岐条件:

条件1:
 対象品目:正常:駆動部品
 送り先:005合格品置き場
条件2:
 対象品目:正常:内装部品
 送り先:005合格品置き場
条件3:
 対象品目:正常:外装部品
 送り先:005合格品置き場
条件4:
 対象品目:不良品
 送り先:033不良品置き場

入荷部品の不良品処理

033不良品置き場:
容量を「1000個」と設定

加工プロセス:
詳細設定を開き、品目ごとに以下のように3パターンの処理を設定

1つ目:
 1回あたりの処理時間を「1分」と設定、
 対象品目を「駆動部品」、個数を「1個」、
 出力品目を「破棄品」、個数を「1個」と設定
2つ目:
 1回あたりの処理時間を「1分」と設定、
 対象品目を「内装部品」、個数を「1個」、
 出力品目を「破棄品」、個数を「1個」と設定
3つ目:
 1回あたりの処理時間を「1分」と設定、
 対象品目を「外装部品」、個数を「1個」、
 出力品目を「破棄品」、個数を「1個」と設定

出荷プロセス:
特に変更なし

合格品処理

005合格品置き場:
容量を「1000個」と設定

006運搬:
搬送時間を「1分」、最大積荷容量を「10個」と設定

007分岐:
1回あたりの処理時間を「0分」と設定

分岐条件:

条件1:
 品目:駆動部品
 送り先:008駆動部品置き場
条件2:
 品目:内装部品
 送り先:025内装部品置き場
条件3:
 品目:外装部品
 送り先:029外装部品置き場

駆動部品加工処理

008駆動部品置き場:
容量を「1000個」と設定

009駆動部品チェック:
1回あたりの処理時間を「20分」と設定、
対象品目を「駆動部品」、個数を「1個」、
出力品目を「チェック済駆動部品」、個数を「1個」と設定

010チェック済駆動部品置き場:
容量を「1000個」と設定

011運搬:
運搬時間を「1分」へ変更、最大積荷個数を「10個」と設定

012組立前部品置き場:
容量を「1000個」と設定

内装部品加工処理

025内装部品置き場:
容量を「1000個」と設定

026内装部品加工:
1回あたりの処理時間を「10分」と設定、
対象品目を「内装部品」、個数を「1個」、
出力品目を「加工済内装部品」、個数を「1個」と設定

027加工済内装部品置き場:
容量を「1000個」と設定

028運搬:
運搬時間を「1分」へ変更、最大積荷個数を「10個」と設定
以降は「012組立前部品置き場」へ合流

外装部品加工処理

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

030外装部品加工:
1回あたりの処理時間を「5分」と設定、
対象品目を「外装部品」、個数を「1個」、
出力品目を「加工済外装部品」、個数を「1個」と設定

031加工済外装部品置き場:
容量を「1000個」と設定

032運搬:
運搬時間を「1分」へ変更、最大積荷個数を「10個」と設定
以降は「012組立前部品置き場」へ合流

合流後に組立処理

012組立前部品置き場:
容量を「1000個」と設定

013組立:
1回あたりの処理時間を「1分」、詳細設定を開いて作業員にチェックを入れ、作業人数を「10人」と設定、
詳細設定から対象品目を3つ設定

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

出力品目を「製品」、個数を「1個」と設定

014製品置き場:
容量を「1000個」と設定

015完成品検品:
1回あたりの処理時間を「1分」、不良品率を「10%」、詳細設定を開いて作業員にチェックを入れ、作業人数を「5人」と設定

016分岐:
1回あたりの処理時間を「0分」と設定
*処理時間を「0」とすることでパススルーとなります。

分岐条件:

条件1:
 対象品目:正常:製品
 送り先:017合格品置き場

条件2:
 対象品目:不良:製品
 送り先:022不良品置き場

合格側の出荷処理

017合格品置き場:
容量を「1000個」と設定

018梱包:
1回あたりの処理時間を「1分」、詳細設定を開いて作業員にチェックを入れ、作業人数を「5人」と設定、
対象品目を「製品」、個数を「1個」、
出力品目を「梱包済段ボール」、個数を「1個」と設定

019出荷品置き場:
容量を「1000個」と設定

020運搬:
搬送時間を「1分」へ変更、最大積荷個数を「10個」と設定

021出荷:
特に変更なし

製品の不良品処理

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

023不良品破壊:
1人あたりの処理時間を「1分」と設定、
対象品目を「製品」、個数を「1個」、
出力品目を「破棄品」、個数を「1個」と設定

024出荷:
特に変更なし

出荷目標の設定

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

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

シミュレーション

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

課題解決

課題の発見

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

ボトルネックの探索

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

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

グラフによるとほとんどすべてのの時間でアイドルとなっており、組立能力には不足がないことが分かります。次に「013組立前部品置き場」を確認しましょう。

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

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

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

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

人員数最適化

部品供給能力がボトルネックになっていることが分かったので、改善のため3つの加工プロセス「009駆動部品チェック」、「026内装部品加工」、「030外装部品加工」の人員を増やすことを考えます。「人の最適化」を行ってみましょう。今回は「009駆動部品チェック」、「026内装部品加工」、「030外装部品加工」、3つのプロセスの作業人数を対象とし、上限を「40人」に設定します。

また、出荷目標については既にモデル作成で行った設定を使いますが、最適化には「024出荷」、「035出荷」と廃棄についても設定が必要となります。各種の設定が終わったら、最適化を行います。

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

人員数最適化が終わると以下のようにダッシュボードが表示されるので、結果を確認して行きます。

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

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

  • 「009駆動部品チェック」:45人
  • 「026内装部品加工」:22人
  • 「030外装部品加工」:46人

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

やや在庫があるものの、置き場には特に問題がないことが分かります。一方で、「009駆動部品チェック」、「026内装部品加工」、「030外装部品加工」の稼働率を確認すると以下のようになります。

「009駆動部品チェック」、「026内装部品加工」の稼働率はたまたま100%に近いものの、「030外装部品加工」に関しては稼働率が低い=人数が多いことが分かります。そこで、「030外装部品加工」の稼働率が100%になるように作業人数を減らしてみます。これは例えば、稼働率が75%の場合は作業人数が25%多いということなので、作業人数を25%減らすというようにします。今回の例では以下のように減らしてみましょう。
*最適化の結果によっては「026内装部品加工」の作業人数も減らす必要がある場合もあります。

  • 「009駆動部品チェック」:45人のまま
  • 「026内装部品加工」:22人のまま
  • 「030外装部品加工」:46人→11人

再度シミュレーションを行うと、シミュレーション結果は以下の図の通りで、出荷目標が達成されていることは変わっていません。*不良品率にランダム変数が含まれるため一致しないことがあります。

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

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

まとめ

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

assimeeでは、実際の製造プロセスをモデル化し、シミュレーションすることで、プロセスの見える化や潜在的な課題の洗い出しを行うことができます。製造プロセスのデジタル化や課題解決でお悩みの方は、ぜひお問い合わせください。

関連記事