Functioneel ontwerp
 

Voor het functioneel ontwerp is uitgegaan van een vrije interpretatie van het biedproces, waarbij deze opgedeeld is in 5 fasen. Hieronder volgt een korte beschrijving wat er in elke fase gebeurt en de gevolgen hiervan voor de kennis van de agents.

1. initialisatie

Een deck kaarten wordt geschud en uitgedeeld aan de vier spelers: North, East, South en West. Tegenoverliggende windrichtingen zijn partners, er zijn dus twee teams van spelers.

Elke speler bekijkt zijn hand en telt zijn high-card points (HCPs), hiervoor geldt: vier punten voor elke Aas, drie voor elke Koning, twee voor elke Vrouw en één voor elke Boer. De rest van de simulatie is specifiek toegespitst op het winnen van kennis over welke speler welke ‘plaatjes’ vasthoudt.

2. openingsbod

Het biedproces begint bij de speler North, die als eerste de kans krijgt om een openingsbod uit te brengen danwel te passen, gevolgd door East, South en West. Voor het uitbrengen van een openingsbod dient de speler een minimum aan HCPs in de hand te hebben. De details omtrent deze minima en bijhorende openingsboden zijn terug te vinden in het biedschema. Voldoet een speler niet aan een van deze eisen dan zal een speler passen en de beurt doorgeven aan de volgende speler. Het al dan niet uitbrengen van een openingsbod is een uitting en alle andere spelers kunnen hier kennis uit opdoen. Alle spelers houden bij in welk interval het mogelijk aantal punten van elke andere speler ligt. Na elke publiekelijke uiting werkt elke speler zijn kennis bij.

3. reactie op het openingsbod

Nadat een speler een openingsbod heeft uitgebracht kunnen de volgende spelers hierop een antwoordbod doen. Een antwoordbod dient immer hoger te zijn dan het vorige bod. Een bod bestaat uit twee delen: het aantal slagen meer dan zes dat deze speler (samen met zijn partner) beweert te behalen, en een keuze van een troefkleur in de rangorde: geen troef (NT), schoppen, harten, ruiten en klaver. Een openingsbod van bijvoorbeeld 1 harten kan dus overboden worden door 1 schoppen. Een openingsbod van 1NT kan echter pas overboden worden door 2 slagen gevolgd door een troefkleur.

Het al dan niet doen van een overbod door een tegenspeler of het meebieden van de partner is wederom weer een uitting van informatie, waarbij alle spelers hun kennis kunnen bijwerken.

Vanwege de complexiteit van het biedproces is de keuze gemaakt om na een openingsbod en een tegenbod van de partner van de opener het proces stop te zetten en de kennis te gaan evalueren.

4. evaluatie

In dit stadium heeft elke speler informatie over het interval waarin het aantal HCPs van elke ander speler ligt. Deze informatie wordt specifiek vertaald tot een disjunctie van mogelijke handen van high cards die elke speler dan wel kan hebben. Allereerst schrapt elke speler zijn eigen punten en high cards uit de verzameling van mogelijkheden, waarna de resterende mogelijkheden puntsgewijs worden uitgerekend. Stel bijvoorbeeld dat speler A weet dat speler B tussen de 14 en 16 HCPs heeft dan wordt dit vertaald tot:

verzameling-14pts-Handen V verzameling-15pts-Handen V verzameling-16pts-Handen

Waarbij elke verzameling iteratief opgebouwd wordt vanaf de hoogst mogelijk samenstelling, voor 14 HCPs is dit bijvoorbeeld AAAQ gevolgt door AAAJJ, AAKK, etc. Na deze stap heeft elke speler dus kennis in de vorm van een disjunctie van mogelijke handen van elke andere speler.

5. opbouw Kripke-model

Het hebben van specifieke kennis over mogelijke handen van de andere spelers is in de praktijk dan wel handig, maar het geeft echter nog geen gerichte indicatie omtrent de omvang van de totale kennis van een speler. Een goede maat voor de omvang van de kennis is om te bepalen welke mogelijke bedelingen van de high cards (over alle spelers) een speler niet van elkaar kan onderscheiden. Elke mogelijke bedeling is dan te interpreteren als een wereld in een Kripke-model met een equivalence-relatie tussen deze werelden, dit is dus een model op het axiomasysteem S5.

Het aantal mogelijke bedelingen wordt aan de hand van de disjunctie van voor mogelijk gehouden handen van elke speler recursief opgebouwd. Uiteindelijk worden deze mogelijke bedelingen geteld en geretourneerd in de simulatie.

Na iedere simulatie wordt op consistentie gecontroleerd door de doorsnede te nemen van de verzamelingen mogelijke werelden van elke speler. Dit levert uiteindelijk slechts één oplossing, namelijk de daadwerkelijke bedeling. De daadwerkelijke bedeling is dan ook gedistribueerde kennis, elke speler kent immers zijn eigen hand.