2015华为软件精英挑战赛的比赛目的是设计德州扑克比赛的牌手程序,采用的是无限注的比赛规则。具体比赛规则见下面链接。在接到这个赛题之初,我们做的第一件事情是熟悉德州扑克的比赛规则,并尽可能去寻找现有的开源项目或者程序。具体来说,着手点主要有四点:维基、论文、比赛和开源项目。
首先阅读的是维基,这里参考的主要是英文的维基百科。通过维基百科,大致了解了德州扑克的发展历史和现状,并且得知在现在每年的都会有人与机器的德州扑克比赛和机器与机器之间的德州扑克比赛。此外,通过维基百科,还了解到当前主流学术界对于德州扑克AI的研究情况以及在设计德州扑克AI中遇到的主要难点。
具体来说,与德州扑克相关的比较出名,且被我们重点关注的比赛主要有:Association for the Advancement of Artificial Intelligence(AAAI)每年举办的赛事;Annual Computer Poker Competition 每年的机器对机器的比赛。AAAI 的比赛找不到源代码,因此对于我们的帮助不是很大;而 Annual Computer Poker Competition 比赛在2014年之前是不提供源代码,只是提供比赛的数据,到了2014年之后,比赛要求参赛的成员提供牌手程序代码,并且在其官方网站上也提供来参赛选手比赛程序的下载链接。相对来说,这是一个很考的资料参考网站。除此之阿外,还有人与AI的Poker比赛等等,由于时间和精力有限,就不再关注了!
在维基中了解的另外一个内容是知道了一些有名的Poker机器人,比如:
Tartanian7 获取 Computer Poker Competition 的多个Poker项目的冠军,也能够找到牌手程序的源码,就应用来说,对于我们的程序有很高的参考价值。不过,这个比赛针对的是非无限注的情况,且比赛的人数不多,最多只有三个人,这也点也或多或少有些限制;
在介绍Poker的论文中,更多的提及是采用机器学习的方法,解决Poker中的模型设计参数求解问题。其中提及的算法多种多样,根据自己看到的论文,提及最多的算法当属CFR、神经网络算法。其余一些算法也有所提及,但是由于不了解相关算法,没有能够理解论文内容;且不提供源代码,具体靠个人在一个月内复现出来难度太高,因此,这方面也没多大收获。但是,对于论文来说,其主要思想是通过构建Poker的策略模型,然后通过设计算法,来求解纳什均衡的参数。
为此,需要首先对纳什均衡的概念有一定的了解。具体来说,纳什均衡是一种策略的组合,使得每个参与人对于其他参与人策略的最优反应。假设在博弈中,如果某种情况下无一个参与者可以独自行动而增加收益(即为了自身利益最大化,没有一方愿意改变其策略),则此策略组合被称为纳什均衡。所有局中人的策略构成一个策略组合。
因此,对于德州扑克牌手程序的设计问题转化为建立德州扑克牌手模型,并求取纳什均衡条件下的模型参数问题。可惜的是,在当时比赛的时候,意识到的比较晚。
此外,在资料搜索的过程中,也涉及到了一些开源项目,并且获得了非常不错的借鉴效果。小结一下,一些觉得有用的Poker开源项目主要如下:
以上就是在做了7天左右的背景资源寻找之后得出的结论,足够给设计Poker比赛获取一个背景信息了。
德州扑克的规则如下:
http://baike.baidu.com/link?url=LRubmRHa_jQctARCV3ZHBp7_nLvCaby1ex1RyJZlJFWFF35kFW8nm-rcWRIiX9ztGa4zSfw8-RnabhvjCHKlv2zoWDk_zYiO5RK2biR2A2-VLb8l6HQtVfke3NfD7qMUQbb6X-XOL_2BRQQj2G5vcA_IR3u9_xa8B2w6LLehD7kef7kQ1OC83D3V03Grgs8x
AAAI 链接:
http://www.aaai.org/Conferences/AAAI/2014/aaai14poker.php
Cepheus 链接:
http://poker.srv.ualberta.ca/
原文地址:http://blog.csdn.net/shiyuan0/article/details/46374649