AIと最適化を用いたサプライチェーン最適化ソリューションを提供 - ログ・オプト -
ログ・オプトは研究者および技術者のプロフェッショナル集団です.
  • Home
  • Solution
    • Webシステムデモ&トライアル
    • Optimization Solver
      • 制約最適化ソルバーSCOP
      • スケジューリング最適化ソルバーOptSeq
      • 数理最適化ソルバーGurobi Optimizer
    • Web System
      • 基本分析
      • 安全在庫配置システムMESSA
      • ロットサイズ最適化システムOptLot
      • ロジスティックネットワーク設計システムMELOS
      • サービスネットワーク設計
      • シフト最適化システムOptShift
      • 配送最適化システムMETRO
      • サプライ・チェインリスク分析システムMERIODAS
      • 需要予測システムBD Forecast
  • News/Blog
  • Resource
  • About us
    • 会社概要
    • お問い合わせ
    • プライバシーポリシー
    • 情報セキュリティポリシー
  • IT導入補助金2020について

ENGLISH CHINESE

  • ENGLISH
  • CHINESE

LOG OPT(ログオプト)は研究者および技術者のプロフェッショナル集団です.

case_gannt_for_shift
2020-11-16

シフト最適化(ケーススタディ7)

Python, SCMOPT, サプライ・チェイン, 可視化, 実務, 最適化

注意:このケーススタディは,幾つかの企業のコンサルティングから抽出したもので,特定の企業を想定したものではない.データや登場人物は,架空のものである.


サービスネットワーク設計で成功したあなたに,今回は拠点でのシフト最適化の依頼が来た.
拠点では,入庫された荷物を行き先別に仕分けし,出庫する作業が行われているが,仕分け作業に膨大な時間が割かれている.
現状では,非常に忙しいピーク時間帯があるため多くのスタッフを当てている状態だ.
ただし,ピーク時以外は,行う作業がなく手持ち無沙汰になっている作業場もあるようだ.

ここでは,午前9時から21時の12時間を考え,スタッフの適切配置を考えることにする.現状では,30日の希望シフトを出してもらって,ほぼ希望通りに来てもらい,当日来た人数をもとに配置を経験的に(Excelで)決定しているが,これにSCMOPTに含まれるOptShiftを用いた最適化を適用することにする.以下では,OptShiftの用語を用いて解説するものとし,OptShiftの用語にならい,作業員はスタッフ,作業はジョブと呼ぶものとする.

計画期間は30日(1ヶ月分)の計画を建てることにする.これは,今までのルール通りにしたいという現場からの要望に基づくものである.
作業量は曜日によって異なるので,休日,曜日などの情報をもった日データを準備する.ちなみに,今回考える5月のスケジュールは休日が多いので,日本のカレンダーデータを用いることにする.

この会社では,休憩時間は4時間を超えると1時間の休憩をとるという規則が徹底されている.これは,以下の表のようになっており,5時間働いたら1時間休憩,10時間働いたら2時間休憩となっている.
また,期間(period)が3から始まるのは,一度出社したら,最低でも3時間は働くことを表している.

ジョブは,仕分けが中心だが,冷凍の仕分けと方面別の仕分け(2つ)に別れている.これらのジョブは,忙しくなる時間帯が異なるので,できればスタッフを複数のジョブに割り当てたいのだが,現状は忙しいときにはフル回転で,仕事がないときには休憩という感じになっている.

スタッフは全員時給1200円であり,人によって休日や最大稼働時間,出勤可能時間帯が異なる. また,希望する休日や,できるジョブの種類も設定できるようになっている.
ここでは,20人のスタッフが出勤可能とする.

最後に,各ジョブに対する必要人数を現場からの聞き取りで収集する.ここでは,平日,日曜,休日で作業量が大きく異なることから,3通りの時間帯別の必要人数データを準備する.

