Het Koppelingsalgoritme

Hoofdstuk 5 — Gids Hoe het FIDE Dutch koppelingsalgoritme werkt: criteria C1-C19 vereenvoudigd, scoregroepen, kleuren, floaters. Bijgewerkt voor FIDE 2026-regels. Inclusief TRF-bestandsgids.

Elke keer dat u op "Koppeling genereren" klikt in een Zwitsers toernooi, draait er in milliseconden een geavanceerd algoritme op de achtergrond. Begrijpen hoe het werkt bevredigt niet alleen uw nieuwsgierigheid — het helpt u "ongewone" koppelingen uit te leggen aan spelers, veelgemaakte configuratiefouten te vermijden en het maximale uit uw koppelingssoftware te halen. Dit hoofdstuk ontrafelt het FIDE Dutch System, bijgewerkt voor de regels van kracht sinds 1 februari 2026.

Waarom een algoritme? Waarom niet gewoon handmatig koppelen?

In de vroegste dagen van schaaktoernooien koppelden arbiters spelers met de hand — vaak met een fysiek bord en gekleurde fiches. Voor 8 spelers over 5 ronden is dat haalbaar. Voor 200 spelers over 9 ronden is het een logistieke nachtmerrie die uren duurt en foutgevoelig is.

Belangrijker nog, handmatig koppelen introduceert vooringenomenheid. Een arbiter die de spelers kent, kan (bewust of onbewust) "interessante" confrontaties creëren, bepaalde spelers bevoordelen of bepaalde combinaties vermijden. Een algoritme is deterministisch en transparant: bij dezelfde invoer produceert het altijd dezelfde uitvoer, en iedereen kan het resultaat verifiëren.

Het FIDE Dutch System is geen enkele regel — het is een gerangschikte hiërarchie van criteria. Het algoritme probeert eerst de criteria met de hoogste prioriteit te vervullen, en versoepelt pas criteria met lagere prioriteit wanneer er geen andere manier is om de koppelingen van de ronde te voltooien.

Wat is er veranderd in FIDE 2026

Op 1 februari 2026 heeft FIDE een herziene versie van de Zwitserse koppelingsregels (C.04.1, C.04.2, C.04.3) van kracht gemaakt. De wijzigingen zijn grotendeels verduidelijkingen en hernummeringen, maar ze zijn belangrijk voor elk FIDE-gewaarmerkt evenement vanaf die datum:

GebiedVóór feb 2026Vanaf feb 2026
Criterianummering Diverse letter-/nummercodes (A1, B1…) Uniforme C1–C19-reeks
Kleurverdeling Enige dubbelzinnigheid in randgevallen Expliciete regels voor alle randgevallen
Niet-gespeelde partijen Behandeld als volledige winst voor kleurgeschiedenis Behandeld als ½ punt voor zowel kleur- als Buchholz-doeleinden
Burstein-systeem Beschreven in C.04.4 Blijft in C.04.4, kleine verduidelijkingen
Dubbel-Zwitsers systeem Nieuw: C.04.5 (twee parallelle Zwitserse brackets)
Baku-versnelling C.04.5 Hernummerd naar C.04.7
§ FIDE C.04.1 Basisregels (van kracht 1 feb 2026) en C.04.3 FIDE Dutch System (van kracht 1 feb 2026) zijn de primaire referenties. → Lees C.04.1  |  → Lees C.04.3

Scoregroepen: de basis van Zwitserse koppeling

Het fundamentele idee van het Zwitserse systeem is eenvoudig: spelers met gelijke scores spelen tegen elkaar. Een scoregroep is de verzameling van alle spelers die op een bepaald moment in het toernooi hetzelfde aantal punten hebben.

Binnen elke scoregroep worden spelers gerangschikt op basis van hun plaatsing (die meestal gebaseerd is op hun rating vóór het toernooi). De groep wordt vervolgens in twee helften gesplitst: de bovenste helft (hoger geplaatste spelers) en de onderste helft (lager geplaatste spelers). Speler 1 in de bovenste helft speelt tegen speler 1 in de onderste helft, speler 2 tegen speler 2, enzovoort.

