Sezonsuz ligler — yani sabit bir sezon başlangıcı/bitimi olmayan, takımların sürekli maç oynadığı lig yapıları — geleneksel sabit takvimlerden farklı planlama ihtiyaçları getirir. Bu rehberde amacımız; sezonsuz ligler için dinamik, ölçeklenebilir ve çakışma-toleranslı maç programı oluşturmanın mantığını açıklamak, 7 farklı algoritmayı tanıtmak ve Excel / Google Sheets / ücretsiz araçlarla nasıl uygulanabileceğini adım adım göstermek.
Neden özel bir yaklaşım gerek?
Sezonsuz liglerde şu zorluklarla sıkça karşılaşırsınız:
- Takımların giriş/çıkışının sıklığı (yeni katılan veya ayrılan takımlar)
- Esnek zaman dilimleri ve rastgele müsaitlikler
- Saha/venue sayısının sınırlılığı ve çakışmalar
- Uzun vadede dengeli rakip dağılımı ve tekrarların kontrolü
Bu sebeple tek bir yöntem her zaman yeterli olmaz; karma yaklaşımlar ve otomatikleştirilmiş optimizasyon gerekir.
Rehberin kısa özeti
Bu yazıda şunları bulacaksınız:
- 7 farklı algoritma / yaklaşımın pratik açıklaması
- Excel ve Google Sheets ile uygulanabilecek somut yöntemler ve formüller
- Ücretsiz araç önerileri (OpenSolver, OR-Tools, Google Sheets, LibreOffice)
- Çakışma çözümü ve optimizasyon ipuçları
7 Algoritma ve ne zaman kullanmalısınız
1) Round-Robin (Berger Tablosu) — Temel eşleştirme
Round-robin, tüm takımların birbirleriyle eşit sayıda karşılaşması gereken durumlar için uygundur. Berger algoritması, sabit bir takım tutup diğerlerini döndürerek hızlıca tur oluşturur. Sezonsuz ligde yeni takım eklenirse, basitçe rotasyonu genişleterek çizelgeyi yeniden oluşturabilirsiniz.
Excel uygulaması: Takım listesini A2:A7'ye koyun (6 takım). B1: tur numarası. Döndürme mantığını manuel tabloda kurabilirsiniz: ilk sütun sabit, diğerleri INDEX ile pozisyon referansı alır. Örnek formül (pozisyon i için): =INDEX($A$2:$A$7,MOD(i-1+tur-1,6)+1).
2) Berger + Byes — Tekil eşleşmeler ve düzensiz takım sayısı
Takım sayısı tek olduğunda her turda bir byee ihtiyaç vardır. Berger yöntemiyle, byeye düşen takım otomatik hesaplanır. Sezonsuz ligde sık takım giriş/çıkışı varsa byeleri rotasyona dahil etmek adildir.
3) Greedy Heuristics — Hızlı, pratik yer/zaman ataması
Basit ve hızlı bir çözüm: her maç için öncelikle en az çakışma yaratacak slotu seç. Performansı yüksek ve kolay uygulanabilir; ancak küresel optimumu garanti etmez. Büyük liglerde başlangıç çözümü olarak idealdir.
Excel uygulaması: Her maç için olası slot listesini satır bazında tutun. Bir yardımcı sütunda çakışma sayısını hesaplayın (COUNTIFS ile aynı slotta aynı takım/venue olan maçları saymak) ve MIN ile en düşük çakışmayı seçin. Örnek formül: =COUNTIFS(Slotlar!$B:$B, E2, Slotlar!$C:$C, F2).
4) Graph Coloring (Graf Boyama) — Slot ataması problemlerinde
Her maç bir düğüm, iki düğüm arasında ortak takım veya aynı saha bağı varsa kenar var. Amaç minimum renk (zaman dilimi) ile boyamak. Graf boyama, çakışmaları minimize eder ve paralel maç sayısını kontrol eder.
Excel uygulaması: Adjacency matrix (yanyana matris) oluşturun. Basit greedy coloring algoritmasını uygulamak için düğümleri derece sırasına göre sırala, ardından en küçük kullanılabilir renk ataması yap. Excel'de sıralama için SORT ve yardımcı sütunlar kullanılabilir.
5) Integer Linear Programming (ILP) — Kesin optimizasyon
Çakışma, maksimum dinlenme süresi, saha kapasitesi gibi kısıtların tamamı doğrusal ifadelerle modellenebilir. Amaç fonksiyonu: çakışma sayısını minimize etmek, adil dağılım vb. OpenSolver (LibreOffice) veya Excel Solver (küçük örnekler) ile çözebilirsiniz. Daha büyük problemler için CBC, Gurobi (ücretsiz olmayan) ya da OR-Tools kullanılır.
Not: ILP kesin çözümler sağlar fakat ölçek büyüdükçe çözüm süresi artar.
6) Constraint Programming (OR-Tools CP-SAT) — Kısıt tabanlı esneklik
CP-SAT (Google OR-Tools) sezonsuz ligler için güçlüdür: karmaşık kısıtları (ör: iki maç arası minimum dinlenme, haftada maksimum maç sayısı, ev-deplasman dengesi) doğal ve esnek şekilde tanımlayabilirsiniz. Python ile entegrasyon sayesinde otomasyon kolaydır.
Başlangıç tavsiyesi: küçük bir model kurup önce doğrulama yapın; sonra kısıtları kademeli artırın.
7) Metaheuristics: Simulated Annealing ve Genetic Algorithms — Çok amaçlı optimize
Bu yöntemler büyük/karmaşık problemlerde iyi başlangıç çözümleri veya zaman kısıtlı optimizasyon için uygundur. Genetik algoritma: popülasyon, çaprazlama, mutasyon ile çözümler evrilir. Simulated annealing: mevcut çözümü lokal değişikliklerle iyileştirir ve belirli bir kabul düzeniyle kötüleşmeyi de kısa sürede kabul eder.
Excel uygulaması zor olsa da Google Sheets + Apps Script veya Python ile kolayca test edilebilir.
Pratik ipucu: Önce basit bir Round-Robin + Greedy çözümü kurun. Ardından graf boyama veya CP/ILP ile çakışma-kısıtlarını sıfıra indirmeyi deneyin. Küçük takımlar için basit çözüm yeterlidir; ölçek büyüdükçe güçlü optimizasyon tekniklerine geçin.
Excel/Google Sheets ile uygulanabilir adım adım örnek: 6 takımlı dinamik çizelge
1) A2:A7 aralığına takımları yazın. B1 hücresine 'Tur 1', C1 'Ev', D1 'Deplasman' başlıklarını koyun.
2) Round-robin (Berger) yöntemi için bir döndürme tablosu kurun. İlk turu elle yazın: A vs F, B vs E, C vs D gibi. Sonraki turlar için pozisyonları bir hücrede =INDEX($A$2:$A$7,MOD(k-1+tur-1,6)+1) ile çağırın.
3) Zaman slotlarını (ör: Pazartesi 19:00, Salı 20:00) ayrı bir listeye koyun. Her maç satırı için bir slot ataması sütunu oluşturun.
4) Çakışma kontrolü: Eklenecek her slot için COUNTIFS ile aynı slotta aynı takımın olup olmadığını sayın. Örnek: =COUNTIFS($Slotlar$B:$B, E2, $Slotlar$C:$C, F2). 0 ise atama geçerli.
5) Otomatik seçim: küçük liglerde MIN(CakismaSayisi) ile en iyi slotu seçin, büyük liglerde ise OpenSolver kullanarak en iyi global dağılımı hesaplayın.
Ücretsiz araçlar ve kaynaklar
- Google OR-Tools (CP-SAT ve ILP modelleri) — güçlü, ücretsiz, Python desteği
- OpenSolver (LibreOffice/Excel) — ILP çözücü
- Google Sheets + Apps Script — otomasyon için pratik
- Round-robin generators (çeşitli web araçları) — hızlı başlangıç çizelgeleri
Karşılaştırma: Hangi yöntemi ne zaman seçmelisiniz?
- Basit ve hızlı: Berger / Round-robin + Greedy
- Çakışma yoğun, kısıt çoksa: Graf boyama veya Constraint Programming
- Kesin optimum gerekiyorsa (küçük-orta problem): ILP
- Büyük ölçekli, esnek optimizasyon: Metaheuristics (Genetic / Simulated Annealing)
Sık yapılan hatalar ve çözüm önerileri
- Her şeyi tek adımda çözmeye çalışmak — önce küçük bir modelle doğrulama yapın.
- Çakışma kontrollerini sadece saha bazında yapmak — takım müsaitlikleri ve seyahat sürelerini de dahil edin.
- Otomatik düzenlemeleri insan denetimi olmadan yayına almak — pilot dönem yapın.
Sonuç
Sezonsuz liglerin dinamik yapısı, esnek ve çok katmanlı bir yaklaşımı gerektirir. Bu rehberde sunduğum 7 algoritma; basitten karmaşığa doğru, pratik Excel/Sheets uygulanabilirliği ve ücretsiz araçlarla entegrasyonla birlikte dengeli bir yol haritası sunar. Önce basit bir Round-Robin + Greedy çözümü kurun, ardından çakışma ve kısıtlar arttıkça graf boyama, CP-SAT veya ILP'ye geçin. Büyük liglerde metaheuristiklerle performansı artırın. Her adımda küçük testler ve kullanıcı geri bildirimi alarak çözümü canlıya geçirin.
İleri adım önerisi: Eğer isterseniz, mevcut takım/saha/slot verilerinizi paylaşın; örnek bir Google Sheets şablonu hazırlayıp başlangıç çizelgenizi oluşturayım.