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?
sumber
Jawaban:
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 .
sumber