Scoregroepkoppeling — visueel voorbeeld (8 spelers, ronde 1)
SCOREGROEP: 0,0 punten (alle spelers, ronde 1)
S1Fischer2200 — BOVENSTE HELFT
S2Kasparov2180 — BOVENSTE HELFT
S3Tal2150 — BOVENSTE HELFT
S4Petrosian2120 — BOVENSTE HELFT
S5Spassky2080 — onderste helft
S6Karpov2050 — onderste helft
S7Botvinnik1990 — onderste helft
S8Lasker1960 — onderste helft
↕ koppel bovenste helft tegen onderste helft (S1↔S5, S2↔S6, S3↔S7, S4↔S8)
Fischer (W)vsSpassky (Z)
Kasparov (W)vsKarpov (Z)
Tal (W)vsBotvinnik (Z)
Petrosian (W)vsLasker (Z)

Na ronde 1 splitsen de scoregroepen zich. Spelers die wonnen (1,0 punt) vormen de bovenste groep. Spelers die remise speelden (0,5) vormen de middengroep. Spelers die verloren (0,0) vormen de onderste groep. Het algoritme probeert vervolgens binnen elke groep te koppelen — maar het wordt al snel ingewikkeld, zoals we in ronde 2 zullen zien.

De criteriahiërarchie: C1 tot C19

Het FIDE Dutch-systeem definieert 19 criteria, gerangschikt op prioriteit. Bij het genereren van koppelingen voor een scoregroep probeert het algoritme een koppeling te vinden die zoveel mogelijk criteria met hoge prioriteit vervult. Als het vervullen van C3 betekent dat C7 geschonden wordt, kiest het voor C3 — tenzij C3 zelf wordt overschreven door C1 of C2.

Hier zijn de belangrijkste criteria in begrijpelijke taal uitgelegd:

  • C1
    Geen speler krijgt meer dan één bye Absoluut
    Een bye (vrijpunt bij een oneven aantal spelers) kan slechts één keer per speler worden toegekend, en nooit aan een speler die er al een heeft ontvangen. Dit kan niet worden overschreven.
  • C2
    Geen speler speelt tweemaal tegen dezelfde tegenstander Absoluut
    Het algoritme koppelt nooit twee spelers die al eerder tegen elkaar hebben gespeeld in hetzelfde toernooi. Dit is een absolute regel — deze kan niet worden versoepeld, zelfs niet in de laatste ronde. Als vermijding werkelijk onmogelijk is (zeer kleine toernooien met veel ronden), moet de arbiter ingrijpen.
  • C3
    Minimaliseer het scoreverschil tussen gekoppelde spelers Hoog
    Spelers in dezelfde scoregroep hebben idealiter identieke scores. Als koppeling binnen de groep onmogelijk is, kan het algoritme over scoregroepen heen koppelen (floaters), maar probeert het scoreverschil te minimaliseren. Een speler met 3,0 punten die speelt tegen iemand met 2,5 is beter dan spelen tegen iemand met 2,0.
  • C4
    Minimaliseer het aantal downfloaters Hoog
    Een downfloater is een speler die van zijn scoregroep naar de volgende lagere groep wordt verplaatst omdat hij niet binnen zijn eigen groep kon worden gekoppeld. Het algoritme probeert te minimaliseren hoe vaak dit gebeurt.
  • C5
    Geen speler floatt tweemaal achtereenvolgens als het vermijdbaar is Hoog
    Als een speler in de vorige ronde naar een lagere groep is verplaatst, probeert het algoritme te voorkomen dat dit opnieuw gebeurt in deze ronde. Opeenvolgende downfloating wordt zwaar bestraft.
  • C6–C8
    Kleurbalans en afwisseling Hoog
    Elke speler moet zoveel mogelijk van kleur wisselen (wit, zwart, wit, zwart…). Geen speler mag meer dan 2 opeenvolgende partijen met dezelfde kleur spelen. De "kleurvoorkeur" wordt bijgehouden vanaf ronde 1 en beïnvloedt elke volgende koppelingsbeslissing.
  • C9–C12
    Kleurverschilbeperkingen Gemiddeld
    Het "kleurverschil" is het aantal witpartijen minus het aantal zwartpartijen. De FIDE-regels streven ernaar dit zo lang mogelijk binnen ±1 te houden. Spelers met grote kleuronbalans krijgen prioriteit voor hun voorkeurskleur in de volgende ronde.
  • C13–C19
    Plaatsing en koppelingskwaliteit binnen de scoregroep Gemiddeld
    Van alle geldige koppelingen die C1–C12 vervullen, selecteert het algoritme degene die het beste overeenkomt met de "ideale" structuur van bovenste helft tegen onderste helft. Hier speelt de rating-/plaatsingsvolgorde opnieuw een rol als kwaliteitsmaatstaf binnen de groep.
