Bir spor ligi zamanlayıcısı oluşturmaya çalışıyorum. Her yuvayı verimli bir şekilde doldurmama yardımcı olacak bir algoritma tanımlamakta sorun yaşıyorum.
Programı oluşturmak için örnek veriler:
- 10 takım
- Her takım birbirlerini 1 kez oynar (toplam 45 oyun gereklidir)
- Her takım günde en fazla 1 kez oynar
- Testlerimde günde 5 slot ile 9 gün kullanıyorum.
Kombo Tablo (45 kombinasyon içerir)
ID
Team1ID
Team2ID
bit Atanmış
Zamanlama Tablosu (45 zaman aralığı içerir)
scheduleID
homeTeamID
awayTeamID
GameDate
Gametime
Şu anda mevcut prosedürlerim, alanların yaklaşık% 90'ını dolduruyor, yuvalarımın% 10'unu yukarıdaki kurallara göre bir zamanlama çakışmasına boş bırakıyor.
Zaman çizelgesi tablomda artan tarih / saat sırasına göre döngü yapıyorum.
İlk slotum Cumartesi sabah 8'de olabilir.
Henüz planlanmamış takımların listesini sorgularım. Daha sonra bu takımların bir dizi olası kombinasyonunu yapıyorum. Daha sonra bu diziyi, henüz planlanmamış kombinasyonlardan kombinasyon tablomdan 1 rastgele kayıt almak için kullanıyorum ve bu takımları programa yerleştiriyorum. Sonra bu kombinasyonu kullandım.
Döngüyü tekrar tekrar tekrar ediyorum ve mevcut takım listem her küçüldüğünde ve sonuç olarak dizim de daha küçük.
Bazı günlerin iyi gittiğini ve diğer günlerde son 2 kalan takımımın bir önceki hafta oynadıklarını görüyorum, bu yüzden programa tekrar eklenmezler.
Henüz denemediğim tek şey, çakışma günlerini "sıfırlamak" ve daha iyi yerleşimler alıp almadığımı görmek için tekrar denemek.
Kimsenin önerisi var mı?