智游城

标题: 对Howard探讨的bluff模型,我的计算 [打印本页]

作者: slclyo    时间: 2012-8-23 23:07
标题: 对Howard探讨的bluff模型,我的计算
本帖最后由 slclyo 于 2012-8-24 08:52 编辑

      Howard这篇文章很好,扑克的本质笔记(1-15),讲为什么要bluff的从数学上解释,http://www.zhiyoucheng.com/thread-814-1-1.html,启发很大,但是发现一些问题,觉得是H版大意了,当然本文也不比较粗糙,自己也很有可能疏忽,请见谅。
   说明:建议先阅读H版文章,表格之前黑色字为H版的内容。有些()中的内容是为了讲述的全面或科学,不要去深究了。

   上一集说要先研究一下BU在不同情况下的决策问题。因为BU的决策比UTG要简单一点,他只有两个决策需要做。第一,他拿J的时候,bluff的频率,我们拿q1表示。第二,他拿Q的时候,他call的频率,我们拿q2表示。注意当BU拿K的时候他没有什么决策好做的,100%或者bet或者call就行了。q1和q2都是从0到1的数。
    UTG的情况要稍微复杂一点,他要做三个决策。第一,他拿J的时候bluff的频率,用p1表示;第二,他拿Q的时候call BU的bet的频率,用p2表示;第三,他拿K的时候bet的频率,用p3表示。

UTG的决策
他拿J的时候bluff的频率,用p1表示               用b
他拿Q的时候call BU的bet的频率,用p2表示        用g(两个人的第三次决策)
他拿K的时候bet的频率,用p3表示                用a
4. Bet Q。这一点不如前三点那么直观。你有Q,对方不是最大的K就是最小的J,根据前两点,对手不会犯扔K或跟J的低级错误,所以你一定要check Q。
他拿Q的时候bet(raise)的频率                     用c
应该是c=0,此参数可以不放。但计算时放进去了,不影响下文整体计算推演以及最优选择,但部分细节可能影响。Lz文中以说明原因,c>0就犯错误了。以后有机会再改吧,不改的原因有2:一是懒,第二点,直观性问题,更加不直观的还有参数g,参考上面的“Bet Q”及下文推演)


BU的决策
他拿J的时候,bluff的频率,我们拿q1表示          用1-f
他拿Q的时候,他call的频率,我们拿q2表示
拿Q call raise(第一个人的bet)                   用d
拿Q flod raise(第一个人的bet)                   用1-d
拿Q check (第一个人的check)                     用e
拿Q raise (第一个人的check)                     用1-e


假设都一样
首先9人桌太复杂,我们假设只有2个人,甲和乙。
其次,flop、turn、river太麻烦,我们假设每人发一张牌,直接可以比较大小的。
第三,52张牌太多,我们假设只有一副牌只有3张牌,KQJ。K最大,J最小。
第四,bet,raise,reraise,4bet。。。太复杂,我们假设只有1次bet,对手只可以选择call,或者fold,不能raise。 (从1加注到2,我喜欢叫raise)
第五,SB,BB不方便,我们假设甲乙均投入1元,bet也是固定的1.
第六,假设两个对手没有任何的tell,纯数学问题。
底锅只可能是2、3、4




UTG1先决策,BTN2后决策,(UTG3再决策)
UTG决策参数abcg  BTN决策参数def


[attach]2042[/attach]
[attach]2043[/attach]

6倍的EV=2ad+(1-d)a+(1-a)e+2(1-a)(1-e)……
EV=(3gcf-2gc-3gf-2cf-3bd+af+ad+ae-2a+b-c-g-e-f)/6
(红色字为btn参数)
显然,凭大家感觉,UTG显然占下风,故接下来我们来寻找最优的utg参数
For a = 0 To 100 Step Cstep        (表示方便起见a=0-100计算中转换为0-1)
(计算机速度有限,步长只能取到0.05。即0  0.05  0.1  0.15)
        For b = 0 To 100 Step Cstep
            For c = 0 To 100 Step Cstep
                For g = 0 To 100 Step Cstep
                    DoEvents
                    d = -1
                    e = -1
                    f = -1
                    Max = Xuanyou(a, b, c, g, d, e, f) / 6

                Next g
            Next c
        Next b
