pmat = np.array([[-25,0],[-20,-5]])
def iterPD(action1, action2, pmat):
# A = defect & defect (-10); B = defect & coop (1)
# C = coop & defect (9) ; D = coop & coop (11)
result = action1 + action2
if result == -10:
po = [pmat[0,0],pmat[0,0]]
elif result == -9:
po = [pmat[1,0],pmat[0,1]]
elif result == 10:
po = [pmat[0,1],pmat[1,0]]
else:
po = [pmat[1,1],pmat[1,1]]
return(po)
def strCoop(mode):
if mode == "p1":
return(1)
else:
return(10)
def strDef(mode):
if mode == "p1":
return(0)
else:
return(-10)
def strTfT(lastPlay, mode):
if lastPlay == "D":
if mode == "p1":
return(0)
else:
return(-10)
else:
if mode == "p1":
return(1)
else:
return(10)
Nrep = 10
p1Hist = np.zeros([Nrep,2])
p2Hist = np.zeros([Nrep,2])
for i_rep in range(Nrep):
p1 = strDef("p1")
p2 = strCoop("p2")
po = iterPD(p1,p2,pmat)
p1Hist[i_rep,...] = [p1,po[0]]
p2Hist[i_rep,...] = [p2,po[1]]
lastPlay = "C"
for i_rep in range(Nrep):
p1 = strCoop("p1")
p2 = strTfT(lastPlay, "p2")
if p1 == 0:
lastPlay = "D"
else:
lastPlay = "C"
po = iterPD(p1,p2,pmat)
p1Hist[i_rep,...] = [p1,po[0]]
p2Hist[i_rep,...] = [p2,po[1]]
Related