FC型物流倉庫を再現したモデル作成の解説

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

ー概要ー

物流倉庫モデル作成の4回目となる今回は、通信販売業で多く利用されるFC(フルフィルメントセンター)型物流倉庫を再現したモデルを作成します。フルフィルメントセンターは通信販売業を行う小売店が設置する物流拠点で、ECサイトや電話、郵便などで消費者が注文すると受注、集荷(倉庫内のピッキング含む)、梱包、配送、返品業務を行う他、商品の発注や在庫管理、顧客のデータ管理まで(フルフィルメント業務)を一括に行う形態です。この際、アマゾンのように自社の商品の販売だけでなく他の小売業者の業務を委託されて行っている場合もあります。

この内、倉庫内で行う業務は、入荷に関しては販売する商品の荷受と検品、入庫、出荷に関してはピッキングと梱包、発送があり、この他、在庫管理や品質保証などもあります。今回の記事ではなどを入れたモデルを作成します。

ーFC(フルフィルメントセンター)型物流倉庫のモデル作成ー

今回はFCを例にとったモデルの作成を解説します。合わせて新たに実装された上流プロセスへの還流機能の解説を行います。新プロセスの追加により更に多彩なモデルの作成が可能となりました。
今回のモデルも以下のように大規模なモデルとなるので、以下の様なブロック・小ブロックに分けて解説を行います。

  • 入荷ブロック
  • 入荷検査ブロック
    • 検査合格品処理小ブロック
    • 検査不合格品処理小ブロック
  • 入庫ブロック
  • 出庫(ピッキング)とピッキング後の検査ブロック
    • ピッキング検査合格品処理小ブロック
    • ピッキング検査不合格品処理小ブロック *ピッキングミスの処理で上流への還流を行います
  • 出荷ブロック
    • 検査合格品の梱包小ブロック
    • 出荷小ブロック
    • 検査不合格品の廃棄小ブロック

入荷ブロック

倉庫への入荷プロセスを配置します。入荷後デバンニングと検品を行うため、下図のように入荷→置き場→分解→検品→分岐の各プロセスを配置し、設定を行います。

入荷プロセス:
プロセス名を「000入荷」に変更詳細設定から入荷パーツを3つ設定

1つ目:
パーツ名称「入荷パレット(お菓子)」、発生間隔「60分」、個数「10個」と設定
2つ目:
パーツ名称「入荷パレット(書籍)」、発生間隔「60分」、個数「10個」と設定
3つ目:
パーツ名称「入荷パレット(ゲームソフト)」、発生間隔「60分」、個数「10個」と設定

置き場プロセス:
プロセス名を「001到着品置き場」へ変更、容量を「1000個」へ設定

分解プロセス:
プロセス名を「002デバンニング」へ変更、処理時間を「5分」、作業人数を「30人」と設定
対象パーツを「入荷パレット(お菓子)」、「入荷パレット(書籍)」、「入荷パレット(ゲームソフト)」の3つ、個数をおのおの「1個」、出力パーツを以下の3つ設定

出力パーツ1つ目:
パーツ名「お菓子」、個数を「100個」と設定
出力パーツ2つ目:
パーツ名「書籍」、個数を「50個」と設定
出力パーツ3つ目:
パーツ名「ゲームソフト」、個数を「10個」と設定

検品プロセス:
プロセス名を「003到着品検品」へ変更、不良品率を「1%」、処理時間を「1分」、作業人数を「50人」と設定
後工程として分岐「004不良品取り分け」へ接続します。

入荷検査ブロック

入荷した商品のうち、到着品検品での合格品と不合格品を分岐プロセスで分けそれぞれの処理を検査合格品処理小ブロックと検査不合格品処理小ブロックで行うため、検品「003到着品検品」の後工程として分岐→置き場→運搬の順にプロセスを配置し設定します。

分岐プロセス:
プロセス名を「004不良品取り分け」へ変更、処理時間を「1分」、作業人数を「50人」と設定

分岐条件:
詳細画面の「分岐条件」右側のマークをクリックして編集画面を立ち上げ、2つの置き場を送り先として配置し、以下の条件を追加

