Ich spiele zur Zeit 10-Mann NanoLimit SnGs und arbeite nebenbei ein bisschen mit dem ICM Trainer. Jedoch bin ich eher außer Haus und habe auch viel Zeit zwischendurch weshalb ich auf die Idee gekommen bin mir ein mobilen PoF Trainer zu programmieren. Nur hapert es ein bisschen am algorithmus, da ich noch keine Ahnung habe wie die Ranges so ganz berechnet werden.

Diese Links habe ich nun gefunden:

Suche Mathematiker für Nash Gleichgewicht erklärung
Nash Equi erzeugen
Nash-Gleichgewicht
Wie funktioniert die Rangeberechnung bei Nash wirklich?

Zusätzlich habe ich noch das Buch "The Mathematics of Poker" bzw. den Auszug der Seiten 123-131.

Ebenso kann ich EQs von zwei Händen (LookUpTable), Hand gegen Range oder zwei Ranges berechnen sowie die ICM EQs von X Spielern.

Mir fehlt also nur noch das zusammenkleistern aller Faktoren.

So wie ich das verstanden habe läuft das so ab:

Blinds: 200/400
Spieler A (SB): 3000 Chips
Spieler B (BB): 7000 Chips

Spieler A zahlt 200 Chips in den Pot. Spieler B setzt 400 Chips.

Spieler B callt in 20% der Fälle einen push von Spieler A. Die beste Pushingrange von Spieler A ist also wenn EV(Fold) = EV(Push).

EV(Fold) = -200;
EV(Push) = 0,8*400+P(Spieler B callt und gewinnt)*(-3000)+P(Spieler B callt und verliert)*(3000);

P(Spieler B callt und gewinnt) entspricht ja 1-EQ(A gegen B) und P(Spieler B callt und verliert) EQ(A gegen B).

Ich setz die beiden Gleichungen gleich und löse dann nach EQ(A gegen B) auf. Nun lasse ich den Equilierer mit der Range 0,01% (oder auch nur 0,1%) gegen 20% iterativ laufen bis ich eine PushingRange für Spieler A bekomme.

Dann berechne ich mithilfe der Range von Spieler A nun die CallingRange von Spieler B mit EV(Fold) = EV(Call).

EV(Fold) = -400;
EV(Call) = EQ(A gegen B)*(-3000)+(1-EQ(A gegen B))*(3000);

Ich setze nun wieder gleich, löse nach EQ(A gegen B) auf und lasse dann den Equilierer mit der zuvor errechneten Rage für Spieler A die Range für Spieler B bestimmen.

Nun das ganze wieder auf Seiten von Spieler A, doch dieses mal "mixe" ich die erste errechnete Pushing Range mit der jetzigen Pushing Range mit dem Gewicht 1/n (n ist die Nummer des aktuellen Mix).

S_mixed = S_alt*(1-1/n)+S_neu*(1/n);

Diese Schritte wiederhole ich nun ca. 300 mal und dann sollte ich ein Ergebnis haben.

Stimmt das denn soweit oder habe ich irgendwo einen Fehler?

//Edit: Hmmm... Muss ich nicht auch noch die Warscheinlichkeit des Eintretens der Fälle P(Spieler B callt, und XXX) miteinbeziehen? Also P(Spieler B callt und gewinnt) entspricht 0,2*EQ(A gegen B) und P(Spieler B callt und verliert) entspricht 0,2*(1-EQ(A gegen B))? Wie ist das dann noch mit Spieler B?

//Edit: für Spieler B brauch ich das ja nicht da der EV ja davon ausgeht das er schon gecallt hat... Richtig?

Das bedeutet das die Grundformeln folgende sind:

Push: EQ(A gegen B) = (-SB-(1-CallRangeB)+BB)/(2*CallRangeB*Stack)
Call: EQ(A gegen B) = (BB + Stack) / (2*Stack)

Sau spät, sau müde, kann sein das ichs auch voll verbockt habe oO