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
27
希望休勤務を考慮したシフト作成
NearMeの技術発表資料です
PRO
June 22, 2025
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
第127回NearMe技術勉強会 -Apple Containerについて調べて触ってみた-
nearme_tech
PRO
0
21
Rust 並列強化学習
nearme_tech
PRO
0
19
並列で⽣成AIにコーディングをやらせる
nearme_tech
PRO
1
89
Hub Labeling による高速経路探索
nearme_tech
PRO
0
83
Build an AI agent with Mastra
nearme_tech
PRO
0
74
Rustで強化学習アルゴリズムを実装する vol3
nearme_tech
PRO
0
39
Webアプリケーションにおけるクラスの設計再入門
nearme_tech
PRO
1
91
AIエージェント for 予約フォーム
nearme_tech
PRO
2
170
ULID生成速度を40倍にしたった
nearme_tech
PRO
2
59
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
332
22k
Six Lessons from altMBA
skipperchong
28
3.9k
It's Worth the Effort
3n
185
28k
How to train your dragon (web standard)
notwaldorf
96
6.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Why Our Code Smells
bkeepers
PRO
337
57k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
What's in a price? How to price your products and services
michaelherold
246
12k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
770
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