Jeu (0.1) Solveur?

Bonjour tout le monde, avez-vous des idées de spot qui ressemble au jeu 0.1 sur 2 street ?
Je n’ai pas réfléchi très longtemps à la question, j’ai mis en range OOP :

AcAh,AhKh,AhQh,AhJh,AhTh,Ah9h,Ah8h,Ah7h,Ah6h,Ah5h,Ah4h,Ah3h,Ah2h,AhKc,KcKh,KhQh,KhJh,KhTh,Kh9h,Kh8h,Kh7h,Kh6h,Kh5h,Kh4h,Kh3h,Kh2h,AhQc,KhQc,QcQh,QhJh,QhTh,Qh9h,Qh8h,Qh7h,Qh6h,Qh5h,Qh4h,Qh3h,Qh2h,AhJc,KhJc,QhJc,JcJh,JhTh,Jh9h,Jh8h,Jh7h,Jh6h,Jh5h,Jh4h,Jh3h,Jh2h,AhTc,KhTc,QhTc,JhTc,TcTh,Th9h,Th8h,Th7h,Th6h,Th5h,Th4h,Th3h,Th2h,Ah9c,Kh9c,Qh9c,Jh9c,Th9c,9c9h,9h8h,9h7h,9h6h,9h5h,9h4h,9h3h,9h2h,Ah8c,Kh8c,Qh8c,Jh8c,Th8c,9h8c,8c8h,8h7h,8h6h,8h5h,8h4h,8h3h,8h2h,Ah7c,Kh7c,Qh7c,Jh7c,Th7c,9h7c,8h7c,7c7h,7h6h,7h5h,7h4h,7h3h,7h2h,Ah6c,Kh6c,Qh6c,Jh6c,Th6c,9h6c,8h6c,7h6c,6c6h,6h5h,6h4h,6h3h,6h2h,Ah5c,Kh5c,Qh5c,Jh5c,Th5c,9h5c,8h5c,7h5c,6h5c,5c5h,5h4h,5h3h,5h2h,Ah4c,Kh4c,Qh4c,Jh4c,Th4c,9h4c,8h4c,7h4c,6h4c,5h4c,4c4h,4h3h,4h2h,Ah3c,Kh3c,Qh3c,Jh3c,Th3c,9h3c,8h3c,7h3c,6h3c,5h3c,4h3c,3c3h,3h2h,Ah2c,Kh2c,Qh2c,Jh2c,Th2c,9h2c,8h2c,7h2c,6h2c,5h2c,4h2c,3h2c,2c2h

Range IP :

AsAd,AsKs,AsQs,AsJs,AsTs,As9s,As8s,As7s,As6s,As5s,As4s,As3s,As2s,AsKd,KsKd,KsQs,KsJs,KsTs,Ks9s,Ks8s,Ks7s,Ks6s,Ks5s,Ks4s,Ks3s,Ks2s,AsQd,KsQd,QsQd,QsJs,QsTs,Qs9s,Qs8s,Qs7s,Qs6s,Qs5s,Qs4s,Qs3s,Qs2s,AsJd,KsJd,QsJd,JsJd,JsTs,Js9s,Jd8d,Js7s,Js6s,Js5s,Js4s,Js3s,Js2s,AsTd,KsTd,QsTd,JsTd,TsTd,Ts9s,Ts8s,Td7d,Ts6s,Ts5s,Ts4s,Ts3s,Ts2s,As9d,Ks9d,Qs9d,Js9d,Ts9d,9s9d,9s8s,9s7s,9s6s,9s5s,9s4s,9s3s,9s2s,As8d,Ks8d,Qs8d,Js8d,Ts8d,9s8d,8s8d,8s7s,8s6s,8s5s,8s4s,8s3s,8s2s,As7d,Ks7d,Qs7d,Js7d,Ts7d,9s7d,8s7d,7s7d,7s6s,7s5s,7s4s,7s3s,7s2s,As6d,Ks6d,Qs6d,Js6d,Ts6d,9s6d,8s6d,7s6d,6s6d,6s5s,6s4s,6s3s,6s2s,As5d,Ks5d,Qs5d,Js5d,Ts5d,9s5d,8s5d,7s5d,6s5d,5s5d,5s4s,5s3s,5s2s,As4d,Ks4d,Qs4d,Js4d,Ts4d,9s4d,8s4d,7s4d,6s4d,5s4d,4s4d,4s3s,4s2s,As3d,Ks3d,Qs3d,Js3d,Ts3d,9s3d,8s3d,7s3d,6s3d,5s3d,4s3d,3s3d,3s2s,As2d,Ks2d,Qs2d,Js2d,Ts2d,9s2d,8s2d,7s2d,6s2d,5s2d,4s2d,3s2d,2s2d