Het belangrijkste inzicht

Het algoritme optimaliseert niet voor "de beste schaakconfrontatie" — het optimaliseert voor naleving van de criteriahiërarchie. Soms levert dit koppelingen op die vreemd lijken voor spelers. Sectie 9 van dit hoofdstuk legt de meest voorkomende "vreemde koppeling"-scenario's uit.

Kleurverdeling: wit, zwart en balans

Kleurverdeling is een van de meest misverstane onderdelen van Zwitserse koppeling. Spelers hebben vaak het gevoel dat ze te vaak zwart krijgen — en soms hebben ze gelijk, maar meestal doet het algoritme precies wat de regels vereisen.

Kleurvoorkeur versus kleurrecht

Een speler heeft een kleurvoorkeur als zijn kleurgeschiedenis niet in balans is (meer wit- dan zwartpartijen of omgekeerd). Hij heeft een kleurrecht als hij twee opeenvolgende partijen met dezelfde kleur heeft gespeeld — in dat geval moet hij de volgende keer de tegenovergestelde kleur krijgen, tenzij het onmogelijk is de ronde überhaupt te koppelen.

Wanneer twee spelers met tegenstrijdige kleurrechten aan elkaar worden gekoppeld, moet het algoritme de regel voor één van hen doorbreken. Het kiest de speler met de zwakkere claim — meestal degene wiens kleurreeks over het geheel minder onbalans vertoont.

Kleur in ronde 1

In ronde 1 hebben alle spelers een gelijke kleurgeschiedenis (geen). Kleuren worden toegewezen volgens een algemeen principe: de hoger geplaatste speler (in de bovenste helft) krijgt wit, de lager geplaatste speler krijgt zwart. Daarom speelt Fischer (S1) in het Aljechin Memorial met wit en Spassky (S5) met zwart.

§ Kleurverdelingsregels zijn gespecificeerd in FIDE C.04.3, secties 4–7 (van kracht 1 feb 2026). → Lees C.04.3

Floaters en downfloaters

Wanneer een scoregroep een oneven aantal spelers heeft, kan één speler niet binnen de groep worden gekoppeld en moet worden verplaatst. Deze speler wordt een floater genoemd.

Een downfloater wordt verplaatst naar de volgende lagere scoregroep (bijv. van de 3,0-puntengroep naar de 2,5-puntengroep). Een upfloater is de speler in de lagere groep die deze "gast" van boven ontvangt.

Het algoritme probeert floating te minimaliseren (criteria C4–C5). Wanneer floating onvermijdelijk is, volgt het specifieke regels over wie floatt: de laagst gerangschikte speler in de scoregroep is de voorkeursdownfloater, tenzij die speler al in de vorige ronde heeft gefloat of een bijzonder sterk kleurrecht heeft dat koppeling in de lagere groep onmogelijk maakt.

📉 Downfloater-voorbeeld — ronde 2 van het Aljechin Memorial

Na ronde 1: Fischer, Kasparov, Tal, Petrosian wonnen allemaal → 4 spelers op 1,0 punt (even groep, geen floater nodig).

Spassky, Karpov, Botvinnik, Lasker verloren allemaal → 4 spelers op 0,0 punten (even groep, geen floater nodig).

Ronde 2 is schoon: de 1,0-groep koppelt intern, de 0,0-groep koppelt intern.

Maar stel dat Tal remise speelde in plaats van won: dan zouden we 3 spelers op 1,0 hebben, 2 op 0,5 en 3 op 0,0. De 0,5-groep heeft slechts 2 spelers — dat is prima (één koppeling). Maar de 1,0-groep heeft 3 spelers — één moet downfloaten naar de 0,5-groep. De laagst gerangschikte speler op 1,0 (Petrosian, S4) wordt de downfloater.

Ronde 1 in detail: het Aljechin Memorial

Laten we de volledige koppeling van ronde 1 stap voor stap doorlopen voor ons toernooi met 8 spelers.

Invoer: 8 spelers, allemaal op 0,0 punten, gerangschikt op ratingplaatsing. Eén scoregroep: {Fischer, Kasparov, Tal, Petrosian, Spassky, Karpov, Botvinnik, Lasker}.

