PDCモデルを使った人員配置最適化の解説

assimeeによるモデル作成方法やプロセス、最適化方法についてのより深い理解のため、この記事を読む前にモデル作成の基礎を解説している以下の記事、

また、人員配置最適化を解説している以下の記事を先にご覧いただくことをことをお勧めします。

ー概要ー

今回の記事ではこれまでより大規模なモデルを使用して人員配置の最適化(人員の割り振り)を行います。使用するモデルは中古商品のクリーニングを行うPDC(商品配送センター)を想定しており、入庫後に複数商品に分岐し、それぞれクリーニングなどを実施した後、保管、ピッキングによって商品を出庫し、バンニング後に出荷することを想定しています。完成したモデルは以下のようになります。

ーモデルの作成ー

モデルの想定

  1. パレットにて入荷
  2. デバンニングを行い商品ごとに5つのプロセスに分岐
  3. 分岐先のそれぞれで処理を実行
  4. 5つの商品をピッキングした後、バンニングして出荷
  5. 人員配置の最適化は5つの処理とピッキングで実施

モデルの作成は以下の3つのブロックに分けて解説と設定を行います。

  • 入荷ブロック
  • 倉庫ブロック
  • 出荷ブロック

入荷ブロック

入荷ブロックは以下の図のようにプロセスを配置して設定します。

入荷プロセス:
プロセス名を「000入荷」へ変更、
詳細設定からパーツの入荷情報を入荷パーツ名を「パレット」、間隔を「60分」、個数を「10個」と設定

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

分解プロセス:
プロセス名を「002デバンニング」へ変更、処理時間を「10分」、作業人数を「30人」と設定、
対象パーツ名称を「パレット」、個数を「1個」、
出力パーツ名称を以下の5つ設定、
その1:名称を「中古パソコン」、個数を「5個」
その2:名称を「中古タブレット」、個数を「5個」
その3:名称を「中古鞄」、個数を「5個」
その4:名称を「中古ゲームソフト」、個数を「50個」
その5:名称を「中古本」、個数を「50個」

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

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

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

置き場プロセス:
プロセス名を「100パソコン置き場」へ変更、容量を「1000個」と設定

置き場プロセス:プロセス名を「110タブレット置き場」へ変更、容量を「1000個」と設定

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

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

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

分岐条件:
条件1:

・送り先:100パソコン置き場
・分岐条件:パーツ名が一致
・パーツ名:中古パソコン
条件2:
・送り先:110タブレット置き場
・分岐条件:パーツ名が一致
・パーツ名:中古タブレット
条件3:

・送り先:120鞄置き場
・分岐条件:パーツ名が一致
・パーツ名:中古鞄
条件4:
・送り先:130ゲームソフト置き場
・分岐条件:パーツ名が一致
・パーツ名:中古ゲームソフト
条件5:

・送り先:140本置き場
・分岐条件:パーツ名が一致
・パーツ名:中古本

以降は倉庫ブロックで設定します。

倉庫ブロック

入荷ブロックでは「004入庫」で5つの商品に対する処理に分岐しました。倉庫ブロックでは5つの商品に対する処理を行うことを考え、下図のようにプロセスを配置して設定します。

パソコン

置き場プロセス(再掲):
プロセス名を「100パソコン置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「101初期化」へ変更、処理時間を「20分」、作業人数を「10人」、
対象パーツ名称を「中古パソコン」、個数を「10個」、
出力パーツ名称を「初期化済パソコン」、個数を「10個」と設定

置き場プロセス:プロセス名を「102初期化済パソコン置き場」へ変更、容量を「1000個」と設定

「200ピッキング」へ合流します。

タブレット

置き場プロセス(再掲):プロセス名を「110タブレット置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「111初期化」へ変更、処理時間を「20分」、作業人数を「10人」、
対象パーツ名称を「中古タブレット」、個数を「10個」、
出力パーツ名称を「初期化済タブレット」、個数を「10個」と設定