Il n’y a plus de blocker dans les range :

En spot j’ai AsQd5c4d

Les suits provoque une petite asymétrie de range :

Si je construit l’arbe GTO+ comme ceci :


turn bet pot, et river overbet 150

J’obtiens cette strat :

River SB bet 32.74 % du temps, et BB call 39.63 % du temps

pour le jeu 0.1 2 street j’ai :

EV bet thin check = EV check check = y1t

EV bet strong bet thin = EV bet strong check = y1r

EV bet bluff strong check = EV check check = y0t

EV bet bluff thin bet bluff = EV bet bluff thin check = y0r

EV call thin fold = EV fold = x1*t

EV call strong call = EV call fold = x1*r

Paramétrage de la solution : 0 > y1r > x1r > y1t > x1t > y0t > y0r >1

Savoir si x1*r et bien > à y1t n’a pas d’importance, car ils n’interagissent pas ensemble dans les équations.

Pt = pot turn, Bt = bet turn, Pr = pot river, Br = bet river

Pour le jeu 0.1 j’ai trouvé cette strat :

EV bet thin check = (Pt + Bt) (x1t – y1t) + (pt) (1 – x1t) – Bt (y1t)

EV check check = Pt (1 – y1t)

(Pt + Bt) (x1t – y1t) + (pt) (1 – x1t) – Bt (y1t) = Pt (1 – y1t)

Pt (x1t – y1t) + Bt (x1t – y1t) + (pt) (1 – x1*t) – Bt (y1t) = Pt (1 – y1t)

Pt x1t – Pt y1t + Bt x1t – Bt y1t + pt – pt x1*t – Bt y1t = Pt – Pt y1t

Bt x1*t – 2 Bt y1t = 0

x1*t = 2 y1t

EV bet strong bet thin = Pt (1 – x1t) + (Pt + Bt) (x1t – x1r) + (Pt + Bt + Br) (x1r – y1r) – (Bt + Br) y1r

EV bet strong check = Pt (1 – x1t) + (Pt + Bt) (x1t – y1r) – Bt y1r

Pt (1 – x1t) + (Pt + Bt) (x1t – x1r) + (Pt + Bt + Br) (x1r – y1r) – (Bt + Br) y1r = Pt (1 – x1t) + (Pt + Bt) (x1t – y1r) – Bt y1r

(Pt + Bt + Br) (x1r – y1r) – (Bt + Br) y1r = (Pt + Bt) (x1r – y1r) – Bt y1r

Br (x1*r – y1r) – (Bt + Br) y1r = – Bt y1r

Br (x1*r – y1r) – Br y1r = 0

Br x1*r – Br y1r – Br y1r = 0

Br x1*r = 2 Br y1r

x1*r = 2 y1r

EV bet bluff strong check = Pt (1- x1t) – Bt (x1t)

EV check check = pt (1 – y0t)

Pt (1- x1t) – Bt (x1t) = pt (1 – y0t)

Pt - Pt x1t – Bt x1t = Pt – Pt y0t

(Pt + Bt) x1*t = Pt y0t

x1*t = y0t Pt / (Pt + Bt)

EV bet bluff thin bet bluff = (Pt + Bt) (x1t – x1r) + Pt (1 – x1t) – (Br + Bt) (x1r)

EV bet bluff thin check = pt (1 – x1t) – Bt (x1t)