分岐先2つ:

置き場プロセス(検査合格品処理小ブロック):
プロセス名を「100検品済商品置き場」へ変更、容量を「1000個」と設定

置き場プロセス(検査不合格品処理小ブロック):
プロセス名を「110初期不良品置き場」へ変更、容量を「1000個」と設定

条件1:
・送り先:検品済商品置き場
・分岐条件:パーツステータスが一致
・ステータス:正常
条件2:
・送り先:初期不良品置き場
・分岐条件:パーツステータスが一致
・ステータス:不良

検査合格品処理小ブロック

分岐「004不良品取り分け」から分岐し、置き場「100検品済商品置き場」→運搬の順にプロセスを配置して設定します。

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

運搬(ローラーコンベア)プロセス:
プロセス名を「101運搬(ローラーコンベア)」へ変更、積荷容量を「100個」、処理時間を「1分」と設定
後工程として分岐「102品目別仕分け」へ接続します。

検査不合格品処理小ブロック

下図のように「004不良品取り分け」から分岐し、置き場「110初期不良品置き場」→運搬の順にプロセスを配置して設定します。運搬後は検査不合格品の廃棄小ブロックの加工「512破棄」へ接続します。

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

運搬(人)プロセス:
プロセス名を「111運搬(人)」へ変更、積荷容量を「10個」、運搬時間を「5分」、運搬人数を「1人」と設定
後工程として加工「512破棄」へ接続します。

入庫ブロック

入荷し検品を通過した商品を分岐プロセスで仕分け、品目別に倉庫へ入庫します。本モデルでは下図のように運搬「101運搬(ローラーコンベア)」の後工程としてお菓子、書籍、ゲームソフトのそれぞれを入庫するように分岐させ、分岐後は置き場→作業→置き場とプロセスを配置し設定します。

分岐プロセス:
プロセス名を「102品目別仕分け」へ変更、処理時間を「1分」、作業人数を「50人」と設定

分岐条件:
詳細画面の「分岐条件」右側のマークをクリックして編集画面を立ち上げ、3つの置き場を送り先として配置し、以下の条件を追加

分岐先3つ:

置き場プロセス:
プロセス名を「200お菓子一時置き場」へ変更、容量を「1000個」と設定

置き場プロセス:
プロセス名を「210書籍一時置き場」へ変更、容量を「1000個」と設定

置き場プロセス:
プロセス名を「220ゲームソフト一時置き場」へ変更、容量を「1000個」と設定

条件1:
・送り先:200お菓子一時置き場
・分岐条件:パーツ名が一致
・パーツ名:お菓子
条件2:
・送り先:210書籍一時置き場
・分岐条件:パーツ名が一致
・パーツ名:書籍
条件3:
・送り先:220ゲームソフト一時置き場
・分岐条件:パーツ名が一致
・パーツ名:ゲームソフト

お菓子:

置き場プロセス:
プロセス名を「200お菓子一時置き場」へ変更、容量を「1000個」と設定

作業プロセス:
プロセス名を「201お菓子入庫」へ変更、処理時間を「1分」、作業人数を「20人」と設定

置き場プロセス:
プロセス名を「202お菓子倉庫」へ変更、容量を「10000個」と設定

書籍:

置き場プロセス:
プロセス名を「210書籍一時置き場」へ変更、容量を「1000個」と設定

作業プロセス:
プロセス名を「211書籍入庫」へ変更、処理時間を「1分」、作業人数を「20人」と設定

置き場プロセス:
プロセス名を「212書籍倉庫」へ変更、容量を「10000個」と設定

ゲームソフト:

置き場プロセス:
プロセス名を「220ゲームソフト一時置き場」へ変更、容量を「1000個」と設定

作業プロセス:
プロセス名を「221ゲームソフト入庫」へ変更、処理時間を「1分」、作業人数を「20人」と設定

置き場プロセス:
プロセス名を「222ゲームソフト倉庫」へ変更、容量を「10000個」と設定

お菓子、書籍、ゲームソフトは出庫ブロックで設置する「300ピッキングと出庫」へ接続します。

