Calcoli scientifici con Julia/Teoria dei giochi
Esempio 1: Supermercati aperti la domenica
[modifica | modifica sorgente]Supponiamo che vi siano 2 supermercati che devono decidere se aprire la domenica oppure no. Se entrambi i supermercati non aprono guadagnano 150 e 250, se aprono guadagnano 200 e 300, se il primo non apre e il secondo si, quest'ultimo guadagna 350 mentre l'altro 100, se il secondo non apre e il primo si, quest'ultimo guadagna 250 mentre l'altro 200 . Si ottiene in tal modo la matrice dei payoff che utilizzando la libreria GameTheory di Julia si può memorizzare così:
using GameTheory
g = NormalFormGame((2, 2))
g[1, 1] = [200, 300]
g[1, 2] = [250, 200]
g[2, 1] = [100, 350]
g[2, 2] = [150, 250];
print(g)
2×2 NormalFormGame{2, Float64}: [200.0, 300.0] [250.0, 200.0] [100.0, 350.0] [150.0, 250.0]
Volendo trovare gli eventuali equilibri di Nash si utilizza in julia :
pure_nash(g)
1-element Vector{Tuple{Int64, Int64}}: (1, 1)
Quindi vi è un solo equilibrio di Nash contenuto nella cella (1,1) pari a [200, 300], pertanto è conveniente che entrambi i supermercati restino aperti di domenica.
Esempio 2: Prezzi bassi o alti
[modifica | modifica sorgente]Supponiamo che 2 aziende producano un bene in regime di duopolio e devono decidere se venderlo a prezzo alto o basso. Se entrambe lo vendono a prezzo alto, guadagnano 6, se entrambe lo vendono a prezzo basso guadagnano 2, se la prima lo vende a prezzo alto e la seconda a prezzo basso, quest'ultima guadagna 9 mentre l'altra 0, se la seconda lo vende a prezzo alto e la prima basso, quest'ultima guadagna 9 mentre l'altra 0 . Si ottiene in tal modo la matrice dei payoff che utilizzando la libreria GameTheory di Julia si può memorizzare così:
using GameTheory
g = NormalFormGame((2, 2))
g[1, 1] = [6, 6]
g[1, 2] = [0, 9]
g[2, 1] = [9, 0]
g[2, 2] = [2, 2];
print(g)
2×2 NormalFormGame{2, Float64}: [6.0, 6.0] [0.0, 9.0] [9.0, 0.0] [2.0, 2.0]
Volendo trovare gli eventuali equilibri di Nash si utilizza in julia :
pure_nash(g)
1-element Vector{Tuple{Int64, Int64}}: (2, 2)
Quindi vi è un solo equilibrio di Nash contenuto nella cella (2,2) pari a [2, 2], pertanto è conveniente che entrambe le aziende vendano a prezzi bassi.
Esempio 3
[modifica | modifica sorgente]Nel caso in cui un gioco sia rappresentato dalla seguente matrice di payoff :
g2 = NormalFormGame((3, 2))
g2[1, 1] = [3, 3]
g2[1, 2] = [3, 2]
g2[2, 1] = [2, 2]
g2[2, 2] = [5, 6];
g2[3, 1] = [0, 3]
g2[3, 2] = [0, 1];
print(g2)
3×2 NormalFormGame{2, Float64}: [3.0, 3.0] [3.0, 2.0] [2.0, 2.0] [5.0, 6.0] [0.0, 3.0] [0.0, 1.0]
Si trovano 2 equilibri di Nash :
pure_nash(g2)
2-element Vector{Tuple{Int64, Int64}}: (1, 1) (2, 2)
...cioè [3.0, 3.0] e [5.0, 6.0] ...
Ulteriori esempi dell'utilizzo di Julia nella teoria dei giochi si trovano nel tutorial: https://nbviewer.org/github/QuantEcon/game-theory-notebooks/blob/main/game_theory_jl.ipynb .