मैं एक स्पोर्ट्स लीग शेड्यूलर बनाने की कोशिश कर रहा हूं। मुझे प्रत्येक स्लॉट में कुशलतापूर्वक भरने में मदद करने के लिए एक एल्गोरिथ्म की पहचान करने में समस्या हो रही है।
अनुसूची बनाने के लिए नमूना डेटा होगा:
- 10 टीमें
- प्रत्येक टीम 1 बार एक दूसरे से खेलती है (45 कुल खेल आवश्यक)
- प्रत्येक टीम प्रति दिन 1 से अधिक बार नहीं खेलती है
- अपने परीक्षण में मैं प्रति दिन 5 स्लॉट के साथ 9 दिनों का उपयोग कर रहा हूं।
कॉम्बो टेबल (45 कम्बोस शामिल हैं)
ID
Team1ID
Team2ID
bitAssign
अनुसूची तालिका (45 समय स्लॉट शामिल हैं)
scheduleID
homeTeamID
awayTeamID
GameDate
GameTime
अभी मेरी मौजूदा प्रक्रियाएँ ऊपर के नियमों के आधार पर शेड्यूलिंग संघर्ष के लिए मेरे स्लॉट्स के १०% को खाली करते हुए ९ ०% स्लॉट्स भरती हैं।
मैं अपने शेड्यूल टेबल पर आरोही तिथि / समय क्रम में लूप करता हूं।
मेरा पहला स्लॉट शनिवार को सुबह 8 बजे हो सकता है।
मैं उन टीमों की सूची को क्वेरी करता हूं जो अभी तक अनुसूचित नहीं हुई हैं। मैं फिर उन टीमों के संभावित संयोजनों की एक सरणी बनाता हूं। फिर मैं अपने संयोजन तालिका से 1 यादृच्छिक रिकॉर्ड खींचने के लिए उस सरणी का उपयोग करता हूं जो अभी तक निर्धारित नहीं किया गया है और मैं उन टीमों को अनुसूची पर रखता हूं। मैंने तब उस संयोजन का उपयोग किया।
मैं लूप को बार-बार दोहराता हूं और हर बार उपलब्ध टीमों की मेरी सूची छोटी हो जाती है और परिणामस्वरूप मेरा सरणी भी छोटा होता है।
मुझे लग रहा है कि कुछ दिन ठीक चल रहे हैं, और अन्य दिनों में मेरी अंतिम 2 अंतिम टीमें पहले ही एक सप्ताह में खेल चुकी हैं, इसलिए उन्हें फिर से शेड्यूल में नहीं जोड़ा गया है।
केवल एक चीज जिसे मैंने अभी तक कोशिश की है वह संघर्ष के दिनों को "रीसेट" करने और उन्हें फिर से कोशिश करने के लिए है कि क्या मुझे बेहतर प्लेसमेंट मिले।
क्या किसी के पास कोई सुझाव है?