De invoer van de programma's gebeurt met comando's in een console venster.
In MSWindows neem je daar een CMD ("Command Prompt") venster voor,
in Linux of MinGW een terminal venster.
Voor een beschrijving van deze programma's zie
http://www.pjms.nl/BALANS/balans.html
Vanaf versie 7.0 gaat het programma balans verder dan de 2-paren interacties die de kwaliteitsfactor Qf bepalen, maar beschouwt ook de "vacancy quality". In het volgende noemen we Qf1 de kwaliteitsfactor wanneer één paar afwezig is. Qf1av en Qf1max zijn de gemiddelde waarde en het maximum van Qf1. Voor een discussie zie
bijvoorbeeld: balans -s 1000 nbb14.7.txt
[opties] staat voor een aantal mogelijke opties.
Mogelijkheden (in het volgende is n een positief getal):
-c : check het schema, geen optimalisatie -s n : doe optimalisatie net n iteraties -f n : hou de eerste n posities vast. -r n : hou rij n vast (= ronde n) -t n : hou kolom n vast (= tafel n) -i n : hou paar n vast -j n : hou spelgroep n vast (n=getal of hoofdletter) -R n : hou alle ronden vast behalve ronde n -D n : hou alle tafels vast behalve tafel n -I n : hou alle paren vast behalve paar n (en zijn directe tegenstanders) -J n : hou alle spelgroepen vast behalve spelgroep vast (n=getal of hoofdletter) -a fixerfile: geef een file met voor iedere rij en kolom een 0 of 1 (0=vrij, 1=vast) -v n : paar n is afwezig -z : willekeurige keuze voor NZ en OW vóór de optimalisatie -L : vertaal spelgroepen naar letters -p : vernummer de paren, geef de permutatie op de commandoregel -m <filenaam> : voer het vernummerde schema uit naar file <filenaam> zie ook default bestand -Q : (Quiet) Onderdruk uitvoer naar het scherm, laat alleen balans-getallen zien. -P n1-n2 (bijv. -P 4-8): voorkeur paar nrs van een afwezig paar. -W w1:w2 (bijv. -W 0:1): gewichtsfactoren van Qf1max en Qf1av -k 0 : geen optimalisatie van d4 / -k 1: wel optimalisariw van d4 -S n:c1:c2 (e.g. -S 1:750:7.5): algoritme + optioneel temperatuur interval -T n : maximum tijd in seconden. -h : geef een korte beschrijving van de opties
-r -t -i -j kun je meerdere keren gebruiken, om meerdere subsets
tegelijkertijd vast te houden.
-R -D en -I kun je meerdere keren gebruiken, om meerdere subsets
tegelijkertijd vrij te laten.
Bijvoorbeeld '-D1 -D3': houdt alle
tafels vast behalve tafels 1 en 3.
Optie -f werkt alleen op de eerste n posities.
Optie -a <filenaam> is de meest algemene om tafels vast te houden. Voor een voorbeeld van een fixerfile zie file fixers.txt. Deze kan gebruikt worden met een aanroep zoals:
balans -a fixers.txt mitchell14.7.txtDe fixerfile mag desgewenst extra spaties en nieuwe regels bevatten.
Opties -f -r -t -i -j overrulen de gegevens uit de fixerfile.
balans -f6 -s1000 16p6ronvmitchell1.ascMaar het is niet altijd een goed idee om dit te doen. Voor grote / moeilijke schema's zal zulk vasthouden het leven lastiger maken voor programma balans, en gemiddeld iets slechtere Qf opleveren. Een betere aanpak is om niets vast te houden tijdens zeer lange optimalisatie runs (en gebruik ook optie -S). Wanneer de kwaliteit bevredigend is of er geen optimalisatietijd meer beschikbaar is, kun je het resultaat verfraaien met optie -J van vernum om het schema te herleiden tot dezelfde structuur als wanneer je de eerste ronde of tafel had vastgehouden.
w1 | w2 | |
0 | ≠ 0 | optimaliseer alleen Qf1av |
≠ 0 | 0 | optimaliseer alleen Qf1max |
0 | 0 | optimaliseer Qf1max en Qf1av niet |
afwezig | w2 = 1.0 |
De normale uitvoer van belans bevat al de kwaliteitsfactoren Qf1(p)
voor iedere keuze van het afwezige paar p. Met w2=0 in combinatie met optie -P
kan men de optimale balans zoeken voor ieder gewenst paarnummer,
maar dat is dan bij maximale Qf voor het volledige schema.
Optie -v kan gebruikt worden als je niet geinteresseerd bent in het volledige
schema, maar alleen in de belans van een schema met een afwezig paar.
-S0 selecteert het default fast algoritme, en neemt daarbij c1:c2 (default 1:2000) als begin- en eindtemperatuur. Dus afwezigheid van de -S at optie is equivalent met -S0:1:2000. Hoe hoger de temperatuur (T), hoe groter de kans dat we tijdelijk een NZ-OW verwisseling accepteren die die de som van de kwadraten verhoogt (ofwel Qf verlaagt). Zulk een verhoging kan nodig zijn om later een nog lagere waarde te vinden. T=1 is so laag dat praktisch alleen onmiddellijke verbeteringen geaccepteerd worden. Standaard beginnen we daarmee. Later, als T de topwaarde 2000 bereikt is, gaat de zoektocht vrijelijk in alle richtingen, dichter bij een "random walk". Met de standaard -S0 gaat de temperatuur snel op en neer, met alleen ongeveer 100 iteraties van top tot top.
-S1 selecteert langzame exponentiele afkoeling (of opwarming) van temperatuur c1 naar temperatuur c2.
Dit algoritme is af te raden voor schema's waarbij de standaard -S0 snel de optimale Qf vindt
en de rest van de tijd doorbrengt met het optimaliseren van Qf1max/Qf1av/d4.
-S1 is bedoeld voor gevallen waabij de beste Qf moeilijk te vinden is.
De verstekwaarde c1:c2 is momenteel zeer ruw gezet op P:P/4 waarbij P het aantal paren in het schema is.
Voor een schema van 56 paren is -S1 dus equivalent met -S1:56 en met -S1:56:14.
Werken met deze optie is een kwestie van intuitie en uitproberen. Enkele tips in het Engels:
The default -S0 algorithm is always recommended for at least one or a few short runs before -S1 is tried out for a few short runs too, perhaps 10000 iterations each. That makes it easier to guess a more useful temperature interval than the default one for longer -S1 runs. For the 100 pair 99 round endless Howell the default interval 100:25 seems to be perfect. But for many other large and/or difficult movements the default end temperature is too low, catching the search in a local optimum too early on and just wasting CPU without being able to escape after that. On rare occasions the default start temperature is too low too. If the -S0 trial runs found new optima at high T, consider starting the -S1 runs at high T too. After a moderately long -S1 run, a further minor improvement can often be quickly obtained by a short reheating from below to above the temperature where the present solution was found. Fast improvements happen much less frequently when a solution found by -S0 is fed into balans. That's because the -S0 algorithm already includes such retries with reheating automatically, searching very intensely several times near non-transient new optima. A short -S0 run may also be used to harden the output of a long -S1 run. If you aim for more than minor improvements, it's probably better to spend most of the time on -S1 cooling in a rather narrow interval around the T where the previous result of a semi-long -S1 run was found - before the final short -S1 or -S0 hardening. The main problem here is that exponential cooling spends too much time at some temperatures and too little at others. Manually chaining -S1 runs with varying intervals is a work-around for that. In a future version we expect to provide more intelligent adaptive cooling, e.g. at constant thermodynamic speed.
optie -L: vertaalt de spelgroepen naar letters. Als je bijvoorbeeld een schema hebt dat begint met 8- 1 1 3- 6 4 2- 7 6 5- 4 7 maakt optie -L er van: 8- 1 A 3- 6 D 2- 7 F 5- 4 G Uitgebreidere mogelijkheden om de spelgroepen te herschikken vind men in 'vernum', opties -N en -n. optie -p: vernummer de paren. Anders dan -L moet je hier precies opgeven hoe je de nieuwe volgorde wil hebben. Schrijf onder elkaar een rij getallen die de oude nummers weergeven en daaronder een rij met de nieuwe gewenste nummers. Herschik nu de kolommen zodanig dat op de eerste rij de getallen op volgorde staan. Dan verschijnt op rij 2 de invoer die het programma verwacht. Voorbeeld. Je wil bovenstaand schema hernummeren tot de universele startpositie, dus je wilt van 8 1 3 6 2 7 5 4 maken: 1 2 3 4 5 6 7 8 Schuif nu de 1, met de 2 die er onder staat, naar plaats 1, enzovoorts, zo dat de 2 rijen worden. 1 2 3 4 5 6 7 8 2 5 3 8 7 4 6 1 Die laatste serie is nu wat je dient op te geven bij het commando: balans -cLp howell4tafels.txt 2 5 3 8 7 4 6 1 Dit maakt van die eerste regel dus 1- 2 A 3- 4 B 5- 6 C 7- 8 D
Vervolgens wordt het geoptimaliseerde schema vertoond, met bijbehorende scorematrix, som van kwadraten, standaarddeviatie en Qf.
Het gevonden schema wordt ook naar een bestand geschreven. Commentaar in dit bestand beschrijft ook nog de belangrijkste eigenschappen van het schema.
Voorbeeld:
balans -r1 -t1 -P15 -s1000 mitchell16.ascBereken een 'draaiend schema' uitgaande van het bestand mitchell16.asc Houdt daarbij ronde 1 en tafel 1 vast, laat bij voorkeur paar 15 weg als er een paar minder is. (Immers dan vervalt tafel 8 en daarmee het lenen)
balans -r 1 -t 1 -t 8 -s 1000 mitchell16.asc
Als je de uitvoer in een bestand wil hebben in plaats van op het scherm geef je als commando:
balans [opties] schemafile > uitvoerfileVoor een voorbeeld van de uitvoer zie outputexample.html
aanroep:
vernum [opties] schemafile[opties] staat voor een aantal mogelijke opties.
-h : geef een korte beschrijving van de opties -Q : (Quiet) Onderdruk uitvoer naar het scherm -A : uitvoer conform de standaard -p : vernummer de paren (zie boven) -L : vertaal spelgroepen naar letters (zie boven) -u : vernummer naar "Universele Begin Positie" -w : verwissel windrichtingen NZ <--> OW voor alle ronden en tafels -z : willekeurige keuze voor NZ en OW -f -r -t -i -j -a fixerfile: (zie boven) Deze opties hebben invloed op de werking van -w en -z -R <ronde> : verwissel NZ <--> OW van één ronde -D <tafel> : verwissel NZ <--> OW van één tafel in alle ronden -I <paar> : verwissel NZ <--> OW van alle tafels waar dit paar speelt. -J <paar> : verwissel NZ <--> OW van alle tafels waar deze spelgroep gespeeld wordt. -v n : berekening voor het geval dat paar n afwezig is. -N : gebruik in de uitvoer getallen voor de spelgroepen (programma neemt standaard volgorde) -n <laagste getal> : gebruik in de uitvoer getallen voor de spelgroepen maar specificeer de volgorde -m <filenaam> : voer het vernummerde schema uit naar file <filenaam> -K <ntafels> : sorteer de eerste <ntafels> tafels van iedere ronde handig als je naar een "spelvast" schema wil -b <basis> : print schema als een set van basisschema's om de basisschema's van een topintegraal te vinden -o <offset> : tel <offset> op bij ieder oneven paarnummer -e <offset> : tel <offset> op bij ieder even paarnummer bij het samenvoegen van basisschema's tot een topintegraalschema
vernum -n 7 schemafile.txt A B C D E Fmaakt van 'A' '7', van 'B' '8', enzovoorts.
10 6 6 6 0 1 2 A 3 4 B 5 6 C 7 8 D 9 10 E 0 0 0 4 7 A 6 9 B 10 8 C 2 5 D 0 0 0 1 3 F 9 8 A 10 1 B 3 2 C 0 0 0 7 6 E 5 4 F 6 3 A 8 5 B 0 0 0 1 9 D 4 2 E 10 7 F 5 10 A 0 0 0 7 1 C 4 6 D 3 8 E 9 2 F 0 0 0 7 2 B 9 4 C 3 10 D 5 1 E 6 8 FNa de behandeling:
10 6 6 6 0 g 1- 2 7 3- 4 8 5- 6 9 7- 8 10 9-10 11 0- 0 0 4- 7 7 6- 9 8 10- 8 9 2- 5 10 0- 0 0 1- 3 12 9- 8 7 10- 1 8 3- 2 9 0- 0 0 7- 6 11 5- 4 12 6- 3 7 8- 5 8 0- 0 0 1- 9 10 4- 2 11 10- 7 12 5-10 7 0- 0 0 7- 1 9 4- 6 10 3- 8 11 9- 2 12 0- 0 0 7- 2 8 9- 4 9 3-10 10 5- 1 11 6- 8 12
Optie -N is een eenvoudige versie hiervan. Als je gebruikt
vernum -N howell12.txtis de volgorde van de letters de volgorde waarin ze in het schema voorkomen, en de getallen beginnen met 1.
-n en -N kunnen ook gebruikt worden als de spelgroepen al getallen zijn. Dan op de commandoregel de oude nummers geven in de gewenste volgorde. Als je bijvoorbeeld een schema hebt met spelgroepen 11 .. 17, levert
vernum -n1 klad.txt 17 16 15 14 13 12 11de vernummering:
oud: 17 16 15 14 13 12 11 nieuw: 1 2 3 4 5 6 7Bij gelijktijdig gebruik van -p en -n eerst de paarnummers opgeven, daarna de spelgroepen.
Optie -u
Universele beginpositie. Opgelet! Deze optie vernummert alleen de paren,
niet de spelgroepen. Om de spelgroepen op volgorde te krijgen gebruikt optie -N, eventueel
in een volgende ronde run door -L
Verdere opties voor de knutselaars
-K, -b, -o, -e ...
Als deze niet werken zoals verwacht hoor ik het graag. Hetzelfde geldt voor verdere suggesties.
aanroep:
score2 [opties] schemafile Mogelijkheden [n is een geheel getal] -T n : geef de score in procent van de sterke paren (normaal 100) -e : uitgebreide uitvoer, alle mogelijke scores per paar voor alle mogelijke keuzes van de 2 sterke paren. -d : verdeling van de scores (met soort van grafiek) op het scherm -x : exporteer verdeling van de scores naar een file -1 : er is maar 1 sterk paar. bij deze optie worden bovenstaande opties genegeerd. -h : geef een korte beschrijving van de opties
Optie | balans | vernum | score2 |
---|---|---|---|
-h | + | + | + |
-c | + | genegeerd | |
-s iteraties | + | + | |
-r ronde | + | + | |
-t tafel | + | + | |
-f npos | + | + | |
-i paar nr. | + | + | |
-j spelgroep | + | + | |
-R ronde | + | + | |
-I paar nr. | + | + | |
-J spelgroep | + | + | |
-D tafel | + | + | |
-v vacant paar nr. | + | + | |
-k 0 / -k 1 | + | ||
-P vfirst-vlast | + | ||
-W w1:w2 | + | ||
-S n:c1:c2 | + | ||
-T tijd | + | ||
-Q | + | + | |
-m outputfile | + | + | |
-a fixerfile | + | + | |
-L | + | + | |
-p | + | + | |
-A | + | ||
-u | + | ||
-w | + | ||
-n | + | ||
-N | + | ||
-K tafels | + | ||
-b base | + | ||
-o offset | + | ||
-e offset | + | ||
-e | + | ||
-d | + | ||
-x | + | ||
-T top | + | ||
-1   (= score1) | + | ||
-b  (Bussemaker) | + |