Dit is het vervolg op de blog over de pijlenrace naar de grens.

In het vorige blog werd duidelijk dat het Q-learning algoritme tegen grenzen van rekenkracht aanloopt, als het aantal verschillende toestanden toeneemt. Ook kun je met het Q-learning algoritme geen algemene oplossingen bedenken. Maar geen nood, Drivin’ Dave to the rescue!

Laat me je voorstellen aan Dave, Drivin’ Dave. Hij racet graag in zijn F1 wagen, uiteraard in zijn lievelingskleur blauw.

Drivin’ Dave (links) met zijn F1-wagen (rechts) – bovenaanzicht

Het liefste rijd Dave over zijn favoriete baan in het Franse Dijon:

Drivin’ Dave bij de start van het circuit Dijon-Prenois

Er is een klein probleempje: Dave kan er helemaal niets van. Sterker nog: hij heeft nog nooit een baan uitgereden zonder te crashen.

Drivin’ Dave door Jasper Kruiger (12 jaar)

Dave is geen bandenfluisteraar, maar wel een goede ingenieur: hij monteert twee sensors op zijn auto die de afstand tot de rand van het circuit meten. Hij richt ze beiden naar voren, de een schuin naar links, de andere schuin naar rechts.

Dave bij de start met zijn twee sensors

Beide sensors verbindt Dave met zijn Magische Machine. Deze machine is ook gekoppeld aan het stuur. Dave stelt zijn machine als volgt in:

  1. Is de afstand die de linker sensor meet, groter dan de afstand die de rechter sensor meet? Stuur dan naar links.
  2. Is de afstand die de linker sensor meet gelijk aan de afstand die de rechter sensor meet? Houdt het stuur dan recht.
  3. Is de afstand die de rechter sensor meet, groter dan de afstand die de linker sensor meet? Stuur dan naar rechts.

Een paar voorbeelden:

1. Stuur naar links, 2. Houdt het stuur recht, 3: Stuur naar rechts

Met wat meer spanning in zijn maag dan normaal, verschijnt Dave aan de start en duwt het gaspedaal voorzichtig in…

Weer bij de finish gekomen, springt Dave uit zijn auto en doet een dansje van pure vreugde! Een race uitgereden zonder te crashen! Dave ziet een hoop verbaasde blikken, maar dat zou ook aan zijn totaal gebrek aan danstalent kunnen liggen.

Nou ja, een ‘race’? Meer een slakkengang: bijna 34 (33,950) seconden. Maar als Dave’s Magische Machine prima kan sturen, dan moet gassen en remmen ook wel lukken, toch? Daarom monteert Dave een extra sensor die hij recht naar voren wijst. Ook deze sensor meet de afstand tot de rand van het circuit.

Dave bij de start met zijn drie sensors

Dave verbindt deze nieuwe sensor met zijn Magische Machine en sluit ook de gas- en rempedalen aan. In de Magische Machine voegt Dave de volgende regels toe:

  1. Is de afstand die de middelste sensor meet heel groot? Geef dan gas.
  2. Is de afstand die de middelste sensor meet heel klein? Rem dan.
  3. Is de afstand die de middelste sensor niet groot en niet klein? Doe dan niets.

Een paar voorbeelden:

1. Gassen!, 2. Doe niets, 3: Remmen

Opnieuw verschijnt Dave aan de start en laat met bonkend hart alles over aan zijn Magische Machine…

Ja hoor, het werkt! In plaats van bijna 34 (33,950) seconden, doet Dave er nu ruim 11 (11,200) seconden over.

Stel dat elke sensor een waarde kan hebben tussen 0 en 100, dan zijn het aantal mogelijke toestanden 100 x 100 x 100 = 1.000.000. In De pijlenrace naar de grens had het algoritme al moeite met 100.000 verschillende toestanden, laat staan 1.000.000. Dave vind zichzelf een genie (en dat is ‘ie ook wel, toch?).

Toch knaagt er ergens nog iets. Maar wat het is, dat weet Dave zelf ook niet. Terwijl hij aan zijn hoofd krabt, komt Flaming Freddy aangelopen…

(wordt vervolgd in een volgend blog met Flaming Freddy)

Met dank aan Jasper voor zijn impressie van Drivin’ Dave, Method Draw voor het bewerken van de racebanen in SVG formaat en CCapture.js & Shotcut voor het opnemen en bewerken van de video’s.