(Pt + Bt) (x1t – x1r) + Pt (1 – x1t) – (Br + Bt) (x1r) = pt (1 – x1t) – Bt (x1t)

(Pt + Bt) (x1t – x1r) – (Br + Bt) (x1r) = – Bt (x1t)

Pt x1t – Pt x1r + Bt x1t – Bt x1r – Br x1r + Bt x1r = – Bt x1*t

(Pt + 2 Bt) x1t = (Pt + Br) x1r

x1r = x1t (Pt + 2 Bt) / (Pt + Br)

x1r = x1t (Pr) / (Pt + Br)

EV call thin fold = (Pt + Bt) (y0r – y0t) – Bt (1 – y0r) – Bt (y1t)

EV fold = 0

(Pt + Bt) (y0r – y0t) – Bt (1 – y0r) – Bt (y1t)= 0

Pt y0r- Pt y0t + Bt y0r – Bt y0t – Bt + Bt y0r – Bt y1t = 0

(Pt + 2 Bt) y0r - Pt y0t – Bt y0t – Bt – Bt y1t = 0

(Pt + 2 Bt) y0r - (Pt + Bt) y0t - Bt - Bt y1t = 0

(Pt + 2 Bt) y0r - Bt - Bt y1t = (Pt + Bt) y0t

y0r (Pt + 2 Bt) / (Pt + Bt) - Bt / (Pt + Bt) - y1t Bt / (Pt + Bt) = y0t

y0r (Pt + 2 Bt) / (Pt + Bt) - Bt / (Pt + Bt) - y1t Bt / (Pt + Bt) = y0t

1 – (1 - y0r) Bt / (Bt + Pt) – y1t Bt / (Bt + Pt) – y0r = y0t

EV call strong call = (Pt + Bt) (y1t – x1r) + (Pt + Bt) (y0r – y0t) + (Pt + Bt + Br) (1 – y0r) – (Bt + Br) (y1r) – Bt (x1*r – y1r)

EV call fold = (Pt + Bt) (y1t – x1r) + (Pt + Bt) (y0r – y0t) - Bt (1 – y0r) – Bt x1*r

(Pt + Bt) (y1t – x1r) + (Pt + Bt) (y0r – y0t) + (Pt + Bt + Br) (1 – y0r) – (Bt + Br) (y1r) – Bt (x1r – y1r) = (Pt + Bt) (y1t – x1r) + (Pt + Bt) (y0r – y0t) - Bt (1 – y0r) – Bt x1r

(Pt + Bt + Br) (1 – y0r) – (Bt + Br) (y1r) – Bt (x1r – y1r) = - Bt (1 – y0r) – Bt x1r

(Pt + 2 Bt + Br) (1 – y0r) – (Bt + Br) (y1r) – Bt (x1r – y1r) = – Bt x1r

(Pt + 2 Bt + Br) (1 – y0r) – (Bt + Br) (y1r) + Bt y1r= 0 (Pr + Br) (1 – y0r) – ( 2 Bt + Br) (y1r) = 0

( 2 Bt + Br) (y1r) = (Pr + Br) (1 – y0r)

( 2 Bt + Br) (y1r) / (Pr + Br) = (1 – y0r)

(Pt + 2 Bt + Br) (1 – y0r) – (Bt + Br) (y1r) + Bt y1r = 0

(Bt + Br) (y1r) - Bt y1r = (Pr + Br) (1 – y0r)

y1r Br / (Pr + Br) = 1 – y0r

y0r = 1 - y1r Br / (Pr + Br)

αr = Br + (Br + Pr)

  • x1*t = 2 y1t
  • x1*r = 2 y1r
  • x1*t = y0t (1 – αt)
  • x1r = x1t (1 – αr)
  • y0t =1 – y0r αt – y1t αt – (1 - y0r)
  • y0r = 1 - y1r αr

Les freq diffère de quelque pourcent. La grosse différence c’est river

(1 – x1t* (1 – 0.6) / 2 * 0.6) (1 + 2) / (1 + 1) - 1 / (1 + 1) - (x1t* / 2) * 1 / (1+ 1) = x1t* / 0.5