出庫(ピッキング)とピッキング後の検査ブロック

下図のように置き場「202お菓子倉庫」、置き場「212書籍倉庫」、置き場「222ゲームソフト倉庫」の3つの置き場から接続する形で、組立→置き場→検品の順でプロセスを配置し、設定します。その後、分岐プロセスを配置してピッキング検査合格品処理小ブロックとピッキング検査不合格品処理小ブロックに分岐させます。

組立プロセス:
プロセス名を「300ピッキングと出庫」へ変更、処理時間を「10分」、作業人数を「30人」、詳細設定より立ち上げ時間を「60分」と設定
対象パーツと出力パーツは詳細設定を使わず、「設定を追加する」で複数のパーツを設定

対象パーツ1つ目:
名称を「お菓子」、個数を「30個」と設定
対象パーツ2つ目:
名称を「書籍」、個数を「15個」と設定
対象パーツ3つ目:
名称を「ゲームソフト」、個数を「3個」と設定

出力パーツ1つ目:
名称を「カラコンA」、個数を「1個」と設定
出力パーツ2つ目:
名称を「カラコンB」、個数を「1個」と設定
出力パーツ3つ目:
名称を「カラコンC」、個数を「1個」と設定

置き場プロセス:
プロセス名を「301ピッキング後置き場」へ変更、容量を「1000個」へ設定

検品プロセス:
プロセス名を「302ピッキング検査」へ変更、不良品率を「10%」、処理時間を「1分」、作業人数を「20人」と設定

分岐プロセス:
プロセス名を「303ピッキングミスチェック」へ変更、処理時間を「1分」、作業人数を「20人」と設定

分岐条件:
詳細画面の「分岐条件」右側のマークをクリックして編集画面を立ち上げ、2つの置き場を送り先として配置し、以下の条件を追加

分岐先2つ:

置き場プロセス(ピッキング検査合格品処理小ブロック):
プロセス名を「400ピッキング検査後置き場」へ変更、容量を「1000個」と設定

置き場プロセス(ピッキング検査不合格品処理小ブロック):
プロセス名を「410ピッキングミス置き場」へ変更、容量を「1000個」と設定

条件1:
・送り先:400ピッキング検査後置き場
・分岐条件:パーツステータスが一致
・ステータス:正常
条件2:
・送り先:410ピッキングミス置き場
・分岐条件:パーツステータスが一致
・ステータス:不良

ピッキング検査合格品処理小ブロック

検品「303ピッキングミスチェック」でピッキングミスの検査を行った後、改めて商品の検査を行い検査結果で分岐するところまで下図のように置き場→検品→分岐の順にプロセスを配置し設定します。

置き場プロセス:
プロセス名を「400ピッキング検査後置き場」へ変更、容量を「1000個」と設定

検品プロセス:
プロセス名を「401商品検査」へ変更、不良品率を「1%」、処理時間を「1分」、作業人数を「20人」と設定

分岐プロセス:
プロセス名を「402不良品取り分け」へ変更、処理時間を「1分」、作業人数を「20人」と設定

分岐条件:
詳細画面の「分岐条件」右側のマークをクリックして編集画面を立ち上げ、2つの置き場を送り先として配置し、以下の条件を追加

分岐先2つ:

置き場プロセス(検査合格品の梱包小ブロック):
プロセス名を「500検査済商品置き場」へ変更、容量を「1000個」と設定

置き場プロセス(検査不合格品の廃棄小ブロック):
プロセス名を「510不良品置き場」へ変更、容量を「1000個」と設定

条件1:
・送り先:500検査済商品置き場
・分岐条件:パーツステータスが一致
・ステータス:正常
条件2:
・送り先:510不良品置き場
・分岐条件:パーツステータスが一致
・ステータス:不良

ピッキング検査不合格品処理小ブロック

ピッキングの検査で不合格だったものを分解プロセスを用いて商品に戻したうえで上流側(ピッキングと出庫)まで還流させるため、下図のように分岐「303ピッキングミスチェック」の後工程に置き場→分解→分岐の順でプロセスを配置し設定します。

置き場プロセス:
プロセス名を「410ピッキングミス置き場」へ変更、容量を「1000個」と設定