Stap 1 — Splits in twee helften: Bovenste helft = Fischer, Kasparov, Tal, Petrosian (S1–S4). Onderste helft = Spassky, Karpov, Botvinnik, Lasker (S5–S8).

Stap 2 — Pas criteria C1–C2 toe: Geen eerdere tegenstanders (eerste ronde), dus geen beperking. Nog geen byes.

Stap 3 — Ideale koppeling: S1↔S5, S2↔S6, S3↔S7, S4↔S8. Alle criteria vervuld. Dit is de koppeling.

Stap 4 — Kleurverdeling: De bovenste helft krijgt standaard wit in ronde 1.

Aljechin Memorial — Ronde 1 definitieve koppelingen
Bord 1Fischer (W)vsSpassky (Z)
Bord 2Kasparov (W)vsKarpov (Z)
Bord 3Tal (W)vsBotvinnik (Z)
Bord 4Petrosian (W)vsLasker (Z)

Ronde 2 in detail: scoregroepen ontstaan

Na de resultaten van ronde 1 (Fischer 1–0 Spassky, Kasparov 1–0 Karpov, Tal 1–0 Botvinnik, Petrosian 1–0 Lasker), hebben we twee scoregroepen:

Groep A (1,0 pt): Fischer, Kasparov, Tal, Petrosian — alle 4 gewonnen.
Groep B (0,0 pt): Spassky, Karpov, Botvinnik, Lasker — alle 4 verloren.

Koppeling groep A: Splits in twee helften → Fischer, Kasparov (boven) vs Tal, Petrosian (onder). Ideaal: Fischer↔Tal, Kasparov↔Petrosian. Controle C2: nog niet tegen elkaar gespeeld. ✓

Kleurstap: In ronde 1 hadden Fischer en Kasparov wit. Nu hebben ze zwart nodig. Tal en Petrosian hadden zwart, nu hebben ze wit nodig. Dus: Tal (W) vs Fischer (Z), Petrosian (W) vs Kasparov (Z). ✓

Bekijk live gegenereerde koppelingen in ChessPairings.org

Maak een testtoernooi met 8 spelers en kijk hoe het algoritme ronde voor ronde werkt.

Probeer het nu →

"Vreemde" koppelingen: waarom gebeurt dit?

Spelers en organisatoren stellen vaak bepaalde koppelingen ter discussie. Hier zijn de meest voorkomende situaties en de algoritmische reden erachter.

"Speler X heeft 3 punten maar is gekoppeld aan iemand met slechts 2,5"

Dit gebeurt wanneer de 3,0-puntengroep een oneven aantal spelers heeft en iemand moet downfloaten. Het algoritme heeft elke combinatie binnen de 3,0-groep geprobeerd maar ontdekte dat alle mogelijke koppelingen C1, C2 of C5 schenden (bijv. alle 3,0-puntenspelers hebben al tegen elkaar gespeeld, of hebben ernstige kleurconflicten). Eén speler downfloaten naar de 2,5-groep was de enige geldige optie.

"Speler X krijgt altijd zwart"

Wanneer een speler downfloatt, moet hij vaak een kleur accepteren die hij normaal niet zou krijgen, omdat de koppeling in de lagere groep dit vereist. Dit is een bekende beperking van het Zwitserse systeem — de kleurbalansbeperking heeft lagere prioriteit dan C1–C5, dus deze kan worden overschreven.

"Waarom worden de top twee spelers al in ronde 4 aan elkaar gekoppeld?"

Als beide leiders dezelfde score hebben, en het algoritme geen andere geldige koppeling binnen hun scoregroep vindt (alle andere spelers in die groep hebben al tegen hen gespeeld, of hebben tegenstrijdige kleurrechten), koppelt het algoritme de top twee aan elkaar. Dit is correct gedrag — de criteriahiërarchie vereist het.

Andere goedgekeurde systemen: Burstein, Baku-versnelling

Burstein-systeem (C.04.4)

Het Burstein-systeem is een variant van het Dutch-systeem met een andere benadering van scoregroepvorming. In plaats van strikte scoregroepen met floaters, staat het meer flexibele cross-groepkoppelingen toe terwijl de ratingnabijheid binnen paren wordt gehandhaafd. Het wordt minder vaak gebruikt in FIDE-gewaardeerde evenementen maar is erkend als alternatief.

§ FIDE C.04.4 — Burstein-systeem (van kracht 1 feb 2026). → Lees C.04.4

