ฉันกำลังพยายามสร้างตารางเวลากีฬาลีก ฉันมีปัญหาในการระบุอัลกอริทึมเพื่อช่วยฉันเติมในแต่ละช่องอย่างมีประสิทธิภาพ
ข้อมูลตัวอย่างเพื่อสร้างตารางจะเป็น:
- 10 ทีม
- แต่ละทีมเล่นกัน 1 ครั้ง (ต้องมีเกมทั้งหมด 45 เกม)
- แต่ละทีมเล่นไม่เกิน 1 ครั้งต่อวัน
- ในการทดสอบของฉันฉันใช้ 9 วันกับ 5 ช่องต่อวัน
ตารางคำสั่งผสม (ประกอบด้วย 45 คอมโบ)
ID
Team1ID
Team2ID
บิตได้รับการแต่งตั้ง
ตารางเวลา (ประกอบด้วย 45 ช่วงเวลา)
กำหนดเวลา ID
บ้าน
ทีมออก
ห่างทีม
เกมวันเกมเวลา
ตอนนี้ขั้นตอนที่มีอยู่ของฉันเติมประมาณ 90% ของช่องที่เหลือ 10% ของช่องว่างของฉันให้ว่างเปล่ากับความขัดแย้งของการตั้งเวลาตามกฎข้างต้น
ฉันวนรอบตารางเวลาของฉันตามลำดับวันที่ / เวลาจากน้อยไปมาก
สล็อตแรกของฉันอาจเป็นวันเสาร์เวลา 8:00 น.
ฉันสอบถามรายชื่อทีมที่ยังไม่ได้กำหนด ฉันจึงจัดเรียงชุดค่าผสมที่เป็นไปได้ของทีมเหล่านั้น จากนั้นฉันใช้อาร์เรย์นั้นเพื่อดึง 1 ระเบียนแบบสุ่มจากตารางชุดค่าผสมของฉันจากชุดค่าผสมที่ยังไม่ได้กำหนดไว้และฉันวางทีมเหล่านั้นตามกำหนดเวลา ฉันจะตั้งค่าชุดค่าผสมนั้นตามที่ใช้แล้ว
ฉันวนซ้ำซ้ำแล้วซ้ำอีกและทุกครั้งที่รายการทีมที่ฉันว่างมีขนาดเล็กลงเรื่อย ๆ และผลลัพธ์ของฉันก็เล็กลงเช่นกัน
ฉันพบว่าบางวันก็ไม่เป็นไรและในวันอื่น ๆ ทีมสุดท้ายที่เหลืออีก 2 ทีมสุดท้ายของฉันได้เล่นไปแล้วในสัปดาห์ก่อนหน้าดังนั้นพวกเขาจะไม่ถูกเพิ่มเข้าไปในตารางอีกครั้ง
สิ่งเดียวที่ฉันยังไม่ได้ลองคือ "รีเซ็ต" วันที่มีข้อขัดแย้งและลองอีกครั้งเพื่อดูว่าฉันได้ตำแหน่งที่ดีขึ้นหรือไม่
ไม่มีใครมีข้อเสนอแนะใด ๆ ?