分解プロセス:
プロセス名を「411カラコン分解」へ変更、処理時間を「10分」、作業人数を「5人」と設定
詳細設定の項目の一番下にあるパーツごとの設定から対象パーツと出力パーツを以下のように3つずつ設定

1つ目:
対象パーツを「カラコンA」、個数を「1個」、
出力パーツ1つ目を「お菓子」、個数を「10個」と設定、
出力パーツ2つ目を「書籍」、個数を「5個」と設定、
出力パーツ3つ目を「ゲームソフト」、個数を「1個」と設定
2つ目:
対象パーツを「カラコンB」、個数を「1個」、
出力パーツ1つ目を「お菓子」、個数を「10個」と設定、
出力パーツ2つ目を「書籍」、個数を「5個」と設定、
出力パーツ3つ目を「ゲームソフト」、個数を「1個」と設定
3つ目:
対象パーツを「カラコンC」、個数を「1個」、
出力パーツ1つ目を「お菓子」、個数を「10個」と設定、
出力パーツ2つ目を「書籍」、個数を「5個」と設定、
出力パーツ3つ目を「ゲームソフト」、個数を「1個」と設定

分岐プロセス:
プロセス名を「412分岐」へ変更、処理時間を「1分」、作業人数を「1人」と設定
既プロセスへ接続を使って組立「300ピッキングと出荷」へ接続することで、上流側へパーツが還流されます。今回は還流単独での利用ですが、通常の分岐条件と混在させることも可能です。

出荷ブロック

検査合格品の梱包小ブロック

下図のように検品「401商品検査」に合格した商品を梱包した上で、バンニングし方向別に仕分けて出荷するため、分岐「402不良品取り分」けから分岐して、置き場→運搬→加工→置き場→置き場→分岐→(3方向に分岐)→置き場→運搬→出荷の順にプロセスを配置し設定します。今回の記事では時間別に出荷方向を分岐するように設定を行います。

置き場プロセス:
プロセス名を「500検査済商品置き場」へ変更、容量を「1000個」と設定

運搬プロセス(人):
プロセス名を「501運搬(人)」へ変更、積荷容量「100個」、運搬時間を「5分」、運搬人数を「10人」と設定

組立プロセス:
プロセス名を「502梱包とラベリング」へ変更、処理時間を「1分」、作業人数を「20人」
対象パーツと出力パーツは詳細設定を使わず、「設定を追加する」で複数のパーツを設定

対象パーツ1つ目:
名称を「カラコンA」、個数を「3個」と設定
対象パーツ2つ目:
名称を「カラコンB」、個数を「3個」と設定
対象パーツ3つ目:
名称を「カラコンC」、個数を「3個」と設定

出力パーツ1つ目:
名称を「段ボールA」、個数を「1個」と設定
出力パーツ2つ目:
名称を「段ボールB」、個数を「1個」と設定
出力パーツ3つ目:
名称を「段ボールC」、個数を「1個」と設定

置き場プロセス:
プロセス名を「503梱包済商品置き場」へ変更、容量を「1000個」と設定

組立プロセス:
プロセス名を「504バンニング」へ変更、処理時間を「5分」、作業人数を「20人」
対象パーツと出力パーツは詳細設定を使わず、「設定を追加する」で複数のパーツを設定

対象パーツ1つ目:
名称を「段ボールA」、個数を「1個」と設定
対象パーツ2つ目:
名称を「段ボールB」、個数を「1個」と設定
対象パーツ3つ目:
名称を「段ボールC」、個数を「1個」と設定

出力パーツ1つ目:
名称を「出荷用パレット」、個数を「1個」と設定

置き場プロセス:
プロセス名を「505出荷用パレット置き場」へ変更、容量を「1000個」と設定

分岐プロセス:
プロセス名を「506方向別仕分け」へ変更、処理時間を「1分」、作業人数を「20人」と設定
この分岐では時間を指定して、時間によって仕分け先が変わるように設定を行ってみましょう。

分岐条件:
詳細画面の「分岐条件」右側のマークをクリックして編集画面を立ち上げ、3つの置き場を送り先として配置し、以下の条件を追加

