NashOpt -- A Python Library for Computing Generalized Nash Equilibria

NashOpt is een open-source Python-bibliotheek die het berekenen en ontwerpen van gegeneraliseerde Nash-evenwichten in niet-coöperatieve spellen met gedeelde constraints mogelijk maakt door gebruik te maken van KKT-voorwaarden, JAX voor automatische differentiatie en gemengd-integer lineaire programmering.

Alberto Bemporad

Gepubliceerd 2026-03-10
📖 5 min leestijd🧠 Diepgaand

Each language version is independently generated for its own context, not a direct translation.

Stel je voor dat je in een drukke stad bent waar honderden mensen tegelijkertijd proberen hun weg te vinden. Iedereen heeft zijn eigen bestemming (zijn eigen doel), maar ze moeten allemaal dezelfde straten gebruiken, dezelfde stoplichten gehoorzamen en zich houden aan de verkeersregels. Als iedereen alleen maar aan zichzelf denkt, kan het leiden tot enorme files of chaos.

Dit is precies wat NashOpt doet, maar dan voor computers en complexe systemen. Het is een nieuwe, gratis softwaretool (geschreven in Python) die helpt om de "perfecte balans" te vinden in situaties waar meerdere partijen met elkaar concurreren, maar wel afhankelijk zijn van elkaar.

Hier is een uitleg in gewone taal, met een paar leuke vergelijkingen:

1. Het Probleem: De "Spelers" en de "Gemeenschappelijke Regels"

In de wereld van NashOpt zijn er meerdere spelers (bijvoorbeeld bedrijven, auto's in een file, of stroomleveranciers).

  • Elk heeft een eigen doel: Bedrijf A wil zo veel mogelijk winst maken. Auto B wil zo snel mogelijk thuis zijn.
  • Ze delen beperkingen: Ze moeten allemaal binnen hetzelfde snelheidsgebied blijven, of ze delen dezelfde elektriciteitskabel.
  • Het dilemma: Als ik mijn snelheid verhoog, kan dat jouw reistijd beïnvloeden. Als jij je stroomverbruik verhoogt, kan dat de prijs voor mij verhogen.

De oplossing die NashOpt zoekt, heet een Generalized Nash Evenwicht. Dit is een situatie waarin niemand er baat bij heeft om zijn strategie te veranderen, zolang de anderen hun strategie niet veranderen. Het is alsof iedereen in de file heeft besloten: "Ik ga niet harder rijden, want dan krijg ik een boete en sta ik toch niet sneller."

2. Hoe werkt NashOpt? (De Twee Manieren)

De software gebruikt twee verschillende "denkmethoden" afhankelijk van hoe complex het spel is:

A. De "Gladde Berg" methode (Voor complexe, niet-lineaire spellen)

Stel je voor dat je in een donker, hobbelig landschap staat en je moet de laagste vallei vinden. Je kunt niet zien waar de bodem is, maar je kunt voelen of het terrein omhoog of omlaag gaat.

  • NashOpt gebruikt een slimme techniek (genaamd JAX) die als een super-snelheidssensor werkt. Hij "voelt" direct welke kant op je moet lopen om de beste oplossing te vinden, zonder dat je alles handmatig hoeft uit te rekenen.
  • Dit is perfect voor situaties waar de regels erg ingewikkeld en krom zijn (zoals in complexe economische modellen of AI).

B. De "Legpuzzel" methode (Voor lineaire, kwadratische spellen)

Soms zijn de regels heel strak en rechtlijnig (zoals in een legpuzzel waar elke stukje precies in een gleuf past).

  • Hier gebruikt NashOpt een andere aanpak: hij zet het hele probleem om in een Mixed-Integer Linear Program (MILP).
  • De analogie: Stel je voor dat je een enorme legpuzzel hebt met stukjes die ofwel "aan" of "uit" kunnen staan. NashOpt probeert alle mogelijke combinaties van deze stukjes te testen om te zien welke combinatie de beste oplossing geeft.
  • Het mooie hieraan is dat hij alle mogelijke oplossingen kan vinden. Soms is er niet één perfecte balans, maar meerdere. NashOpt kan ze allemaal op een rijtje zetten, zodat je kunt kiezen welke je wilt.

3. Wat kun je er allemaal mee doen?

De makers van NashOpt laten zien dat je deze tool kunt gebruiken voor veel verschillende dingen:

  • Het "Invers Spel" (De detective):
    Stel je ziet een verkeerssituatie en je vraagt je af: "Welke verkeersregels moeten er zijn geweest om dit gedrag te veroorzaken?" NashOpt kan dit omgekeerd oplossen. Je geeft het gedrag, en de software berekent welke regels er moesten zijn om dat gedrag te krijgen.
  • De "Spelontwerper" (De architect):
    Stel je bent een overheid of een manager. Je wilt dat de spelers (bijvoorbeeld bedrijven) een bepaald resultaat bereiken (bijvoorbeeld minder vervuiling). NashOpt helpt je om de regels van het spel (de parameters) zo in te stellen dat de spelers, terwijl ze alleen maar aan zichzelf denken, toch per ongeluk het gewenste resultaat bereiken. Dit heet een Stackelberg-spel.
  • Slimme Regelaars (LQR en MPC):
    Dit wordt gebruikt voor robotica en zelfrijdende auto's. Als je een groep drones hebt die samen een formatie moeten vormen, maar elk drone wil zijn eigen batterij sparen, helpt NashOpt om te berekenen hoe ze samen moeten vliegen zonder te botsen, terwijl ze allemaal hun eigen belangen bewaken.

4. Waarom is dit belangrijk?

Vroeger was het heel moeilijk om dit soort berekeningen te maken, vooral als er veel spelers bij betrokken waren of als de regels erg complex waren.

  • Snelheid: NashOpt is razendsnel. Het kan in een fractie van een seconde berekenen wat een mensuren zou kosten.
  • Open Source: Het is gratis beschikbaar voor iedereen. Iedereen kan het gebruiken, aanpassen en verbeteren.
  • Toekomst: Het helpt ons om betere systemen te bouwen voor verkeer, energie, financiën en kunstmatige intelligentie, waar veel verschillende partijen samenwerken (of concurreren) in dezelfde ruimte.

Kort samengevat:
NashOpt is als een super-intelligente scheidsrechter die in een chaotisch spel van concurrentie de perfecte balans vindt. Hij zorgt ervoor dat niemand zich bedrogen voelt en dat het systeem als geheel zo goed mogelijk werkt, of je nu een verkeersplan maakt, een stroomnet beheert of een groep robots aanstuurt.