Algoritma apa yang harus saya gunakan untuk membuat fitur penjadwalan staf otomatis?

18

Bayangkan sebuah bisnis lokal kecil (dalam kasus saya tempat penitipan anak anjing) dengan beberapa lusin karyawan paruh waktu. Tujuannya adalah untuk secara otomatis membuat jadwal staf mingguan. Pertanyaan saya adalah tentang pendekatan algoritmik apa yang harus dijelajahi untuk masalah ini.

Ada banyak kendala yang perlu diingat, terutama (1) ketersediaan staf dan (2) kebutuhan setiap shift, tidak hanya berapa banyak staf untuk setiap shift tetapi keterampilan yang dibutuhkan untuk setiap shift (misalnya untuk shift tertentu, Anda mungkin membutuhkan seseorang yang tahu cara mengemudi untuk mengambil / drop-off anjing, untuk orang lain, seseorang yang tahu bagaimana cara memandikan anjing, dll).

Kendala lain termasuk hal-hal seperti menghindari atau memerlukan kombo staf tertentu - mungkin karena konflik kepribadian di satu sisi, atau kebutuhan untuk pelatihan oleh osmosis dari staf senior ke staf junior di sisi lain.

Juga, ada preferensi untuk dipertimbangkan. Beberapa staf lebih suka pagi hari, sekitar dua hari berturut-turut daripada mengatakan Senin dan Kamis, dll. Kami tahu kami tidak selalu dapat mengakomodasi preferensi semua orang. Faktanya, kami memiliki hierarki di mana karyawan mendapat posisi pertama berdasarkan pilihan mereka.

Saya punya firasat bahwa ada cara untuk mengurangi atau mengungkapkan masalah ini menjadi, algoritma yang sudah diselesaikan. Tapi saya tidak tahu algoritma mana yang harus dijelajahi. Algoritma spesifik apa yang ada dan paling menjanjikan?

Ghopper21
sumber
3
Dan sebagai tambahan, saya tidak pernah menemukan algoritma yang bekerja untuk masalah ini di luar kendala yang paling sederhana di masa lalu di luar "taruh semua orang pada jadwal secara acak dengan mengabaikan kendala lain dan biarkan mereka bertukar atau mengambil giliran kerja seperti yang diinginkan."
4
Ada solusi lengkap yang tersedia dari situs JBoss Drools: optaplanner.org - Anda perlu menyusun batasan penjadwalan, seperti jam maksimum per minggu, dll.
BobDalgleish
Saya menduga ini setara dengan masalah SAT, yang dikenal sebagai NP-lengkap, tetapi tidak ada keraguan algoritma yang baik yang mendapatkan hasil yang masuk akal.
David Conrad

Jawaban:

16

Algoritma seperti Pencarian Lokal (Pencarian Tabu , Simulasi Annealing , Penerimaan Terlambat ) bekerja sangat baik pada masalah seperti itu.

Seperti yang disarankan Bob, jika Anda bekerja di Jawa, lihatlah OptaPlanner (open source). Lihat video ini di daftar nama karyawan .

Geoffrey De Smet
sumber
3
Bisakah Anda menjelaskan algoritma atau menambahkan tautan ke suatu tempat yang tidak? Jika Anda menambahkan tautan, harap juga tambahkan sedikit informasi dari halaman yang relevan.
Adam Zuckerman
Selesai Catatan: banyak dari ini dijelaskan di wikipedia juga.
Geoffrey De Smet