分岐先3つ:

置き場プロセス:
プロセス名を「600X郵便局向け置き場」へ変更、容量を「1000個」と設定

置き場プロセス:
プロセス名を「610Y運送会社向け置き場」へ変更、容量を「1000個」と設定

置き場プロセス:
プロセス名を「620Z運送会社向け置き場」へ変更、容量を「1000個」と設定

条件1:
・送り先:620Z運送会社向け置き場
・分岐条件:指定時間以上
・時間:240
条件2:
・送り先:610Y運送会社向け置き場
・分岐条件:指定時間以上
・時間:120
条件3:

・送り先:600X郵便局向け置き場
・分岐条件:指定時間未満
・時間:120

出荷小ブロック

下図のように分岐「506方向別仕分け」から3方向に分かれた出荷ブロックを配置し設定します。それぞれ置き場→運搬→出荷の順にプロセスを配置します。

X郵便局向け:

置き場プロセス:
プロセス名を「600X郵便局向け置き場」へ変更、容量を「1000個」と設定

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

出荷プロセス:
プロセス名を「602X運送会社向け出荷」へ変更

Y運送会社向け:

置き場プロセス:
プロセス名を「610Y運送会社向け置き場」へ変更、容量を「1000個」と設定

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

出荷プロセス:
プロセス名を「612Y運送会社向け出荷」へ変更

Z運送会社向け:

置き場プロセス:
プロセス名を「620Z運送会社向け置き場」へ変更、容量を「1000個」と設定

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

出荷プロセス:
プロセス名を「622Z運送会社向け出荷」へ変更

検査不合格品の廃棄小ブロック

下図のように検査の不合格品の廃棄のために、分岐「402不良品取り分け」から分岐し、置き場→運搬→(合流)→加工(破棄)→出荷(廃棄)の順にプロセスを配置して設定します。

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

運搬プロセス(人):
プロセス名を「511運搬(人)」へ変更、運搬容量「10個」、運搬時間を「5分」、運搬人数を「1人」と設定

合流プロセス:
検査不合格品処理小ブロックの「111運搬(人)」から「既プロセスへ接続」を使って「512破棄」へ合流

加工プロセス:
プロセス名を「512破棄」へ変更、処理時間を「1分」、作業人数を「1人」と設定
詳細設定の項目の一番下にあるパーツごとの設定から対象パーツと出力パーツを3つずつ設定

1つ目:
対象パーツを「カラコンA」、個数を「1個」、出力パーツを「廃棄品」、個数を「1個」と設定
2つ目:
対象パーツを「カラコンB」、個数を「1個」、出力パーツを「廃棄品」、個数を「1個」と設定
3つ目:
対象パーツを「カラコンC」、個数を「1個」、出力パーツを「廃棄品」、個数を「1個」と設定

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

運搬プロセス(人):
プロセス名を「514運搬(人)」へ変更、運搬容量「10個」、運搬時間を「5分」、運搬人数を「1人」と設定

出荷プロセス:
プロセス名を「515廃棄」へ変更

シミュレーション結果

上記のモデルを作成した後、シミュレーション実行時間を360分に設定してシミュレーションを実行すると以下の様な結果が表示されます。今回のモデルでは不良品やピッキングミスの発生にランダム変数を使っているため、シミュレーション結果は下図と完全には一致しないことがあります。

出荷が時間で分岐しているかどうか、個別に確認してみましょう、今回は3か所の出荷を用意しましたが、360分のシミュレーション時間のうち、出荷先を時間で割り振っています。設定では最初の120分はX郵便局への出荷と設定しており、結果は以下の通りで設定を反映しています。

次に次の120分(Y運送会社行き)と最後の120分(Z運送会社行き)の出荷を確認します。

どちらも設定どおり出荷が割り振られていることが分かります。このようにassimeeでは様々な出荷条件を切り替えることが可能です。

ーまとめー

4回にわたって物流業界でよく利用される倉庫のモデル作成の解説を行いました。このようにassimeeでは業務プロセスのモデルを簡単に作成することが可能です。

関連記事