置き場プロセス:プロセス名を「112初期化済タブレット置き場」へ変更、容量を「1000個」と設定

「200ピッキング」へ合流します。

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

加工プロセス:
プロセス名を「121クリーニング」へ変更、処理時間を「20分」、作業人数を「10人」、
対象パーツ名称を「中古鞄」、個数を「10個」、
出力パーツ名称を「クリーニング済鞄」、個数を「10個」と設定

置き場プロセス:プロセス名を「122クリーニング済鞄置き場」へ変更、容量を「1000個」と設定

「200ピッキング」へ合流します。

ゲームソフト

置き場プロセス(再掲):プロセス名を「130ゲームソフト置き場」へ変更、容量を「1000個」と設定

加工プロセス:
プロセス名を「131クリーニング」へ変更、処理時間を「20分」、作業人数を「10人」、
対象パーツ名称を「中古ゲームソフト」、個数を「10個」、
出力パーツ名称を「クリーニング済ゲームソフト」、個数を「10個」と設定

置き場プロセス:プロセス名を「132クリーニング済ゲームソフト置き場」へ変更、容量を「1000個」と設定

「200ピッキング」へ合流します。

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

加工プロセス:
プロセス名を「141クリーニング」へ変更、処理時間を「20分」、作業人数を「10人」、
対象パーツ名称を「中古本」、個数を「10個」、
出力パーツ名称を「クリーニング済本」、個数を「10個」と設定

置き場プロセス:プロセス名を「142クリーニング済本置き場」へ変更、容量を「1000個」と設定

組立プロセス:
プロセス名を「200ピッキング」へ変更、処理時間を「10分」、作業人数を「30人」、
対象パーツを以下の5つ設定
その1:名称を「初期化済パソコン」、個数を「1個」
その2:名称を「初期化済タブレット」、個数を「1個」
その3:名称を「クリーニング済鞄」、個数を「1個」
その4:名称を「クリーニング済ゲームソフト」、個数を「10個」
その5:名称を「クリーニング済本」、個数を「10個」
出力パーツ名称を「カラコン」、個数を「5個」と設定

出荷ブロック

出荷ブロックは以下の図のようにプロセスを配置して設定します。処理済の商品をピッキングしバンニングして出荷を行います。

組立プロセス(再掲):
プロセス名を「200ピッキング」へ変更、処理時間を「10分」、作業人数を「30人」、
対象パーツを以下の5つ設定
その1:名称を「初期化済パソコン」、個数を「1個」
その2:名称を「初期化済タブレット」、個数を「1個」
その3:名称を「クリーニング済鞄」、個数を「1個」
その4:名称を「クリーニング済ゲームソフト」、個数を「10個」
その5:名称を「クリーニング済本」、個数を「10個」
出力パーツ名称を「カラコン」、個数を「5個」と設定

置き場プロセス:プロセス名を「201カラコン置き場」へ変更、容量を「1000個」と設定

組立プロセス:
プロセス名を「202バンニング」へ変更、処理時間を「10分」、作業人数を「30人」、
対象パーツ名称を「カラコン」、個数を「20個」、
出力パーツ名称を「出荷用パレット」、個数を「2個」と設定

出荷プロセス:
プロセス名を「203出荷」へ変更、出荷データは最適化時に設定

ーシミュレーションー

モデルの作成が終了したら、モデル名を「PDCモデル(中古販売)ー人員配置最適化」という名前で保存し、シミュレーションを実行します。300分の設定でシミュレーションを行うと以下の図のような結果が表示されます。表示されない場合は再度設定を確認してください。

ー最適化ー

シミュレーションが終了したら、人員配置最適化を行ってみましょう。今回は倉庫ブロックの初期化処理とクリーンニング処理と出荷ブロックのピッキングの6つのプロセス(「101初期化」、「111初期化」、「121クリーニング」、「131クリーニング」、「141クリーニング」、「200ピッキング」)に対して人員を割り振ることを考えます。