Next a

       通过穷举abcg,再穷举def,从许多def组合中选出最让abcg受伤的组合(计算方面起见,同样utg-ev的def省略,这种省略可能对结果产生未知的影响。如下文大家可以猜猜BTN的参数配置,只有一种。(数学很重要,但是有些地方太死扣就没必要了))

    回到穷举abcg,从许多def组合中选出最让abcg受伤的组合。此假设意为两个大师较量,BTN是大师,而且完全掌握你的策略并优化了自己的策略,作为UTG的一方必然输了,那要怎么输的少一些呢,具体结果可以看表格。结论就是拿到K,raise的概率90%;拿到J,raise的概率30%;拿到Q,raise的概率0%;;拿到Q,call对手的raise的概率0%。此时你的对手也拿出杀手锏对付你,d=0,e=1,f=1;你平均每盘要输掉0.283。




作者: slclyo    时间: 2012-8-23 23:13
本帖最后由 slclyo 于 2012-8-23 23:14 编辑

a              b              c               g             d              e              f                utg-ev-max
90            30            00            00            00            100           100           -0.283(表示精度问题,有差别,a相差个10%但无所谓)
95            30            00            00            00            100           100           -0.283
100           30            00            00            00            00            00            -0.283
100           35            00            00            100           00            00            -0.283
75            25            00            00            00            100           100           -0.292
80            25            00            00            00            100           100           -0.292
85            25            00            00            00            100           100           -0.292
85            30            00            00            100           100           100           -0.292
90            25            00            00            00            100           100           -0.292
95            25            00            00            00            100           100           -0.292
95            35            00            00            100           100           100           -0.292
100           25            00            00            00            00            00            -0.292
60            20            00            00            00            100           100           -0.300
65            20            00            00            00            100           100           -0.300
70            20            00            00            00            100           100           -0.300
70            25            00            00            100           100           100           -0.300
75            20            00            00            00            100           100           -0.300
80            20            00            00            00            100           100           -0.300
80            30            00            00            100           100           100           -0.300
85            20            00            00            00            100           100           -0.300
90            20            00            00            00            100           100           -0.300
90            35            00            00            100           100           100           -0.300
95            20            00            00            00            100           100           -0.300
100           20            00            00            00            00            00            -0.300
100           40            00            00            100           00            00            -0.300
45            15            00            00            00            100           100           -0.308
50            15            00            00            00            100           100           -0.308
55            15            00            00            00            100           100           -0.308
55            20            00            00            100           100           100           -0.308
60            15            00            00            00            100           100           -0.308
65            15            00            00            00            100           100           -0.308

作者: Howard    时间: 2012-8-24 05:50
发现这样认真的回帖者我很高兴,这代表德芙2代正在冉冉升起。

楼主用编程穷举双方策略,很有新意。我正在研究,但是篇幅太长,还没看太明白,先说两句觉得不太对劲的地方

楼主说BU(好像现在流行叫BTN)拿到J时的策略:bluff概率为f;可是表格里面每当BU拿到J时,却用check(f) 和 raise (1-f) 表示。
我还没来及一一对照表格和最后的公式

另外,这种计算机模拟的方式和纯计算的最后结果可能差异非常大。因为纯计算的结果是理论值,模拟的是现实值。举个例子:
理论上BU的最优化打法应该是拿着J时bluff 1/3,拿着Q时call 1/3。这样的话UTG对他无计可施。
但是,这个1/3是指的严格1/3,数学意义上的精确值。在程序中,只能模拟到0.30和0.35,就算比较接近了。如果BU拿着J的Bluff概率是0.30,UTG就应该fold Q 100%;如果BU拿着J的bluff概率是0.35,那么UTG就应该call Q 100%。别说0.30和0.35这样的差距,就算0.3332和0.3334这么接近1/3的数,也会造成UTG的策略值瞬间由一个极端移向另一个极端。

因为我们假设了1. 双方都知道对方的策略 2. 策略保持不变。



