1. inleiding
  2. kwaliteitsfactor
  3. ontmoetingenmatrix, competitiematrix en coincidentiematrix
  4. strategie
  5. Klik hier voor de homepage picolo.


Op deze pagina worden enkele technische aspecten van picolo behandeld.

inleiding

Tijdens het werk aan het progamma balans ontstond het idee, om ook een programma te maken voor het optimaliseren van de indeling bij competities van meerdere zittingen. Dit programma zou niet alleen rekening moeten houden met een gelijkmatige verdeling van ontmoetingen maar ook met het aantal keren dat paren spelen in gelijke en tegengestelde windrichtingen. De kwaliteitsfactor Qf leek hiervoor een goed criterium. Immers als beide aspecten van de balans in orde zijn betekent dat een hoge waarde van Qf. Helaas bleek deze stelling niet omkeerbaar ...

De eerste versie optimaliseerde alleen maar de kwaliteitsfactor. Al bij het eerste het beste testgeval bleek dat dit niet voldoende was. Voor een competitie van 5 zittingen van 6 ronden, met 16 paren, vond ik zomaar een Qf van 100. Maar bij inspectie van de resultaten bleek dat de ontmoetingen helemaal niet gelijkmatig verdeeld waren. Er waren zelfs paren die elkaar helemaal niet ontmoet hadden! Dat vindt natuurlijk niemand acceptabel na 5 zittingen, ook al is de kwaliteitsfactor optimaal. Het criterium voor een optimale balans diende dus te worden aangepast.

Volgende versies optimaliseren in eerste instantie de eerlijke verdeling van de directe ontmoetingen, en pas bij oplossingen van gelijke kwaliteit qua ontmoetingen wordt er gekeken naar de balans.

Later kwam er bij die ontmoetingen nog een verfijning. Niet alleen de ontmoetingenmatrix als geheel moet zo vlak mogelijk zijn, maar je wil ook dat overblijvende uitschieters zo gelijkmatig mogelijk over de deelnemende paren verdeeld zijn.

Tenslotte kwam er nog een wens bij. Je wil niet alleen dat de ontmoetingen en de balans in evenwicht zijn, maar ook rusttafels die optreden bij een oneven aantal paren moeten eerlijk verdeeld worden.

Omdat het programma ook moet kunnen werken met wegblijvers en dus met zittingen met verschillende aantallen deelnemers was een meer algemene versie van de scorematrix nodig. In de originele versie is het gewicht van een ontmoeting de halve top h (oftewel het aantal keren dat een spel gespeeld wordt - 1). Als je 2 zittingen optelt met verschillende waarden van h is dat niet langer acceptabel. In een normale competitie telt immers ieder spel even zwaar mee. We willen dus graag iedere directe ontmoeting hetzelfde gewicht geven, ook in een competitie van meerdere zittingen met wisselende opkomst, waarbij het getal h dus kan verschillen per zitting. Dus werden de gewichten geschaald: voor een directe ontmoeting 1, voor een indirecte vergelijking 1/h. Ter onderscheid met de scorematrix zoals die bij de balans gebruikt wordt noem ik deze geschaalde matrix de competitiematrix.

Deze competitiematrix heeft een eenvoudige interpretatie: element Mij is het effectieve aantal ontmoetingen tussen paar i en paar j. Vergelijk dit met de ontmoetingenmatrix waar element Mij het werkelijke aantal ontmoetingen is. Het effectieve aantal is gelijk aan het werkelijke aantal, gecorrigeerd voor het effect van het spelen van andere spellen in gelijke dan wel tegengestelde windrichting. Verderop meer over deze matrices.

kwaliteitsfactor

De competitiematrix bevat niet langer, zoals de scorematrix, gehele getallen. Daarom is ook de kwaliteitsfactor anders gekozen. Qf was immers gebaseerd op een set van gehele getallen met gegeven som, met een minimale som van kwadraten. We gebruiken niet Qf, maar Qc, zoals onder gedefiniëerd.

