Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
遺伝的アルゴリズムでシフト組みを自動化した話
Search
ShibaNyan
September 10, 2018
Programming
0
2.1k
遺伝的アルゴリズムでシフト組みを自動化した話
BitValley2018 AfterPartyのLTでお話しました.
当番のシフトを組むのに時間がかかりすぎるという問題を,遺伝的アルゴリズムを使ってLINE BOTに実装することで解決しました.
ShibaNyan
September 10, 2018
Tweet
Share
More Decks by ShibaNyan
See All by ShibaNyan
証明写真を30円で作る
shiba6v
0
970
IPythonマジックコマンドを作る
shiba6v
1
1.8k
畳み込みニューラルネットワーク(CNN)の判断根拠の可視化手法 (20分トーク用)
shiba6v
1
1.3k
Other Decks in Programming
See All in Programming
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
420
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
140
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
110
How Software Deployment tools have changed in the past 20 years
geshan
0
28k
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
290
CloudNative Days Winter 2025: 一週間で作る低レイヤコンテナランタイム
ternbusty
7
2k
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
5
19k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
340
CSC305 Lecture 17
javiergs
PRO
0
300
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
5.1k
関数実行の裏側では何が起きているのか?
minop1205
1
650
WebRTC と Rust と8K 60fps
tnoho
2
1.9k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Thoughts on Productivity
jonyablonski
73
5k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
The Invisible Side of Design
smashingmag
302
51k
Automating Front-end Workflow
addyosmani
1371
200k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Transcript
遺伝的アルゴリズムで シフト組みを自動化した話 BitValley 2018 AfterParty LT
自己紹介 • シバニャン • 京都大学工学部4回生 • Twitter: @_6v_ • CAMPHOR-
当番のシフト • 30コマ,約30人のシフト組み • 1コマに1人割り当てる
シフト決定の流れ 調整サービス シフト組み シフト発表 • 調整サービスを利用してシフトを提出してもらう • 手動でシフト組み • グループLINEで完成したシフトを発表
シフト組みの難しさ • 30コマ,約30人のシフト組み • 30^30 通り(≒2×10^44)
シフト組みの難しさ • 30コマ,約30人のシフト組み • 30^30 通り(≒2×10^44) 2時間かかる・・・ 自動化したい・・・
シフト組みの課題 • 同じ人が2回入らないといけない場合がある • 2回入る場合は日時が離れている方が良い • △,×を考慮するべき など・・・
シフト組みの課題 • 同じ人が2回入らないといけない場合がある • 2回入る場合は日時が離れている方が良い • △を考慮するべき など・・・
遺伝的アルゴリズムでやる シフトを遺伝子に見立てて,生物が交叉,突然 変異,自然淘汰によって進化するようにシフトを 改良していく [(枠1),(枠2),(枠3),…,(枠30)] 例) [(Gさん),(Eさん),(Nさん),…,(Eさん)] [(Aさん),(Lさん),(Gさん),…,(Oさん)]
遺伝的アルゴリズムの説明 • シフト表をランダムに30パターン生成 ↓ • シフト表の良さを評価 ↓ • 評価が良かったシフト6個残して後は消す ↓
• 交叉,突然変異させて30個に増やす 200ループ
遺伝的アルゴリズムの説明 • シフト表をランダムに30パターン生成 200ループ [(Gさん),(Eさん),(Nさん),…,(Eさん)] [(Aさん),(Lさん),(Gさん),…,(Oさん)] … (30パターン) [(Rさん),(Aさん),(Nさん),…,(Dさん)]
遺伝的アルゴリズムの説明 • シフト表をランダムに30パターン生成 • シフト表の良さを評価 200ループ [(Gさん),(Eさん),(Nさん),…,(Eさん)] : 300点 [(Aさん),(Lさん),(Gさん),…,(Oさん)]
: 100点 … (30パターン) [(Rさん),(Aさん),(Nさん),…,(Dさん)] : 50点
遺伝的アルゴリズムの説明 • シフト表をランダムに30パターン生成 • シフト表の良さを評価 • 評価が良かったシフト6個残して後は消す 200ループ [(Gさん),(Eさん),(Nさん),…,(Eさん)] :
300点 [(Aさん),(Lさん),(Gさん),…,(Oさん)] : 100点 … (6パターン)
遺伝的アルゴリズムの説明 • シフト表をランダムに30パターン生成 • シフト表の良さを評価 • 評価が良かったシフト6個残して後は消す • 交叉,突然変異させて30個に増やす 200ループ
[(Gさん),(Eさん),(Nさん),…,(Eさん)] [(Aさん),(Lさん),(Gさん),…,(Oさん)] [(Aさん),(Eさん),(Nさん),…,(Oさん)] … (30パターン)
遺伝的アルゴリズムの説明 • シフト表をランダムに30パターン生成 • シフト表の良さを評価 • 評価が良かったシフト6個残して後は消す • 交叉,突然変異させて30個に増やす 200ループ
[(Gさん),(Eさん),(Nさん),…,(Eさん)] [(Aさん),(Lさん),(Gさん),…,(Oさん)] [(Aさん),(Eさん),(Nさん),…,(Oさん)] [(Gさん),(Eさん),(Nさん),…,(Tさん)] … (30パターン)
遺伝的アルゴリズムの説明 • シフト表をランダムに30パターン生成 ↓ • シフト表の良さを評価 ↓ • 評価が良かったシフト6個残して後は消す ↓
• 交叉,突然変異させて30個に増やす 200ループ
遺伝的アルゴリズムの説明 • シフト表をランダムに30パターン生成 ↓ • シフト表の良さを評価 ↓ • 評価が良かったシフト6個残して後は消す ↓
• 交叉,突然変異させて30個に増やす 200ループ 大事なのはここ! 評価する式を立てる
シフト組みの課題 より • 同じ人が2回入らないといけない場合がある • 2回入る場合は日時が離れている方が良い • △,×を考慮するべき
シフト組みの課題 より • 同じ人が2回入らないといけない場合がある →同じ人が2回入ったら 100点 を減らす • 2回入る場合は日時が離れている方が良い →(離れている日数)×1点
を加える • △,×を考慮するべき →△一個につき10000点,×一個につき1000000 点 を減らす
シフト組みの課題 より • 同じ人が2回入らないといけない場合がある →同じ人が2回入ったら 100点 を減らす • 2回入る場合は日時が離れている方が良い →(離れている日数)×1点
を加える • △,×を考慮するべき →△一個につき10000点,×一個につき1000000 点 を減らす 評価式を追加するだけで, 簡単にシフトの決め方を 変えられる!
BOTにして 使ってみる
まとめ • 遺伝的アルゴリズムを使うと,いい感じのシフ トが組める • シフトの組み方の変更が簡単 • BOTにすると非エンジニアも使えて便利