作者: luckypanda    时间: 2012-8-24 07:05
我觉得楼主很强大,非常佩服这种认真研究的精神。有这样的精神,打牌想不好都难。

不过,我得承认我看得不是很懂。我等Howard研究完,他肯定会来个总结,到时候我们就可以偷懒了。
作者: slclyo    时间: 2012-8-24 08:11
本帖最后由 slclyo 于 2012-8-24 09:14 编辑
Howard 发表于 2012-8-24 05:50
发现这样认真的回帖者我很高兴,这代表德芙2代正在冉冉升起。

楼主用编程穷举双方策略,很有新意。我正在 ...


前面这个f是写错了
第二个问题
“这种计算机模拟的方式和纯计算的最后结果可能差异非常大”的确是的.
把不太直观的c=0带入求解,EV=(3gcf-2gc-3gf-2cf-3bd+af+ad+ae-2a+b-c-g-e-f)/6
=(-3gf-3bd+af+ad+ae-2a+b-g-e-f)/6=[(a-3b)d+(a-1)e+(a-3g-1)f-2a+b-g]/6                                     (UTG怎么做来赚BTN的更多钱,也就是输的最少)
解方程c-3b=0;a-1=0;a-3g-1=0;
a=1   b=1/3   (c=0)    g=0      utg-ev-max=-5/18=-0.2777               (也就是UTG的最优策略)

对比下第一行90            30            00            00            00            100           100           -0.283
因为b模拟只能到0.3 0.35  所以b在0.3时,相对与他最优的是a=0.9(与0.333对应的是1);
上文中“d=0,e=1,f=1;你平均每盘要输掉0.283。”的这种杀手锏,也不存在了,它只有不均衡时才有。均衡的话(a=1   b=1/3  c=0    g=0)对任何策略都一样。

与表格中的并不矛盾,其实是同一个东西。
计算机模拟和纯计算,互为辅助。如:
EV=[(f+d+e-2)a+(1-3d)b+(-1-3f)g-e-f]/6                                                                                                (BTN怎么做来赚UTG的更多钱)
g=0需要带入方程,下文有解释

故对于BTN最优方法为
1-3d=0
f+d+e-2=0

和H版的参数假设在q2--------d、e上有区别
d=1/3
f+e=5/3
EV=-5/18  等于前面那个最优EV
       (这个地方的EV是对UTG的而言的,BTN的期望就是5/18,也就是BTN在对手很英明的情况下最多只能赢5/18,计算机辅助验证如下)
a              b              c               g             d              e              f                utg-ev
00            00            00            00            35            65            100           -0.275
00            00            00            00            35            70            95            -0.275
100           00            00            00            35            70            100           -0.275
00            00            00            00            35            75            90            -0.275
100           00            00            00            35            75            95            -0.275
100           00            00            00            35            75            100           -0.275
00            00            00            00            35            80            85            -0.275
100           00            00            00            35            80            90            -0.275
100           00            00            00            35            80            95            -0.275
100           00            00            00            35            80            100           -0.275
00            00            00            00            35            85            80            -0.275
100           00            00            00            35            85            85            -0.275
100           00            00            00            35            85            90            -0.275
100           00            00            00            35            85            95            -0.275
100           00            00            00            35            85            100           -0.275
00            00            00            00            35            90            75            -0.275
100           00            00            00            35            90            80            -0.275
100           00            00            00            35            90            85            -0.275
100           00            00            00            35            90            90            -0.275
100           00            00            00            35            90            95            -0.275
100           00            00            00            35            90            100           -0.275
00            00            00            00            35            95            70            -0.275
100           00            00            00            35            95            75            -0.275
100           00            00            00            35            95            80            -0.275
100           00            00            00            35            95            85            -0.275
100           00            00            00            35            95            90            -0.275
100           00            00            00            35            95            95            -0.275
100           00            00            00            35            95            100           -0.275
00            00            00            00            35            100           65            -0.275
100           00            00            00            35            100           70            -0.275
100           00            00            00            35            100           75            -0.275
100           00            00            00            35            100           80            -0.275
100           00            00            00            35            100           85            -0.275
100           00            00            00            35            100           90            -0.275
100           00            00            00            35            100           95            -0.275
100           00            00            00            35            100           100           -0.275
00            100           00            00            30            70            100           -0.267
00            100           00            00            30            75            95            -0.267
100           100           00            00            30            75            100           -0.267
00            100           00            00            30            80            90            -0.267
100           100           00            00            30            80            95            -0.267
100           100           00            00            30            80            100           -0.267
00            100           00            00            30            85            85            -0.267
100           100           00            00            30            85            90            -0.267
100           100           00            00            30            85            95            -0.267