(1 – x1t* (1 – 0.6) / 2 * 0.6) (3) / (2) - 0.5 - (x1t* / 2) * 0.5 = 2 x1t*

X1*t = 100 / 243

100 / 243= 2 y1t >> y1t = 50 / 243

x1*r = 2 y1r >> y1r = 20 / 243

100 / 243= y0t (1 – αt) >> y0t = 200 / 243

x1r = 100 / 243 (1 – αr) >> x1r = 40 / 243

y0t =1 – (1- y0r) αt – y1t αt – (1 - y0r)

y0r = 1 - y1r αr >> y0r = 77 / 81

On a donc :

  • y1t = 50 / 243
  • Y1r = 20 / 243
  • Y0t = 200 / 243
  • Y0r = 77 / 81
  • X1*t = 100 / 243
  • X1*r = 40 / 243

Ce qui donne :


Rappel solver

River SB bet 32.74 % du temps, et BB call 39.63 % du temps

Comme vous pouvez le voir les fréquences sont assez similaire au jeu 0.1, sauf la fréquence de bet turn, on à 42.5 au lieu de 38.3.

Peut être le mieux c’est de crée un solver spécial 0.1, mais ca ma l’air long à faire ?

Le but c’est de résoudre des arbre plus complexe, et d’avoir une meilleur compréhension de ou viens l’EV de chaque seuil, déjà sur 2 street, ensuite sur 3, ensuite depuis le preflop.
cela me permettras d’affiner mes explo au table, et de repérer les strat quasi « cooptimal » du solver plus facilement.

Pour ma part, je suis persuadé que tu peux le faire. :+1:
Et même que la « longueur » pour le faire ne te dérangerait pas puisque tu adores ça.

Par contre, je serais plus réservé quand tu dis que cela pourrait te permettre « d’affiner tes explo aux tables ».

Parce que d’une part, tu es déjà vachement loin dans ta démarche.
Et à un point que je ne crois pas qu’il y en ait beaucoup sur ce forum qui puissent te suivre.
Je veux dire dans le sens de bien pouvoir tout comprendre. Et sûrement pas moi en tout cas.

D’autre part et même si (j’insiste !) je respecte énormément ton intelligence et ta passion pour les maths, je me demande où est la place des « facteurs humains » dans tes calculs.

Alors qu’on sait qu’ils peuvent avoir une importance à tout le moins considérable dans le poker.
Et toujours à mon humble avis, souvent plus que d’essayer d’aller chercher un petit % d’équité en plus ou en moins avec des équations hyper pointues sur une main ou l’autre.

Bien à toi et à tous ! :slightly_smiling_face:

1 « J'aime »

le facteure humain peut par exemple être pris en compte par un calcule bayesien, le poker est un jeu 100 % mathématique (ou au moins 100 % logique, si tu n’est pas logique tu n’arrivera pas dans le poker), ou le hasard na pas sa place (pour la prise de décision). Ou au table par un simple calcule de probabilité.

les strat d’explo passe par le déplacement de seuil, donc si tu sait dans quelle sens le déplacer, et ou est -ce qu’il ce situe, alors ca te donne un gros edge sur les autre. les seuil en early street sont souvent multit directionnelle, d’où la difficulté de les repérer

j’ai finalement choisit un autre spot pour avoir une représentation plus réel des seuil.

d’ailleurs en parcourant la solution je viens de voir que j’ai oublier de parler des bluff cooptimal river dans le jeu 0.1 river.
En effet turn, on va bluff nos pire mains, car à chaque fois qu’on bluff on tue l’équity de no bluff par la range de call de vilain, mais river, vilain à fold tout c’est mains qui sont dominé par des bluff, ce qui fait que tout nos bluff one barelle on exactement 0 % d’équity. du coup on n’est pas obliger de bluff nos combo proche de 1, mais on peut bluff avec fréquence tout notre region (1-y0) de sorte à avoir le bon ratio de deux barelle. cela fait que le seuil (1 - y0r) n’existe pas vraiment, car c’est juste une fréquence de (1 - y0).