以上のデータを入力し,バイト代の総額を目的関数と設定する.さらに,制約逸脱のペナルティ費用も設定し,なるべく制約を満たしてくれる解を探索することにする.

ヒヤリングをすると,各制約を逸脱したときのペナルティは,以下のように推定される.もちろん,これらのペナルティを色々変更して,なるべく現場にあった解を探索する必要がある.

  • スタッフの人数の下限: 人数が足りないとスタッフに過剰の負担がかかることになる.これが続くとバイトが集まらなくなる可能性があるので,1人足りないと1万円のペナルティと設定する.
  • スタッフの人数の上限: 1人多いとその分の時給が会社の損になる. 時給は1200円だが,余裕をもって作業することができると,離職率が減るので,必要人数より1人多いと1000円のペナルティと設定する.
  •  ジョブチェンジ: スタッフは途中でジョブを変わることができる.当然,作業場は異なるので,移動する必要があり,移動時間分の時給が会社の損出になる.ここでは,作業場が比較的近いので,ペナルティは(頻繁なジョブチェンジを避けるために)1円と設定する.
  •  休憩の違反: 稼働時間に対して決められた休憩時間は「必ず」守るものとする. また,休憩が最初と最後に入ることは望ましくはないが,現場ではそれほど問題にしていないので,8000円と見積もることにする.
  • 月間稼働日数: 今月働きたい日数は,税金の関係で重要だ.これを逸脱すると来月以降に出勤してくれなくなるかもしれない.シフト最適化は動的な問題であり,今は1ヶ月の「静的な」問題を考えて,最適化しているが,来月以降も考慮して解かないと,年度末に大変なことになる(バイトが誰も来てくれない!).よって,スタッフ自身が,自分で今月はこのくらい働こうという希望日数を入力し,それからの逸脱をペナルティとする.ここではそれを,5000円と設定する.

以上のパラメータをもとに最適化すると,以下の結果が得られる. 総費用は,116万程度でこれは現状より10%くらい低いようだ.スタッフの必要人数を超過した人数の合計は,30日間で264時間となった.ジョブは3種類あるので,ひとつのジョブあたり1日3人くらいの余裕が必要ということになる. 他の制約逸脱はジョブチェンジの回数があり,30日で69回となった.1日あたりにすると2回程度であり,作業場が近いため,問題はないと判断される.

例として,4日目のシフトのガントチャートと,各ジョブに割り当てられた人数と必要人数を図示してみる.
この最適化された結果では,余剰なスタッフが割り当てられているが,そこにジョブが入る可能性もあるので,このまま使うことにした.

case_gannt_for_shift
case_requirement_for_shift

このように月次のシフト最適化は比較的簡単に解くことができ,得られる結果も,様々なオペレーショナルな条件を満たしたものとなる.
より大規模な問題の場合には,さらに様々な工夫を追加する必要があるが,制約最適化ソルバーSCOP(OptShiftに使われている最適化ソルバー)を使えば,それも比較的容易である.

 


本ケーススタディで使用したのはシフト最適化システム OptShift です.OptShiftは,サプライ・チェイン最適化システムSCMOPT に含まれています.

SCMOPTデモ&トライアルはこちら

サービスネットワーク設計(ケーススタディ6) PyCaretによる自動機械学習(AutoML)

Related Posts

AI, Python, SCMOPT, サプライ・チェイン, 実務

PyCaretによる自動機械学習(AutoML)

case sendo sol

Python, SCMOPT, サプライ・チェイン, 可視化, 実務, 最適化

サービスネットワーク設計(ケーススタディ6)

case prophet flat

Python, SCMOPT, サプライ・チェイン, 可視化, 実務, 最適化

需要予測(ケーススタディ5)

カテゴリー

  • AI
  • Python
  • SCMOPT
  • サプライ・チェイン
  • 可視化
  • 実務
  • 最適化
AIと最適化を用いたサプライチェーン最適化ソリューションを提供 - ログ・オプト -
Copyright © 2019 Log Opt Co., Ltd.