人員配置最適化の方法の解説

assimeeを使ったプロセス最適化についてより深く理解するため、この記事をご覧いただく前に以下の記事を先にご覧いただくことをことをお勧めします。

ー概要ー

今回の記事ではassimeeを使った人員配置最適化の方法をモデルを作りながら解説します。

ーモデルの作成ー

人員配置最適化の説明の為、小規模な物流倉庫や工場を想定したモデルを使用します。今回のモデルは分岐などを想定しない1本道で入荷→置き場→加工→置き場→作業→運搬→出荷の7つのプロセスからなります。下図が完成したモデルとなります。

それではモデル作成画面から以下のようにプロセスを配置して設定していきます。

入荷プロセス:
プロセス名を「000入荷」へ変更、入荷パーツ名を「部品」、間隔を「1分」、個数を「20個」と設定

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

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

置き場プロセス:
プロセス名を「003加工後置き場」へ変更、置き場容量を「1000個」と設定

作業プロセス:
プロセス名を「004梱包作業」へ変更、処理時間を「10分」、作業人数を「2人」と設定

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

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

ーシミュレーション結果ー

以上の設定を行ったら、モデル名を「人員配置最適化」として保存を行った上で、シミュレーション時間は300分に設定しシミュレーションを行います。上記の設定が問題なく行われていれば、下図のような結果が表示されます。

ー最適化の準備ー

出荷目標(データ)の設定

最適化を行う前に最適化の目標となる出荷データを設定します。

timeitemcount
60製品30
120製品30
180製品30
240製品30
300製品30

今回は上表のように出荷目標を設定します。次に出荷プロセスにデータを入力しますが、今回も直接入力を行います。以下のようにモデル編集画面から「出荷データを直接入力」ボタンをクリックし入力を行ってください。

ボタンを押すと下図のように入力画面が立ち上がります。今回のデータは製品のみに設定します。製品以外はポップアップ左側のボタンをクリックして、今回は部品を削除してください(入力終了するか削除しない限りこの設定画面から抜けられません)。

下図は製品に出荷データを入力した後の画面です。今回は300分の設定なので、項目を増やす必要はありませんが、+を押すことで必要に応じて60分単位でデータを増やすことが可能です。

「保存する」ボタンを押して出荷目標が設定されると下図のようにシミュレーション結果に出荷目標(データ)のグラフが追加されます。以上で最適化の準備は終了です。

ー最適化ー

「人員最適化」タブをクリックすると以下の画面が表示されます。「新規人員最適化を実施」ボタンを押して設定画面を開きます。*出荷目標(データ)が入力されていない場合、自動で編集画面に遷移します。

今回は「002加工」と「004梱包作業」の作業人数と、両者の作業人数の合計をパラメーターとして最適化を行います。作業人数の合計は「10人」に設定します。これにより「002加工」と「004梱包作業」に10人を割り振る場合の最適な割り振り方を求めます。

最適化の下限値と上限値と合計人数を以下のように設定します。チェックボックスにチェックを入れ、現在値を上限値と下限値で挟むように作業人を設定し、合計人数には数値を入力します。

今回は以下の設定としました。
002加工の作業人数:下限を「2」、上限を「6」、
004梱包作業の作業人数:下限を「2」、上限を「6」、
合計人数を「10」
*合計人数にチェックを入れない場合は最も効率の良い人員数(上下限なし)を計算する人員計画最適化となります。

下図のように設定が終わったら「モデルチューニング実行」ボタンを押してモデルチューニングを行います。

モデルチューニングが終了すると以下の数のように結果が表示されます。*最適化にランダム変数を使っているため、同じモデルでも数字が変動し一致しない可能性があります。
最適化の結果は試行した時間の右側にリストの形で表示されます。▼をクリックすると他の解を選択することが可能です。人員配置最適化では最適化するプロセスに従事する人数の合計とのずれ(Constraint)、出荷目標(データ)とシミュレーション結果のずれ(Loss)の2つの値の内、前者を最小化するように動作し、最適化終了後に表示されるのはConstraintが最も小さい結果となります。これは人員の過不足ない配置(Constraintが0)を優先するか、多少の人員の過不足に目をつぶっても目標達成(Lossが0)を優先するか、2つのアプローチが存在する中で表示ではConstraintが0である結果を優先表示しているためです。一方で右側に表示される目標との誤差の最小値(下図では1)はLossの最小値を示しています。
下図で表示されている結果はConstraintが0、Lossは37となりました。Constraintが0なので人員は過不足なく配置されていますが、得られたLossの最小値は1なので、より今回の最適化の目標(最適な人員割り振りをしつつ、データとのずれも最小にする)に近い結果が存在している可能性があります。

それでは、よりLossの小さい結果が得られていないか探してみましょう。下図のように▼をクリックすると、結果のリストが表示されます。リストの中にConstraintが0かつLossが1(最小値と同じ)となる解が見つかりました。この解は当初表示されていた解より今回の目的(最適な人員割り振りをしつつ、データとのずれを最小にする)に近い解と言えます。リストをクリックすると下図のように表示されるグラフが入れ替わります。

この時、モデルは次のように変更されます。

加工の作業人数:「2」が「5.01」へ
梱包作業の作業人数:「2」が「5.01」へ

このように「002加工」と「004梱包作業」の作業人数の合計が10人という条件を守った上で、生産目標を達成できる解が得られました。

ーまとめー

今回はassimeeを使った人員配置最適化の方法の解説を行いました。assimeeでは限られた手持ちの人員をプロセス間でどう割り振れば最も効率的かを求めることが可能です。それだけでなく、生産計画の達成度を同時にシミュレートすることも可能なので、人員と目標のどちらを変更すべきかの判断材料がユーザーへ提供されます。これにより担当者の経験や勘に頼る場合の多かった、物流や製造業の現場で行われる人員配置業務の効率化や非属人化を行うことが可能となります。

関連記事