Op soortgelijke wijze wordt ook voor de ontmoetingen een kwaliteitsfactor gedefinieerd. Deze noemen we Qo.

Zowel voor Qo als Qc geldt:

Q = 100·g² / (SS/N + g²)

waarbij:
g = het gemiddelde aantal ontmoetingen tussen 2 paren
N = het aantal mogelijke combinaties van 2 paren.
SS = de som van de N kwadraten ( Mij - g ) ²
    waarin Mij het aantal ontmoetingen, resp. effectieve ontmoetingen, is tussen de paren i en j.
Als alle getallen Mij gelijk zijn wordt Q gelijk aan 100, zo niet dan is de waarde kleiner dan 100.

ontmoetingenmatrix, competitiematrix en coincidentiematrix

Uit de ontmoetingenmatrix kan men aflezen hoe vaak twee paren elkaar in de lopende competitie ontmoet hebben. Horizontaal en verticaal staan de paarnummers uitgezet en het element behorend bij i horiontaal en j verticaal is gelijk aan het aantal keren dat paar i en paar j tegen elkaar gespeeld hebben. Het is dus een symmetrische matrix en de diagonaal is onbepaald. Bij het bepalen van het gemiddelde nemen we dan ook de diagonale elementen niet mee. Het is de bedoeling dat de spreiding van deze getallen minimaal wordt. Dit kan bereikt worden door de som van de kwadraten van alle afwijkingen van het gemiddelde te minimaliseren. Een alternatief is het te werken met de som van de 4e machten van deze afwijkingen. Dit criterium heeft als voordeel dat extreme afwijkingen effectiever bestreden worden.

Een verdere verfijning is om met een asymmetrische functie te werken. Bijvoorbeeld na 6 zittingen mag je hopen dat alle paren elkaar minstens één keer ontmoet hebben. Als dan het gemiddelde aantal ontmoetingen 2 is, wil je een zwaardere "straf" geven voor een 0 dan voor een 4. Deze twee effecten zijn echter niet onafhankelijk van elkaar. Als er paarcombinaties zijn met minder dan het gemiddelde aantal ontmoetingen zijn er noodzakelijkerwijs ook combinaties met meer dan het gemiddelde. Deze verfijning bleek dan ook weinig effectief en vanaf versie 3.9 zien we er van af.

De competitiematrix heeft dezelfde structuur en is hier nauw mee verwant. Hieruit kunnen we aflezen hoe vaak twee paren elkaar effectief ontmoet hebben. Met effectief bedoelen we dat indirecte ontmoetingen ook meegewogen worden, dat wil zeggen er wordt rekening wordt gehouden met de invloed op de score van het spelen in gelijke en tegengestelde windrichting.

Ieder element i, j van de competitiematrix is gelijk aan

Hierbij is h gelijk aan de halve top, oftewel het aantal keren - 1 dat een spel gespeeld wordt.

Deze matrix is dus in feite de scorematrix zoals we die kennen van de balans maar dan anders genormaliseerd. De normalisatie zoals daar gegeven is hier niet bruikbaar zoals in de inleiding uitgelegd.

Samenvattend: element i,j van de ontmoetingenmatrix is het aantal ontmoetingen, element i,j van de competitiematrix is het aantal effectieve ontmoetingen tussen paar i en paar j, Bij een competitie met een perfecte overall balans zijn na afloop de matrices aan elkaar gelijk, en ieder element van beide is gelijk aan het gemiddeld aantal ontmoetingen.

Tenslotte geeft picolo ook nog een coincidentiematrix waarin wordt aangegeven hoe vaak twee paren gelijktijdig aanwezig geweest zijn. Deze getallen zijn dus een bovengrens van de waarden in de ontmoetingenmatrix.

Strategie

De strategie die picolo volgt is een combinatie van op toeval gebaseerde beginwaarden en een gerichte zoektactiek vanuit die beginwaarden. De gang van zaken bij het commando OPT is als volgt.