位置优势的重要性:哪里听说过,大师UTG和一般选手BTN较量,大师会惨败,下面给出解释。
另外,def9261种组合中,98种EV=0,588种EV>0。占了(588+49)/9261=6.8%
就是假设,我BTN随机的从def9261种组合,大师UTG洞悉了我的策略组合,并有针对性的利用,提高自己的EV;他只有6.8%的时候能做到EV>0。因为作为一般选手BTN即使是乱用策略,大部分时候,他选到的策略是没有机会让大师EV>0的,虽然这些策略也不好,大师也能针对性的利用。

作者: slclyo    时间: 2012-8-24 08:24
本帖最后由 slclyo 于 2012-8-24 08:33 编辑

拿Qcheck 别人raise 去call别人的raise也是不对的。
因为即使别人KJ都raise,你都占不到一点便宜。
数学上的解释。EV=(3gcf-2gc-3gf-2cf-3bd+af+ad+ae-2a+b-c-g-e-f)/6
有关g的系数为(3cf-2c-3f-1)
必然是负数。因此如果你拿去call别人的raise的话,-EV
故而g=0
c=0同理,只是g=0稍微不直观些
作者: 老陈    时间: 2012-8-24 21:27
本帖最后由 老陈 于 2012-8-24 08:29 编辑

首先赞扬LZ的专研精神,提出新的解决问题方法,也是难能可贵的。

但我在这里多几句嘴。
(1)LZ在第五里假设BET为1,这个假设不成立,因为BET(LZ说的raise)数额的大小直接影响到防守方的决策,比如BET=0.00001,那防守方就在拿Q或K时100%地CALL,比如BET=100000,那防守方就只拿K时CALL。所以进攻方的BET是一个优化参数,不能固定。
开个玩笑,我首先假设鸡蛋是带把的,然后我就去研究鸡蛋是哪种树上结的。尽管我的研究方法非常先进,但最终找到这棵树一定是错误的。
(2)进攻方拿K时,BET的频率应该是100%才是最优,无须参数。
(3)解这个问题用穷举的方案显然是错误的。穷举的方案只能在解的集合是有限时使用,而这个问题解的集合和实数的势(实变函数的一个概念)是相等的,因此不能在这里应用。逼近的办法到可以尝试,但在能找到解析解情况下也没必要。

如果LZ还有其它的解决方案,我一定积极参与。
作者: Howard    时间: 2012-8-24 23:44
slclyo 发表于 2012-8-23 18:24
拿Qcheck 别人raise 去call别人的raise也是不对的。
因为即使别人KJ都raise,你都占不到一点便宜。
数学上 ...

自己拿Q,对手bet(楼主说的raise),自己是有可能call的,无论自己在UTG还是BTN位置。

情况1:对手在UTG位bet,而已知他bet K 0%(试图induce bluff),bluff J 100%,则自己在纽扣位置不call Q,岂不荒谬?

或者,自己在UTG位拿着Q check,对手bet。已知他bet K 100% 且bluff J 100%,那么自己也必须call Q。因为一半情况他有K,自己输1;另一半他有J,自己赢3。

所以楼主关于g的系数(3cf-2c-3f-1),也就是-3f-1可能是不对的。

在我的公式中,g的系数为3f-1,当f大于1/3时g为正。我还没来得及检查楼主公式的化简和合并同类项过程到底哪里出了问题,但是g的系数不可能衡负这一点,是比较有把握的。
作者: Howard    时间: 2012-8-24 23:54
老陈 发表于 2012-8-24 07:27
首先赞扬LZ的专研精神,提出新的解决问题方法,也是难能可贵的。

