NashOpt -- A Python Library for Computing Generalized Nash Equilibria

NashOpt è una libreria Python open-source che calcola equilibri di Nash generalizzati in giochi non cooperativi con vincoli condivisi, sfruttando le condizioni KKT congiunte e strumenti come JAX e la programmazione lineare intera mista per risolvere sia giochi non lineari che lineari-quadratici, inclusi problemi di progettazione inversa e di Stackelberg.

Alberto Bemporad

Pubblicato 2026-03-10
📖 4 min di lettura☕ Lettura da pausa caffè

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

Immagina di essere in una stanza piena di persone che devono prendere decisioni insieme, ma ognuna ha i suoi obiettivi personali e ci sono delle regole che tutti devono rispettare. Ad esempio: guidare nello stesso traffico, usare la stessa banda internet, o gestire l'energia in una città.

La NashOpt è un "cervello digitale" (una libreria di software scritta in Python) che aiuta a capire come queste persone si comporteranno quando ognuno cercherà di fare il proprio interesse, rispettando le regole comuni. Il suo obiettivo è trovare il Punto di Equilibrio Generale di Nash: una situazione in cui nessuno ha motivo di cambiare la propria decisione perché, date le scelte degli altri, non può fare di meglio.

Ecco come funziona, spiegato con delle metafore semplici:

1. Il Problema: Trovare la "Tregua Perfetta"

Immagina un gioco dove ogni giocatore deve scegliere un percorso. Se tutti scelgono la strada più veloce per se stessi, si crea un ingorgo (il "paradosso del traffico"). NashOpt cerca di calcolare esattamente quale sarà la situazione finale: chi prenderà quale strada e quanto tempo impiegherà, sapendo che tutti stanno pensando allo stesso modo.

2. Due Modi per Risolvere il Gioco

Il software usa due "cervelli" diversi a seconda di quanto è complicato il gioco:

  • Per i giochi semplici e lineari (Il Metodo dei "Blocchi Lego"):
    Se le regole e i costi sono dritti e semplici (come costruire con i Lego), NashOpt trasforma il problema in un puzzle matematico chiamato Programmazione Lineare Intera.

    • L'analogia: È come se avessi un set di istruzioni preciso per costruire un castello. Il computer prova tutte le combinazioni possibili di "blocchi" (scelte) per trovare quella che funziona meglio. Se ci sono più soluzioni possibili, NashOpt può elencarle tutte, come se ti dicesse: "Ecco 3 modi diversi per costruire il castello che soddisfano le regole".
  • Per i giochi complessi e curvi (Il Metodo della "Bussola Digitale"):
    Se le regole sono curve, contorte o molto difficili (come guidare su una strada di montagna con curve strette), NashOpt usa un approccio diverso basato su JAX (una tecnologia molto veloce).

    • L'analogia: Immagina di essere su una montagna nebbiosa e devi trovare il punto più basso (il minimo costo). NashOpt lancia una "bussola" che calcola istantaneamente in quale direzione scendere. Fa milioni di calcoli al secondo per scivolare giù fino a trovare il punto di equilibrio, anche se il terreno è molto accidentato.

3. Le Applicazioni Magiche

NashOpt non si limita a guardare il gioco, può anche progettarlo:

  • Il "Capo" che disegna le regole (Giochi di Stackelberg):
    Immagina un sindaco che vuole che il traffico scorra bene. NashOpt può dire al sindaco: "Se imposti il semaforo su questo colore e limiti la velocità a quel valore, i guidatori (che agiscono per interesse proprio) finiranno naturalmente per non creare ingorghi". È come se il software disegnasse le regole del gioco per ottenere un risultato desiderato.
  • Il "Detective" (Giochi Inversi):
    Se vedi un risultato finale (es. "tutti usano la strada A"), NashOpt può lavorare al contrario e chiedersi: "Quali erano le regole o i prezzi che hanno portato le persone a scegliere proprio quella strada?". È come un detective che ricostruisce la scena del crimine partendo dal risultato.
  • Il "Controllore del Traffico" (MPC e LQR):
    Viene usato per controllare robot o sistemi energetici. Immagina un gruppo di droni che devono volare insieme senza scontrarsi. NashOpt calcola come ogni drone deve muoversi per non urtare gli altri, massimizzando la propria efficienza.

4. Perché è speciale?

  • È veloce: Usa la potenza dei computer moderni per fare calcoli che prima richiedevano ore in pochi millisecondi.
  • È flessibile: Funziona sia per problemi semplici (come dividere una torta) che per problemi complessi (come gestire l'energia di una città intera).
  • È gratuito: È un progetto "open-source", il che significa che chiunque può scaricarlo, studiarlo e usarlo per le proprie ricerche o applicazioni.

In sintesi:
NashOpt è come un simulatore di realtà per le decisioni umane. Ti permette di dire: "E se facessimo così? E se cambiassimo questa regola?" e ti risponde immediatamente mostrando come reagirebbero le persone, aiutandoti a progettare sistemi migliori, più sicuri ed efficienti, dove ognuno può perseguire il proprio obiettivo senza creare il caos.