Bien sur la solution que j’ai trouvé dans l’article n’est pas fausse pour les 2 barelle, juste ce n’est pas la seule solution optimal.

voici une représentation graphique des bluff river sur solver :

image

on voit très clairement le seuil (1 - y0) pris en fréquence.

ce qui donnerai ca :
Paramétrage de la solution : 0 > y1r > x1 r > y1t > x1 t > y0t = y0r >1

il est correct le croquis ?

BB = bet/bet
BX = bet/check
CC= call/call
CF= call/fold
etc…

1 « J'aime »

Oui il est correcte, après le seuil y0r, n’existe pas vraiment, c’est juste une fréquence du domaine y0t, comme je l’ai expliquer au dessue.

1 « J'aime »

tu peux pas juste faire une range 33-JJ vs AA & 22 ou un truc du genre plus simple?

1 « J'aime »

Pour les range j’ai mis :

OOP : AcAh,KcKh,QcQh,JcJh,TcTh,9c9h,8c8h,7c7h,6c6h,5c5h,Kh4c,Qh4c,Jh4c,Th4c,9h4c,8h4c,7h4c,6h4c,5h4c,4c4h

IP : AsAd,KsKd,QsQd,JsJd,TsTd,9s9d,8s8d,7s7d,6s6d,5s5d,Kd4s,Qd4s,Jd4s,Td4s,9d4s,8d4s,7d4s,6d4s,5d4s,4s4d

L’effet blocker est éliminé, ça sera les cartes river qui vont blocker les range, par exemple si 8s tombe IP à plus 8s8d, alors que OOP à 8c8h.

Le board :

image

Les range sont symétrique.

et la mains dominé à peut d’out pour outdraw.

Mais il y’a beaucoup de trou dans l’Equity :

Le jeu 0,1 si j’ai bien compris c’est un peu comme du kuhn poker?

Si c’est le cas j’ai déjà codé un truc en java qui converge vers l’équilibre de nash pour ce jeu, je devrais pouvoir l’adapter facilement, tu peux me contacter si je comprend bien ce que tu veux, ça devrais pas être compliqué. (ça serais en invite de commande pour simuler une strat car j’ai pas le temps de faire une interface graphique pour le moment).

1 « J'aime »

Je ne connaissais pas le kuhn poker, mais ça na pas l’aire d’être ça.

Le jeu 0.1 est un jeu très simple, chaque joueur se voie distribuer une main entre 0 et 1, et la plus petite main est plus forte que la plus grande, par exemple la main au points 0.412 et plus fort que la main au points 0.4156.

On peut aussi donner une Equity aux mains dominées, par exemple la main dominée perd 1/10, et gagne 9/10.

On peut aussi enlever une partie des mains au joueur, par exemple enlever les mains de 0 à 0.1 à OOP …

J’ai déjà résolu la plupart des jeu 0.1 sur une street, et des model simplifier 2 street, mais quand on complexifie l’arbre sur 2 street les équations devienne trop complexe à résoudre, et le paramétrage du jeu et pas forcement évident à trouver.

Ah d’accord, du coup si tu prends tous les réels entre 0 et 1, l’arbre de décision est infini donc mon algo ne fonctionnera pas. Intéressant en tout cas, j’ai pas encore pris le temps de lire tes articles mais c’est dans ma todo list :slight_smile:

Le kuhn poker c’est pas comme le jeu AKQ ?
je l’avais résolue sur 3 street, et je me souviens il y’avais pleins de strat co-optimal.

Je ne connais pas le AKQ, je suis en train de regarder une vidéo dessus, à prioris ça à l’air d’être la même chose que le kuhn poker. 3 cartes privatives, un tour d’enchère, la carte la plus haute gagne à l’abattage.

Pour étudier la théorie des jeux, il y a aussi une version un peu plus compliquée que le kuhn poker qui se joue sur 2 streets qui est pas mal. Leduc poker, deck de 6 cartes JJQQKK, chaque joueur reçoit une carte privative, il y a un premier tour d’enchères, ensuite une carte communautaire est posée sur la table, un deuxième tour d’enchère, celui qui a une paire gagne, sinon celui qui à la carte la plus haute gagne.

