Physics of Socio-Economic Systems with the Computer
Vorlesung gehalten an der J.W.Goethe-Universität in Frankfurt am Main (Wintersemester 2017/18)
von Dr.phil.nat. Dr.rer.pol. Matthias Hanauske
Frankfurt am Main 22.08.2017
Erster Vorlesungsteil:
Dominante Strategien und Nash-Gleichgewichte
am Beispiel der folgenden Spiele:
Gefangenendilemma, Hirschjagt- und Angsthasen-Spiel
Einführung
In diesem Maple-Worksheet werden die in der Vorlesung definierten Gleichgewichtskonzepte (dominante Strategie, reine und gemischte Nash-Gleichgewichte) am Beispiel dreier simultaner, symmetrischer (2 Spieler)-(2 Strategien) Spiele illustriert.
Das Gefangenendilemma
> | restart:
with(plots): with(plottools): with(LinearAlgebra): with(ColorTools): |
Definition der Auszahlunsmatrix für Spieler A:
> | D_A11:=-7:
D_A12:=-1: D_A21:=-9: D_A22:=-3: D_A:=Matrix(2,2,[D_A11,D_A12,D_A21,D_A22]); |
(2.1) |
Da sich das Spiel um ein symmetrisches (2 Personen)-(2 Strategien) Spiel handelt, erhält man die Auszahlunsmatrix für Spieler B durch die transponierte Matrix des Spielers A:
> | D_B:=Transpose(D_A); |
(2.2) |
Unter Verwendung der gemischten Strategien (x,y) lässt sich eine gemischte Auszahlungsfunktion der Spieler wie folgt definieren:
> | Auszahlungsfunktion_A:=(x,y)->D_A[1,1]*x*y+D_A[1,2]*x*(1-y)+D_A[2,1]*(1-x)*y+D_A[2,2]*(1-x)*(1-y);
Auszahlungsfunktion_B:=(x,y)->D_B[1,1]*x*y+D_B[1,2]*x*(1-y)+D_B[2,1]*(1-x)*y+D_B[2,2]*(1-x)*(1-y); |
(2.3) |
Die gemischte Auszahlungsfunktion des Spielers A besitzt im oben definierten Gefangenendilenmma das folgende Aussehen:
> | plot3d(Auszahlungsfunktion_A(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],orientation=[95,65],title="Auszahlung an Spieler A",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]);
|
Die gemischte Auszahlungsfunktion des Spielers B sieht wie folgt aus:
> | plot3d(Auszahlungsfunktion_B(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],orientation=[5,65],title="Auszahlung an Spieler B",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]); |
Der Spezialfall des gemischten Nash-Gleichgewichts besteht, falls die partielle Ableitung der gemischten Auszahlungsfläche verschwindet, also
> | EqGemNashy:=diff(Auszahlungsfunktion_A(x,y),x)=0;
EqGemNashx:=diff(Auszahlungsfunktion_B(x,y),y)=0; |
(2.4) |
Da diese Gleichung keine sinnvolle Lösung besitzt existiert im Gefangenendilemma kein gemischtes Nash-Gleichgewicht.
Wir konzentrieren uns zunächst auf die gemischte Auszahlungsfunktion des Spielers A und werden anhand der Struktur der Auszahlungsflächen die Eigenschaften der dominanten Strategie im Gefangenendilemma verdeutlichen. Die Frage lautet: Unter der Annahme das Spieler B eine feste gemischte Strategie y spielt, welche Strategie x sollte Spieler A wählen, so dass er seine Auszahlung maximiert?
Nehmen wir an, dass Spieler B die reine Strategie y=0 spielen würde, dann wäre es das Beste für Spieler A die reine Strategie x=1 zu spielen (siehe weißes Rechteck in der folgenden Abbildung).
Nehmen wir dagegen an, dass Spieler B die reine Strategie y=1 spielen würde, dann wäre es das Beste für Spieler A ebenfalls die reine Strategie x=1 zu spielen (siehe schwarzes Rechteck in der folgenden Abbildung). Unanbhängig von der Wahl der Startegie des Spielers B, ist Spieler A immer veranlasst die Strategie x=1 zu spielen (siehe graue Rechtecke in der folgenden Abbildung); (x,y)=(1,1) ist somit die dominante Strategie und das einzige Nash-Gleichgewicht im Gefangenendilemma.
> | PDollarA:=plot3d(Auszahlungsfunktion_A(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],title="Auszahlung an Spieler A",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]):
MinDollar:=-9: MaxDollar:=-1: Sizecuboid:=0.05: Sizecuboidz:=0.3: anzy:=7: for sety from 0 by 1 to anzy do Ani[sety]:=animate(plots[display], [cuboid([-Sizecuboid/2+x, -Sizecuboid/2+sety/anzy, Auszahlungsfunktion_A(x,sety/anzy)-Sizecuboidz/2], [Sizecuboid/2+x, Sizecuboid/2+sety/anzy, Auszahlungsfunktion_A(x,sety/anzy)+Sizecuboidz/2])], x = 0 .. 1,scaling=constrained, style = patchnogrid,color=RGBToColor([255-round(sety/anzy*220), 255-round(sety/anzy*220), 255-round(sety/anzy*220)])): od: display(PDollarA,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[95,65]); display(PDollarA,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[180,90]); display(PDollarA,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[90,90]); |
> |
Das Hirschjagt-Spiel
> | restart:
with(plots): with(plottools): with(LinearAlgebra): with(ColorTools): |
Definition der Auszahlunsmatrix für Spieler A:
> | D_A11:=2:
D_A12:=4: D_A21:=0: D_A22:=5: D_A:=Matrix(2,2,[D_A11,D_A12,D_A21,D_A22]); |
(3.1) |
Da sich das Spiel um ein symmetrisches (2 Personen)-(2 Strategien) Spiel handelt, erhält man die Auszahlunsmatrix für Spieler B durch die transponierte Matrix des Spielers A:
> | D_B:=Transpose(D_A); |
(3.2) |
Unter Verwendung der gemischten Strategien (x,y) lässt sich eine gemischte Auszahlungsfunktion der Spieler wie folgt definieren:
> | Auszahlungsfunktion_A:=(x,y)->D_A[1,1]*x*y+D_A[1,2]*x*(1-y)+D_A[2,1]*(1-x)*y+D_A[2,2]*(1-x)*(1-y);
Auszahlungsfunktion_B:=(x,y)->D_B[1,1]*x*y+D_B[1,2]*x*(1-y)+D_B[2,1]*(1-x)*y+D_B[2,2]*(1-x)*(1-y); |
(3.3) |
Die gemischte Auszahlungsfunktion des Spielers A besitzt im oben definierten Hirschjagt-Spiel das folgende Aussehen:
> | plot3d(Auszahlungsfunktion_A(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],orientation=[95,65],title="Auszahlung an Spieler A",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]);
|
Die gemischte Auszahlungsfunktion des Spielers B sieht wie folgt aus:
> | plot3d(Auszahlungsfunktion_B(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],orientation=[5,65],title="Auszahlung an Spieler B",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]); |
Der Spezialfall des gemischten Nash-Gleichgewichts besteht, falls die partielle Ableitung der gemischten Auszahlungsfläche verschwindet, also
> | EqGemNashy:=diff(Auszahlungsfunktion_A(x,y),x)=0;
EqGemNashx:=diff(Auszahlungsfunktion_B(x,y),y)=0; |
(3.4) |
Das Hirschjagt-Spiel hat somit ein gemischtes Nash-Gleichgewicht bei den folgenden Werten der gemischten Strategien:
> | GemNashyy:=solve(EqGemNashy,y);
GemNashx:=solve(EqGemNashx,x); |
(3.5) |
Wir konzentrieren uns zunächst auf die gemischte Auszahlungsfunktion des Spielers A und werden anhand der Struktur der Auszahlungsflächen die Eigenschaften der reinen und gemischten Nash-Gleichgewichte verdeutlichen. Die Frage lautet: Unter der Annahme das Spieler B eine feste gemischte Strategie y spielt, welche Strategie x sollte Spieler A wählen, dass er seine Auszahlung maximiert?
Nehmen wir an, dass Spieler B die reine Strategie y=0 spielen würde, dann wäre es das Beste für Spieler A auch die reine Strategie x=0 zu spielen (siehe weißes Rechteck in der folgenden Abbildung).
Nehmen wir dagegen an, dass Spieler B die reine Strategie y=1 spielen würde, dann wäre es das Beste für Spieler A ebenfalls die reine Strategie x=1 zu spielen (siehe schwarzes Rechteck in der folgenden Abbildung).
Da beim gemischten Nash-Gleichgewicht die Steigung in x-Richtung bei festem y=1/3 identisch verschwindet, verändert sich der Wert der Auszahlung für Spieler A bei Variation von x nicht (siehe rotes Rechteck in der folgenden Abbildung).
Das Hirschjagt-Spiel besitzt somit ein gemischtes Nash-Gleichgewicht bei der Strategienkombination (x,y)=(1/3 , 1/3) und zwei reine, symmetrische Nash-Gleichgewicht bei (x,y)=(0,0) und (x,y)=(1,1). Die grauen Rechtecke veranschaulichen das Verhalten der Auszahlungsfunktion bei weiteren festen gemischten Strategien y und Variation von x.
> | PDollarA:=plot3d(Auszahlungsfunktion_A(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],title="Auszahlung an Spieler A",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]):
MinDollar:=0: MaxDollar:=5: Sizecuboid:=0.05: Sizecuboidz:=0.25: anzy:=7: for sety from 0 by 1 to anzy do Ani[sety]:=animate(plots[display], [cuboid([-Sizecuboid/2+x, -Sizecuboid/2+sety/anzy, Auszahlungsfunktion_A(x,sety/anzy)-Sizecuboidz/2], [Sizecuboid/2+x, Sizecuboid/2+sety/anzy, Auszahlungsfunktion_A(x,sety/anzy)+Sizecuboidz/2])], x = 0 .. 1,scaling=constrained, style = patchnogrid,color=RGBToColor([255-round(sety/anzy*220), 255-round(sety/anzy*220), 255-round(sety/anzy*220)])): od: AniGemNash:=animate(plots[display], [cuboid([-Sizecuboid/2+x, -Sizecuboid/2+GemNashyy, Auszahlungsfunktion_A(x,GemNashyy)-Sizecuboidz/2], [Sizecuboid/2+x, Sizecuboid/2+GemNashyy, Auszahlungsfunktion_A(x,GemNashyy)+Sizecuboidz/2])], x = 0 .. 1,scaling=constrained, style = patchnogrid,color=red): display(PDollarA,AniGemNash,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[95,65]); display(PDollarA,AniGemNash,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[180,90]); display(PDollarA,AniGemNash,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[90,90]); |
> |
Das Angsthasen-Spiel (Chicken Game)
> | restart:
with(plots): with(plottools): with(LinearAlgebra): with(ColorTools): |
Definition der Auszahlunsmatrix für Spieler A:
> | D_A11:=-10:
D_A12:=2: D_A21:=0: D_A22:=1: D_A:=Matrix(2,2,[D_A11,D_A12,D_A21,D_A22]); |
(4.1) |
Da sich das Spiel um ein symmetrisches (2 Personen)-(2 Strategien) Spiel handelt, erhält man die Auszahlunsmatrix für Spieler B durch die transponierte Matrix des Spielers A:
> | D_B:=Transpose(D_A); |
(4.2) |
Unter Verwendung der gemischten Strategien (x,y) lässt sich eine gemischte Auszahlungsfunktion der Spieler wie folgt definieren:
> | Auszahlungsfunktion_A:=(x,y)->D_A[1,1]*x*y+D_A[1,2]*x*(1-y)+D_A[2,1]*(1-x)*y+D_A[2,2]*(1-x)*(1-y);
Auszahlungsfunktion_B:=(x,y)->D_B[1,1]*x*y+D_B[1,2]*x*(1-y)+D_B[2,1]*(1-x)*y+D_B[2,2]*(1-x)*(1-y); |
(4.3) |
Die gemischte Auszahlungsfunktion des Spielers A besitzt im oben definierten Angsthasen-Spiel das folgende Aussehen:
> | plot3d(Auszahlungsfunktion_A(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],orientation=[95,65],title="Auszahlung an Spieler A",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]);
|
Die gemischte Auszahlungsfunktion des Spielers B sieht wie folgt aus:
> | plot3d(Auszahlungsfunktion_B(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],orientation=[95,65],title="Auszahlung an Spieler B",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]); |
Der Spezialfall des gemischten Nash-Gleichgewichts besteht, falls die partielle Ableitung der gemischten Auszahlungsfläche verschwindet, also
> | EqGemNashy:=diff(Auszahlungsfunktion_A(x,y),x)=0;
EqGemNashx:=diff(Auszahlungsfunktion_B(x,y),y)=0; |
(4.4) |
Das Angsthasen-Spiel hat somit ein gemischtes Nash-Gleichgewicht bei den folgenden Werten der gemischten Strategien:
> | GemNashyy:=solve(EqGemNashy,y);
GemNashx:=solve(EqGemNashx,x); |
(4.5) |
Wir konzentrieren uns zunächst auf die gemischte Auszahlungsfunktion des Spielers A und werden anhand der Struktur der Auszahlungsflächen die Eigenschaften der reinen und gemischten Nash-Gleichgewichte verdeutlichen. Die Frage lautet: Unter der Annahme das Spieler B eine feste gemischte Strategie y spielt, welche Strategie x sollte Spieler A wählen, dass er seine Auszahlung maximiert?
Nehmen wir an, dass Spieler B die reine Strategie y=0 spielen würde, dann wäre es das Beste für Spieler A die reine Strategie x=1 zu spielen (siehe weißes Rechteck in der folgenden Abbildung).
Nehmen wir dagegen an, dass Spieler B die reine Strategie y=1 spielen würde, dann wäre es das Beste für Spieler A die reine Strategie x=0 zu spielen (siehe schwarzes Rechteck in der folgenden Abbildung).
Da beim gemischten Nash-Gleichgewicht die Steigung in x-Richtung bei festem y=1/11 identisch verschwindet verändert sich der Wert der Auszahlung für Spieler A bei Variation von x nicht (siehe rotes Rechteck in der folgenden Abbildung).
Das Angsthasen-Spiel besitzt somit ein gemischtes Nash-Gleichgewicht bei der Strategienkombination (x,y)=(1/11 , 1/11) und zwei reine, unsymmetrische Nash-Gleichgewicht bei (x,y)=(0,1) und (x,y)=(1,0). Die grauen Rechtecke veranschaulichen das Verhalten der Auszahlungsfunktion bei weiteren festen gemischten Strategien y und Variation von x.
> | PDollarA:=plot3d(Auszahlungsfunktion_A(x,y),x=0..1,y=0..1,axes=boxed,labels=[x,"y","$"],title="Auszahlung an Spieler A",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]):
MinDollar:=-10: MaxDollar:=2: Sizecuboid:=0.05: Sizecuboidz:=0.5: anzy:=7: for sety from 0 by 1 to anzy do Ani[sety]:=animate(plots[display], [cuboid([-Sizecuboid/2+x, -Sizecuboid/2+sety/anzy, Auszahlungsfunktion_A(x,sety/anzy)-Sizecuboidz/2], [Sizecuboid/2+x, Sizecuboid/2+sety/anzy, Auszahlungsfunktion_A(x,sety/anzy)+Sizecuboidz/2])], x = 0 .. 1,scaling=constrained, style = patchnogrid,color=RGBToColor([255-round(sety/anzy*220), 255-round(sety/anzy*220), 255-round(sety/anzy*220)])): od: AniGemNash:=animate(plots[display], [cuboid([-Sizecuboid/2+x, -Sizecuboid/2+GemNashyy, Auszahlungsfunktion_A(x,GemNashyy)-Sizecuboidz/2], [Sizecuboid/2+x, Sizecuboid/2+GemNashyy, Auszahlungsfunktion_A(x,GemNashyy)+Sizecuboidz/2])], x = 0 .. 1,scaling=constrained, style = patchnogrid,color=red): display(PDollarA,AniGemNash,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[95,65]); display(PDollarA,AniGemNash,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[180,90]); display(PDollarA,AniGemNash,seq(Ani[i],i=0..anzy),scaling=unconstrained,view=[-0.01..1.05, -0.01..1.05,1.05*MinDollar..1.05*MaxDollar],orientation=[90,90]); |
Veranschaulichung der Struktur der Auszahlungsfläche:
> | animate(plot3d, [Auszahlungsfunktion_A(x,y),x=0..1,y=0..1,orientation=[Winkel*85+95,Winkel*25+65]], Winkel = 0 .. 1,axes=boxed,labels=[x,"y","$"],title="Auszahlung an Spieler A",shading=ZHUE,axesfont=[HELVETICA,13],font=[HELVETICA,15],titlefont=[HELVETICA,16]); |
> |