स्वचालित स्टाफ शेड्यूलिंग सुविधा बनाने के लिए मुझे किस एल्गोरिथ्म का उपयोग करना चाहिए?


18

कुछ दर्जन अंशकालिक कर्मचारियों के साथ एक छोटे स्थानीय व्यवसाय की कल्पना करें (मेरे मामले में एक कुत्ता डेकेयर)। लक्ष्य स्वचालित रूप से साप्ताहिक स्टाफ कार्यक्रम बनाना है। मेरा प्रश्न इस समस्या का पता लगाने के लिए किस एल्गोरिदम के बारे में है।

ध्यान में रखने के लिए कई बाधाएं हैं, मुख्यतः (1) स्टाफ की उपलब्धता और (2) प्रत्येक शिफ्ट की जरूरतें, न केवल प्रत्येक शिफ्ट के लिए कितने कर्मचारी बल्कि प्रत्येक शिफ्ट के लिए आवश्यक कौशल (जैसे एक निश्चित शिफ्ट के लिए,) आपको किसी ऐसे व्यक्ति की आवश्यकता हो सकती है, जो कुत्तों के पिक-अप / ड्रॉप-ऑफ करने के लिए ड्राइव करना जानता हो, दूसरे के लिए, कोई व्यक्ति जो कुत्तों को स्नान करना जानता है, आदि)।

अन्य बाधाओं में कुछ कर्मचारियों के कॉम्बो से बचने या आवश्यकता जैसी चीजें शामिल हैं - शायद एक तरफ व्यक्तित्व संघर्ष के कारण, या दूसरे पर एक वरिष्ठ से जूनियर कर्मचारियों के लिए असमस द्वारा प्रशिक्षण की आवश्यकता।

इसके अलावा, वरीयताओं को ध्यान में रखना है। कुछ कर्मचारी सुबह, सोमवार और गुरुवार के बजाय पंक्ति में कुछ दो दिन पसंद करते हैं, हम जानते हैं कि हम हमेशा सभी की वरीयताओं को समायोजित नहीं कर सकते हैं। वास्तव में हमारे पास एक पदानुक्रम है जिसमें कर्मचारियों को उनकी पसंद पर पहली बार मिलता है।

मेरे पास एक कूबड़ है कि मौजूदा, पहले से हल किए गए एल्गोरिदम में इस समस्या को कम करने या व्यक्त करने का एक तरीका है। लेकिन मुझे पता नहीं है कि कौन से एल्गोरिदम का पता लगाना है। कौन सा मौजूदा, विशिष्ट एल्गोरिदम सबसे अधिक आशाजनक होगा?



3
और एक तरफ के रूप में, मैंने कभी भी एक एल्गोरिथ्म नहीं पाया है जो अतीत में बहुत सरल बाधाओं से परे इस समस्या के लिए काम करता है "हर किसी को किसी अन्य बाधा की अनदेखी करते हुए बेतरतीब ढंग से शेड्यूल पर नीचे रखें और उन्हें स्वैप करें या वांछित के रूप में बदलाव करें।"

4
JBoss Drools साइट से एक संपूर्ण समाधान उपलब्ध है: Optaplanner.org - आपको शेड्यूलिंग बाधाओं को कोड करने की आवश्यकता है, जैसे कि प्रति सप्ताह अधिकतम घंटे, आदि
BobDalgleish

मुझे संदेह है कि यह एसएटी समस्या के बराबर है, जिसे एनपी-पूर्ण होने के लिए जाना जाता है, लेकिन इसमें कोई संदेह नहीं है कि अच्छे एल्गोरिदम हैं जो उचित परिणाम प्राप्त करते हैं।
डेविड कॉनरेड

जवाबों:


16

ऐसी समस्याओं पर स्थानीय खोज ( Tabu Search , Simulated Annealing , Late Acceptance ) जैसे एल्गोरिदम बहुत अच्छी तरह से काम करते हैं।

जैसा कि बॉब सुझाव देता है, यदि आप जावा में काम कर रहे हैं, तो OptaPlanner (ओपन सोर्स) पर एक नज़र डालें । इस वीडियो को कर्मचारी रोस्टिंग पर देखें ।


3
आप या तो एल्गोरिदम की व्याख्या कर सकते हैं या ऐसा करने के लिए लिंक जोड़ सकते हैं? यदि आप लिंक जोड़ते हैं, तो कृपया उस पृष्ठ से थोड़ी जानकारी भी जोड़ें जो प्रासंगिक है।
एडम ज़ुकरमैन

किया हुआ। नोट: इनमें से कई विकिपीडिया पर भी बताए गए हैं।
जेफ्री डी स्मेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.