2011-02-04 10 views
6

Czy istnieje biblioteka Pythona, która rozwiązuje równowagę Nasha dwuosobowych gier zerowych? Wiem, że rozwiązanie można zapisać w kategoriach ograniczeń liniowych i teoretycznie scipy powinno być w stanie go zoptymalizować. Jednak w przypadku dwuosobowych gier zerowych rozwiązanie jest dokładne i unikalne, ale niektóre rozwiązania nie zbiegają się z powodu pewnych problemów.Równowaga Nasha w Pythonie

Zamiast wymieniać którekolwiek z bibliotek na Linear programing na stronie Python, chciałbym wiedzieć, która biblioteka byłaby najbardziej skuteczna pod względem łatwości użycia i szybkości.

Odpowiedz

3

Raymond Hettinger napisał a recipe for solving zero-sum payoff matrices. Powinno to służyć twoim celom.

Jeśli chodzi o bardziej ogólną bibliotekę do rozwiązywania teorii gier, nie ma niczego specjalnie zaprojektowanego do tego. Ale, jak powiedziałeś, scipy może rozwiązać takie problemy z optymalizacją. Możesz być w stanie coś zrobić z GarlicSim, która twierdzi, że jest "dla jakiejkolwiek symulacji: fizyki, teorii gier ...", ale nigdy wcześniej jej nie używałam, więc nie mogę jej polecić.

+1

Fragment kodu wydaje się dobrze działać, jednak używa techniki iteracyjnej, dokładne rozwiązanie byłoby miłe, ponieważ istnieje i jest unikatowe. – Hooked

+0

@Hooked winę Raymonda, nie ja;) Możesz wypróbować GarlicSim, ale bez obietnic –

+0

programista GarlicSim tutaj. Jeśli szukasz rozwiązania analitycznego, GarlicSim nie jest dla Ciebie dobry. Jeśli chcesz uruchamiać symulacje graczy grających w twoje gry, możesz to zrobić za pomocą GarlicSim i możesz spróbować użyć tego do uzyskania rozwiązania numerycznego, ale myślę, że lepiej Ci będzie z rozwiązaniem analitycznym, tj. Bez używania GarlicSim . Zakładając, że dobrze zrozumiałem twoje pytanie. –

0

Właśnie rozpoczęła łącząc jakąś grę kod teoria Pythona: http://drvinceknight.github.com/Gamepy/

Istnieje kod, który:

  • rozwiązuje dopasowania gry,
  • oblicza wartości Shapley w grach kooperacyjnych,
  • biegnie Symulacje oparte na agentach do identyfikacji zachowań w normalnych grach postaciowych,
  • (niezgrabnie - mój python foo wciąż rośnie) lrs library (napisana w C: http://cgm.cs.mcgill.ca/~avis/C/lrs.html), aby obliczyć rozwiązania dla normalnych gier (to jest to, w co wierzę, czego chcesz).

Kod jest dostępny na github, a ta strona (pierwszy link na początku tej odpowiedzi) wyjaśnia, w jaki sposób działa kod i podaje przykłady użytkowników.

Możesz również chcieć sprawdzić "Gambit", którego nigdy nie używałem.

+1

Link http://drvinceknight.github.com/Gamepy/ jest martwy, zaktualizuj go lub usuń – Somum