最適化の準備

最初に出荷の目標値を設定します。編集画面から出荷プロセス(「203出荷」)を選択します。そして、「出荷データを直接入力」ボタンを押すと以下の画面が表示されます。この画面にはプロセス内に存在するすべてのパーツが表示されているので、目標とする「出荷用パレット」以外は削除してください。

削除後の画面は以下のようになります。

削除が終わったら、「出荷用パレット」へ出荷目標を設定します。

今回は0分から300分の間で、60分毎に25個の出荷量を設定します。出荷目標を設定するとシミュレーション結果のグラフに目標値が追加されます。最適化前のシミュレーション結果は60分毎に15個の出荷が行われていました。現状より高い目標値が表示されていることが分かります。

次に人員最適化時のパラメータを設定します。「人員最適化」タブを選択すると以下の画面が表示されます。

今回は「101初期化」、「111初期化」、「121クリーニング」、「131クリーニング」、「141クリーニング」の5つの加工プロセスと、「200ピッキング」の作業人数を最適化するので、それぞれのチェックボックスに以下のようにチェックを入れます。

次に選択したパラメータ(作業人数)の上限値と下限値を設定します。今回は出荷を増やすのが目的なので人員は多くなることが予想されます。そこで「200ピッキング」の上限値を50人、それ以外のプロセスの上限値を20人へ変更します。*右側に表示されている「最適化値」が上限値と下限値の間に入るように設定することが必須です。

最後に人員の割り振りの設定を行いますが、そのために合計人数にもチェックを入れ、人数を240人と設定します。合計人数は最適化の対象となるパラメータ(作業人数)の上限値の合計を考慮して決定すると良いでしょう。*プロセス全体の作業人数が含まれるため、今回はチェックを入れたプロセスの合計150人だけでなく、チェックを入れていない3つのプロセスの作業人数の合計である90人を加えて240人を設定しています。

最適化結果

設定が終わったら右上の「モデルチューニング実行」ボタンを押し、最適化を行います。このパラメーターの数とシミュレーション時間であれば、およそ5分ほどで最適化が終了します。

最適化結果の評価

最適化が終了すると以下の画面が表示されます。目標との誤差の最小値が5となっている一方で、constraintが180となっていることが分かります。constraintの値が大きいことは人員の割り振りのずれが大きいことを示しています。グラフの下にある「リストで値を確認」ボタンを押して確認してみましょう。*最適化にはランダム変数を使っているため、最適化の結果が下図と一致しない場合があります。

下図のように最適化後のパラメーター一覧と合計人数が表示されます。240人の設定に対して、最適化で割り振られた人数は226人となっており、やや少ないことが分かります。

最適化のやり直しと合計人数の調整

今回は合計人数を240人と設定しましたが、実際に割り振られる人数は226人と合計人数より少なくなりました。このままでも問題はありませんが、このことは出荷目標を達成するための必要人数が最適値に比べて少なくて済むことを意味しています。そこで、合計人数を230人へ減らして再度最適化を実行してみましょう。最適化後には以下の画面が表示されます。

パラメーターの一覧も同様に確認します。下図を見ると合計人数230人の設定に対して230人を割り振ることが出来ています。このように、最適化結果と目標値からのずれが気になる場合などは、パラメーターの設定を変えて再度最適化を行うことでより効率的な配置を考えることが可能となっています。

ーまとめー

今回は大規模なPDCモデルでの人員配置の最適化について解説しました。assimeeでは最適化とシミュレーションをPC上で繰り返し行うことが非常に容易となっています。これまでの人員配置業務は現場の負担が大きかった上、担当者の経験や勘に頼っていましたが、assimmeを使うことで誰でも短時間で業務を行うことが可能となります。このことは人員配置業務の効率化に大きく貢献します。

関連記事