1 « J'aime »

Déjà sur une street il y a une infinité de stratégies optimales liée à un paramètre Alpha compris entre [0, 1/3]. Quand le joueur 1 a un valet, il peut choisir librement de bet aplha% du temps et check le reste, si il a un roi il doit bet 3*alpha% du temps et check le reste etc. Peu importe le alpha choisis, l’ev du joueur 1 sera toujours de -1/18.

1 « J'aime »

très intéressant le Alpha compris entre [0, 1/3]

on peut définir l’équation 1 : freq bet J = 1 / (2 + 1) freq K

le joueur 1 va bet alpha qui appartient à un ensemble de 0, à 1/3 de ses J, alors K doit Bet selon l’équation 1 : freq K = alpha * 3

Si OOP check, il c’est séparer de 3 alpha K, il doit call 2/3 de sa range de check qui batte un J pour rendre les J de IP indifférent, soit 2 / (1 + 2) , du coup call alpha + 1/3 des Q + les K qu’il à check

par exemple alpha = 0.1
OOP bet 0.3 K
après un check il à 0.7 + 1 combo pour ce défendre, et il doit call 2/3 de 1.7 soit 0.7 K + 0.33 + 0.1 des Q, total défense = 1.13, soit 2/3 des hand qui batte un J

Tu à déjà essayer d’autoriser les raise dans ce jeu ?, ca montre un concept que je trouve intéressant pour la théorie river, OOP va se mettre à bet des Q.

Pour l’EV du jeu j’ai :
l’EV du jeu :
Comme la strat de check = strat de bet pour tout nombre comprit entre 0, et 1/3, alors on peut partir de l’hypothèse que OOP check 100 % pour réduire l’arbre de calcule,

EV des K = 2 + 1 * P bet une Q - 1, soit 0.33 / 2 * 2 - 1= 1/6 + 1 = 1.16
EV des J = - 1
EV des Q = 2 * proba que IP check - 1, soit 0.66 / 2 * 2 - 1 = 2/3 - 1

EV total = EV K * P K + EV Q * P Q + EV J * P J = (7/6) * 1/3 - 1/3 * 1/3 - 1 * 1/3 = -0.055 soit - 1/18 comme tu l’à dit.

1 « J'aime »

C’est exactement ça, je viens de lancer 2 simulations avec mon solveur de kuhn poker sur 100M iterations (ça devrais donner une bonne estimation de l’équilibre de nash).

Simulation 1: on voit que l’ev de oop est de environ -0.055 ce qui correspond bien aux -1/18 attendu par la théorie.
1 représente J, 2 représente Q et 3 représente K, à coté du chiffre tu as l’historique du coup, p= pass et b=bet. La première colonne de la matrice représente la fréquence de check (ou pass) et la deuxième la fréquence de bet.
Justement ça tombe bien, on voit que dans cette simulation, (ligne 1(1:), colonne 2) oop décide de bet (donc prendre un alpha d’environ 0,10) si il a un J, donc je peux comparer l’output de mon programme avec tes calculs voir si je ne me suis pas planté.

Quand on a un K on doit bet à une proba de 3*alpha (ligne 9 (3:), colonne 2) environ 0.33 fréquence de bet avec K donc ça colle aussi.

On voit aussi ligne 2pb: colonne 2 que quand il check avec ses QQ et que IP bet il défend bien alpha+1/3. Donc content le programme à l’air de donner une bonne estimation ^^.

kuhnsim1

Simulation 2 pour le fun avec un alpha différent:
kuhnsim2

Oui j’ai fais pleins de simulations différentes en rajoutant des betting rounds, des raises,… J’ai fais pareil avec le leduc poker qui est plus compliqué, j’ai bricolé aussi sur le royal holdem mais maintenant je m’attaque au gros morceaux, le NLHE ou je vais devoir solve une abstraction du jeu et faire des compromis car même avec des clusters à disposition, ça suffis pas pour solve assez rapidement un arbre de décision de 10^161 information set lol

Tu peut essayer de réduire le nombre de turn et river, pour les calcule.