Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
希望休勤務を考慮したシフト作成
Search
NearMeの技術発表資料です
PRO
June 22, 2025
0
34
希望休勤務を考慮したシフト作成
NearMeの技術発表資料です
PRO
June 22, 2025
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
強化学習アルゴリズムPPOの改善案を考えてみた
nearme_tech
PRO
0
2
Apple Containerについて調べて触ってみた
nearme_tech
PRO
0
47
Rust 並列強化学習
nearme_tech
PRO
0
21
並列で⽣成AIにコーディングをやらせる
nearme_tech
PRO
1
130
Hub Labeling による高速経路探索
nearme_tech
PRO
0
90
Build an AI agent with Mastra
nearme_tech
PRO
0
77
Rustで強化学習アルゴリズムを実装する vol3
nearme_tech
PRO
0
43
Webアプリケーションにおけるクラスの設計再入門
nearme_tech
PRO
1
110
AIエージェント for 予約フォーム
nearme_tech
PRO
2
170
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
It's Worth the Effort
3n
187
28k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Designing for humans not robots
tammielis
253
25k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Facilitating Awesome Meetings
lara
55
6.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Thoughts on Productivity
jonyablonski
69
4.8k
GitHub's CSS Performance
jonrohan
1031
460k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Transcript
0 希望休勤務を考慮したシフト作成 2025-06-20 第124回NearMe技術勉強会 Ryota Matsumoto
1 ⽬次 • ⾃⼰紹介 • シフトスケジューリングと数理最適化 • 定式化 • ハード制約とソフト制約
• 具体例 • まとめ 1/28
2 ⾃⼰紹介 松本 遼⼤ (まつもと りょうた) 所属:東京理科⼤学 理学研究科 応⽤数学専攻 修⼠1年 学部時代 :数理統計、機械学習 研究分野:組合せ最適化
(なかでもパッキング問題) 趣味:体を動かすこと(野球‧バドミントン‧ランニング) 最近ハマっていること:家でYouTubeの10分間筋トレ 2/28
3 シフトスケジューリング • シフトスケジューリング問題とは ◦ 従業員の希望をもとに「どの従業員が‧いつ‧どのシフトに⼊るか」 を決定する問題のこと • シフトの作成を⼿作業でやると⼿間がかかり、⾯倒.... →数理最適化を⽤いることで、シフトをコンピュータが作成する
3/28
4 最適化問題 • ある与えられた条件下で、 ⽬的関数を最⼤化または最⼩化するような解を求める問題 4/28
5 数理最適化のアプローチ 現実問題 最適化問題 最適化結果 問題解決 定式化 ソルバーによる求解 採用 修正
5/28
6 数理最適化の定式化 コンピュータが計算できるよう、現実問題を数式に変換 現実問題 最適化問題 定式化 6/28
7 シフトスケジューリングと数理最適化 • 数理最適化では、 ◦ 「どの従業員が‧いつ‧どのシフトに⼊るか」→ 決定変数 ◦ 考慮しなければいけない条件 →
制約条件 ◦ どんなスケジュールを作成したいか→⽬的関数 → 制約条件を満たしながら、⽬的関数を最⼤化もしくは最⼩化する 7/28
8 制約条件 • 考慮しなければいけない条件 ◦ 労働基準法 ◦ 従業員の休みたい⽇ 8/28
9 1ヶ⽉間のシフトスケジュール定式化 ⽬的関数 minimize Σ( あるd⽇の必要な⼈員と実際の⼈員の誤差 ) ←⼩さくしたい (d=1,2,...,31) 制約条件
‧労働基準法 ‧各従業員の休みたい⽇ 9/28
10 問題点 • 従業員の休みたい⽇を全て採⽤すると、シフトが全然埋まらないことも.... → 制約条件を考え直す必要がある 10/28
11 希望休勤務 • 休みたい⽇の希望出したけど勤務しないといけない ◦ 例:前⽥さんは17⽇と20⽇の休みの希望を出したけど、17⽇は勤務することに なっている → 希望休勤務も場合によっては必要 11/28
12 ハード制約 と ソフト制約 • 制約 ◦ ハード制約:必ず守らないといけない条件 ▪ 労働基準法
◦ ソフト制約:なるべく守るべき条件 ▪ 各従業員の休みたい⽇ • 例 前⽥さんは今⽉の17⽇と20⽇休みたい 12/28
13 1ヶ⽉間のシフトスケジュール定式化 ⽬的関数 minimize Σ( あるd⽇の必要な⼈員と実際の⼈員の誤差 ) (d=1,2,...,31) 制約条件 ‧労働基準法
‧各従業員の休みたい⽇ 13/28
14 1ヶ⽉間のシフトスケジュール定式化 ⽬的関数 minimize Σ( あるd⽇の必要な⼈員と実際の⼈員の誤差 ) (d=1,2,...,31) 制約条件 (ハード)労働基準法
(ソフト)各従業員の休みたい⽇ 14/28
15 1ヶ⽉間のシフトスケジュール定式化 ⽬的関数 minimize Σ( あるd⽇の必要な⼈員と実際の⼈員の誤差 ) + α ×(希望休勤務回数)
(d=1,2,...,31) 制約条件 (ハード)労働基準法 ソフト制約をペナルティ項として⽬的関数に⼊れる 15/28
16 1ヶ⽉間のシフトスケジュール定式化 ⽬的関数 minimize Σ( あるd⽇の必要な⼈員と実際の⼈員の誤差 ) + α ×(希望休勤務回数)
(d=1,2,...,31) 制約条件 (ハード)労働基準法 ソフト制約をペナルティ項として⽬的関数に⼊れる αの値によって希望休勤務させたいか操作できる 16/28
17 具体例 ある1⽇のシフトで3⼈必要 2⼈は勤務予定だが、残りの1⼈は休みの希望を出している この時、希望通り休ませるのか、勤務させるのか 希望通り休み 17/28
18 α = 2のとき ある1⽇のシフトで3⼈必要 (必要な⼈員と実際の⼈員の誤差 ) + α ×(希望休勤務回数)
=(3−2)+2×0 =1 希望通り休み 18/28
19 α = 2のとき ある1⽇のシフトで3⼈必要 (必要な⼈員と実際の⼈員の誤差 ) + α ×(希望休勤務回数)
=(3−3)+2×1 =2 休み希望出したけど 勤務 19/28
20 α = 2のとき(まとめ) ある1⽇のシフトで3⼈必要 (ⅰ)希望通り休ませる (誤差) + α (希望休勤務回数)
=(3−2)+2×0 =1 最⼩化なのでこっちが最適解 (ⅱ)休ませない (誤差) + α (希望休勤務回数) =(3−3)+2×1 =2 20/28
21 α = 0.5のとき ある1⽇のシフトで3⼈必要 (必要な⼈員と実際の⼈員の誤差 ) + α ×(希望休勤務回数)
=(3−2)+0.5×0 =1 希望通り休み 21/28
22 α = 0.5のとき ある1⽇のシフトで3⼈必要 (必要な⼈員と実際の⼈員の誤差 ) + α ×(希望休勤務回数)
=(3−3)+0.5×1 =0.5 休み希望出したけど 勤務 22/28
23 α = 0.5のとき(まとめ) ある1⽇のシフトで3⼈必要 (ⅰ)希望通り休ませる (誤差) + α (希望休勤務回数)
=(3−2)+0.5×0 =1 (ⅱ)休ませない (誤差) + α (希望休勤務回数) =(3−3)+0.5×1 =0.5 最⼩化なのでこっちが最適解 23/28
24 まとめ パラメータ α によってシフト作成者の意思が反映できる • 従業員の希望休を優先したい → α を⼤きくするべき (よりハードに)
• とにかくシフトの不⾜を無くしたい → α を⼩さくするべき (よりソフトに) ⚠注意 • α = 0 にすると希望休を無視したシフトになる • α < 0 にすると希望休勤務を優先したシフトになる 24/28
25 まとめ • α < 0 にすると希望休勤務を優先したシフトになる →別の⽬的で活かせる 例:ベテランの前⽥さんを12⽇(忙しい⽇)に勤務させたい ある希望⽇を
なるべく休ませたい→ α > 0 なるべく働かせたい→ α < 0 25/28
26 ソフト制約 の メリット‧デメリット メリット • 実⾏可能解が増える • ⼈間の意思が反映できる デメリット
• ソルバーの計算時間増加 • パラメータの調整が難しい 26/28
27 Thank you