Baku-versnelling (C.04.7)

Baku-versnelling wordt gebruikt in zeer grote Zwitserse toernooien (doorgaans 200+ spelers) om ervoor te zorgen dat de topspelers elkaar eerder tegenkomen, in plaats van pas in de laatste ronden nadat ze meerdere gemakkelijke partijen tegen zwakkere tegenstanders hebben gewonnen.

Het idee: in de eerste paar ronden krijgen de hoogst gerangschikte spelers een "virtuele" halve punt voorsprong, waardoor ze in een hogere scoregroep worden geplaatst dan hun werkelijke score. Dit creëert eerdere confrontaties tussen sterke spelers. Vanaf ronde 3 of 4 worden de virtuele punten verwijderd en wordt de normale Zwitserse koppeling hervat.

§ FIDE C.04.7 — Versnelde systemen: Baku-versnelling (van kracht 1 feb 2026). → Lees C.04.7

Een TRF-bestand lezen

Het TRF (Tournament Report File) is het standaard uitwisselingsformaat voor schaaktoernooigegevens. ChessPairings.org exporteert zowel TRF-16 (verouderd) als TRF-25 (nieuw 2025-formaat). Zo ziet een TRF-16-bestand eruit voor ons Aljechin Memorial na ronde 1:

012 Aljechin Memorial Open
022 Club Room, Alessandria
032 2026-03-03
042 2026-03-03
052 Mikhail (Chief Arbiter)
062 5
072 1
082 Rapid
092 15+10
132 Buchholz Cut-1, Buchholz, Wins, Direct Encounter
001  No  Name              Rtg  FID       Pts  R1
001    1 Fischer           2200 1234567   1.0  0000 W  5 1
001    2 Kasparov          2180 2345678   1.0  0000 W  6 1
001    3 Tal               2150 3456789   1.0  0000 W  7 1
001    4 Petrosian         2120 4567890   1.0  0000 W  8 1
001    5 Spassky           2080 5678901   0.0  0000 B  1 0
001    6 Karpov            2050 6789012   0.0  0000 B  2 0
001    7 Botvinnik         1990 7890123   0.0  0000 B  3 0
001    8 Lasker            1960 8901234   0.0  0000 B  4 0

Elke 001-regel is één speler. Van links naar rechts gelezen: spelernummer, naam, rating, FIDE-ID, totaalscore, en vervolgens voor elke ronde: startrang (0000 = niet van toepassing), kleur (W/B), tegenstander-nummer, resultaat (1 = winst, 0 = verlies, = = remise, H = halve-punt-bye, F = reglementaire winst).

U hoeft dit bestand nooit handmatig te bewerken — ChessPairings.org genereert het automatisch. Maar weten hoe u het moet lezen helpt bij het verifiëren van resultaten of het importeren in andere software.

bbpPairings: de motor achter ChessPairings.org

ChessPairings.org gebruikt bbpPairings als Zwitserse koppelingsmotor — een open-source C++-implementatie van het FIDE Dutch-systeem, onderhouden door de schaakprogrammeergemeenschap. bbpPairings wordt gebruikt door meerdere nationale federaties en toernooibeheersystemen wereldwijd.

Voor tiebreakberekeningen gebruikt ChessPairings.org een speciale TieBreakServer-module (Python), die alle 28 ondersteunde tiebreaksystemen onafhankelijk van de koppelingsmotor implementeert. Deze scheiding zorgt ervoor dat koppelings- en tiebreaklogica elk onafhankelijk verifieerbaar zijn.

Beide motoren worden bijgewerkt wanneer FIDE zijn regels herziet — de regelwijzigingen van februari 2026 zijn volledig verwerkt in de huidige versie van ChessPairings.org.

Voor de technisch nieuwsgierigen

Het Dutch-koppelingsprobleem is wiskundig equivalent aan een gewogen maximum matching-probleem in de grafentheorie. Elke potentiële koppeling is een rand met een gewicht dat aangeeft hoe goed deze voldoet aan de criteriahiërarchie. Het algoritme vindt de maximum-gewicht perfecte matching — daarom kan het zelfs voor toernooien met 500 spelers in een fractie van een seconde worden berekend.

Klaar om Uw Toernooi te Organiseren?

FIDE 2026 conforme Zwitserse indeling, 28 tiebreak-systemen, volledig gratis.

Maak Gratis Account