Cílem je navrhnout nejefektivnější algoritmus pro iterované vězňovo dilema (Iterated Prisoner’s Dilemma, IPD). Budete hrát proti svým spolužákům i proti historickým benchmarkům. Jde o maximalizaci vlastního bodového zisku v prostředí, kde se činy pamatují.
Každý zápas se skládá z minimálně 100 kol. Po 100. kole existuje klesající pravděpodobnost, že hra bude pokračovat. Bodování v každém kole:
| Já / soupeř | Spolupráce (1) | Zrada (0) |
|---|---|---|
| Spolupráce (1) | 3 / 3 (odměna) | 0 / 5 (naivita) |
| Zrada (0) | 5 / 0 (pokušení) | 1 / 1 (trest) |
Své řešení v podobě funkce v Pythonu zasílejte e-mailem v souboru
se jménem [prijmeni].py.
play(my_history, opponent_history).int (0 nebo 1).Jednoduchá strategie, která kopíruje poslední tah soupeře.
def play(my_history, opponent_history):
# První kolo začni spoluprací
if not opponent_history:
return 1
# Vrať soupeři to, co udělal minule
return opponent_history[-1]
Nechť vyhraje ten nejsebestřednější a nejracionálnější. :)