但我在这里多几句嘴。

回老陈:

陈三点中我觉得第三点有启发意义,基本同意。第一和第二点我想可能是有误会

第一点:bet是1。这是个提设,也即,游戏就是这样设定的。此游戏并不是No Limit HU,而是无比简化后的Limit HU。

第二点:进攻方拿着K是有可能check的,因为有induce bluff的可能。比如,防守方bluff J概率过高,而call Q概率过低,那么进攻方check K的期望值就比bet K要高一些。
现实中的例子,就是你有坚果,对方不是中等牌就是空气,但是你下注他就全扔,你过牌他则肯定拿着空气去诈唬。

第三点,老陈说的很有启发。这类问题是否可以用step式穷举来找到最优解?多数情况是可以的,但有个前提,那就是两个玩家的EV之于所有参数在其定义域内均是连续函数。说来绕口,用人话说就是别出尖尖角。最近我看bill chen那本扑克的数学,发现很多想当然的连续光滑的函数其实是不连续的。
作者: Howard    时间: 2012-8-25 00:41
楼主5楼列出的UTG的EV公式是
(-3gf-3bd+af+ad+ae-2a+b-g-e-f)/6      
消去等于1的e,得到
(-3gf-3bd+af+ad-a+b-g-f-1)/6        .............楼主式

我在原文中的公式是1/6 * [ p1(1-3q2) + p2(3q1-1) + p3(q2-q1) -q1]

先统一度量衡:
p1 = b (UTG bluff J)
p2 = g (UTG call Q)
p3 = a (UTG bet K)
? = c (UTG bet Q,因为恒等于0,我没有这个对应的)
q1 = 1-f (BTN bluff J)
q2 = d (BTN call Q)
? = e (BTN bet Q,同理,恒等于0)

这样,我的公式变为:
1/6 × 【b(1-3d) + g(3-3f-1) + a(d-1+f) -1+f】
= 1/6 * (-3gf -3bd +af +ad -a +b -g +f -1)           .............霍式

比较楼主式和霍式,发现大多数项都一样,只有一个不同点:
楼主式中 -f,霍式是 +f

回头检查楼主表格,发现涉及纯f(不含其他字母)的地方有两个,每个情况又分两小点

1)枪口K,纽扣J,枪口check,
    1-1)纽扣也check, 公式:(1-a) * f *1
    1-2)纽扣bet,公式:(1-a) * (1-f) *2
2) 枪口Q,纽扣J,枪口check,
    2-1) 纽扣也check,公式: (1-c)×f ×1
    2-2)纽扣bet,枪口fold,公式:(1-c)×(1-f)×(1-g)×(-1)

四项相加,f的系数应该是1,而不是-1。楼主的-f 不知是否弄错了?

作者: Howard    时间: 2012-8-25 01:02
本帖最后由 Howard 于 2012-8-24 13:16 编辑

另外关于e的项也有问题。根据逻辑分析,枪口check,纽扣位拿着Q必然是check为最佳,bet是完全doninate于check的。所以EV公式中e的系数应该是常数或者0,跟a b c g不应相关(除非我们假定枪口fold K或者call J, e的系数里会出现这两个参数)

具体从表格分析,e的项目有四种:
(1-a)*e
(1-a)(1-e)
(1-b)*e*(-1)
(1-b)(1-e)(-1)

四项相加,e完全消去,系数为0,验证了逻辑分析。楼主式中e的系数为a-1,这可能也是在数字的海洋中出了个小纰漏
作者: slclyo    时间: 2012-8-25 16:17
Howard 发表于 2012-8-25 01:02
另外关于e的项也有问题。根据逻辑分析,枪口check,纽扣位拿着Q必然是check为最佳,bet是完全doninate于che ...

虽然检查过,但还是有计算错误,修改完再看结果。
作者: Howard    时间: 2012-9-10 23:39
slclyo兄怎么不出来了。还等着继续探讨呢
作者: nonoppt    时间: 2012-9-20 02:15
好专业




欢迎光临 智游城 (http://zhiyoucheng.co/) Powered by Discuz! X3.2