★★★ 求顶级黑白棋的估值方法。欢迎讨论!

NowCan 2004-11-26 01:18:29
国内的黑白棋智能和国外的差距很大,希望大家能讨论讨论,怎样才能写出顶级的黑白棋程序。
...全文
1206 点赞 收藏 42
写回复
42 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shines77 2005-06-28
4天?我倒了。。。。真有毅力:)
回复
NowCan 2005-06-28
呵呵,4天还是保守估计,经过昨天一夜的运算,我发现程序有越来越慢的趋势。而且今天发现程序有错误,只好重来。
其实,统计逼近的方法也可以用在经典的估值方法(行动力、潜在行动力、稳定子)上,应该是一样的,而且计算起来应该会快很多,也许我还会试试这条路。
回复
NowCan 2005-06-27
现在已经基本明白了模板估值。编了个程序正在计算模板参数,估计运行时间4天左右,这个帖子结了。
回复
xu770 2005-06-03
mark
回复
wh_5 2005-06-02
高手看哈这个问题。。http://community.csdn.net/Expert/topic/4054/4054933.xml?temp=.1963007
回复
NowCan 2005-06-02
最新进展。
看到了Zebra的源代码,很复杂,难。
反编译了Booby java版,还没仔细看。
回复
jerryy 2005-04-07
我倒是一直想做一个五子棋的
回复
-空军- 2005-04-03
mark
回复
NowCan 2005-02-07
我倒是见过一个用C写的全bitboard的黑白棋,计算棋子翻转的地方比求行动力复杂很多,没仔细看。本想看看他怎么计算模板的,但是没有。
我看到Logistello模板值的计算方法了,是迭代的,还不是很明白。再找找其他程序的方法看看。
回复
shines77 2005-02-07
今天是魔兽世界WoW欧洲内测的最后一天,也许我会上去一下,他陪伴我度过了近4个月,再下来偶就没有钱在发行的时候玩它了(内测免费的),纪念一下。国内的至少要5月以后才能上市,同样,不一定有时间和money玩
回复
shines77 2005-02-07
我现在在写bitboard的计算某位置的flip disc list(翻转棋子列表的函数),我想出了一个还可以通过的方法,不知道有没有效率更高的方法,这个函数看起来比bitboard计算计算行动力难度高了许多,开始本想写一个漂亮的函数,结果发现实在没有办法写得漂亮,代码量会比计算行动力的多一倍左右

这个函数完成了,搜索过程中其他的部分就基本上可以全部使用bitboard了,当然,估值的时候最好也是用模板pattern,它太适合bitboard了,那是我写一步要做的。我现在也把我的AI函数写成了DLL和静态的Lib(两种方式),不知道什么时候可以完成。上面的翻转列表函数(使用MMX+汇编)写完了我会公开的
回复
NowCan 2005-02-07
又研究了一下模板估值,镜像和旋转都看成是同一模板。现在主要问题就是模板的值怎么计算了。
Logistello作者公布的那些文档我找了很久,也没发现特别详细的说明。
我现在可以统计棋局,把各个阶段各种模板的取胜比例都统计出来,但是下一步呢?我卡在这里了。
回复
NowCan 2005-01-28
谢谢关注.
其实你说的模板估值方法我大概也知道,一般的程序有11种模板,2*2角,3*3角,2*5角,4种横线,长度超过4的斜线,还有一种是边加两个X格.然后对于任意棋局,都可以拆分为这11种模板或其旋转,镜像.最后进行线性组合.
我主要是不知道这些模板的值怎么计算.以及在生成这些值时如何处理他们的旋转和镜像.

MPC我倒是知道一些,但没开始实用.因为我现在的估值函数太不稳定了.

Booby我领教过他的棋力,确实很强.但你说他终局比WZebra还快,我到没觉得,也许是版本不同,我的是4.21版,Booby是4.0版.但我看不出他终局搜索了多少层,感觉上好像是20-24层,不过可以看出,他刚开始的几次终局搜索是胜负搜索,并没有搜索确切比分,这样能快很多.我试验过我自己的程序,如果胜负搜索22层,一般会在1分钟内出结果,但是要搜索确切比分,10分钟都不一定能有结果.
Booby的开局库是exe文件里的一些资源,又没有相关的菜单,没办法不用开局库.

Booby的网站对我来说没用,全是乱码:)
回复
shines77 2005-01-26
说说我所了解的模板估值方法吧,其实这是一个漫长的统计过程,先确定模板的类型,大概有10几种。然后确定每一个模板的估值,像Nowcan说的,估值的大概就是类似查表的方法。再找一个比较厉害的程序或棋手,进行大量的对局,进而判断胜率或评估棋力。根据模拟火的策略(棋力会忽高忽低的反弹,模拟金属加热和退火的过程,在碰到表现不佳的模板参数时,在一定的概率上继续尝试下去(参数仅做少量的修改)),不断的修改模板的估值,然后重复上一步的大量对局,这样有可能求出一个较优解。Logistello的作者的一个.ps文件里有一些更详细的讲述,只是我当时没怎么看懂。还有,就是不同的棋局的阶段应使用相应的模板的参数。

至于WZebra等搜索较深的程序来讲,一般都用到了MPC(Mutil-Prob Cut,多重概率剪枝),但是这个算法要求有一个比较稳定而且较为准确的高质量评估函数作为基础,因为它在浅层(如8层)的搜索里就要剪掉很多的分支(好像这是对于ProbCut而言的,对于Mutil-ProbCut是对每一层都会剪掉一些分支),所以它的搜索节点是减少了很多的,所以可以搜索较深的层数。

还有就是,其实日本对于的黑白棋的研究也是相当不错的,某些程序也是很牛的,比如Booby REVERSI这个小程序,竟然是Turbo Pascal 7.0写的,程序很小,但棋力也很强,走棋没有WZebra快,但终局的搜索比WZebra快(好像是),唯一的遗憾就是无法去掉其开局的开局库(你会看到某些它存有的开局,它都是不必搜索就下了的,好像不容易检验其真正的棋力,尤其是开局),其中对棋局的分析有其独到之处(可以使用菜单里的Analyze查看),主页好像是:http://www.amy.hi-ho.ne.jp/okuhara/
回复
yeeshengwei 2005-01-21
关注一下!
回复
NowCan 2005-01-19
如何进行对战去我的blog看。
http://blog.csdn.net/nowcan
回复
wvins 2005-01-19
人工智能对战的能提供网址吗?
希望有一天也能成为高手!
回复
wvins 2005-01-19
我有个黑白棋的游戏,同学的同学编的。据说很强,我又不会。有兴趣的找我,自己分析吧。
QQ:36330393
回复
赖勇浩 2004-12-26
我会时时帮顶的.
回复
Fortress 2004-12-24
最近没空考虑这个,不过还是顶一下。
回复
加载更多回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-11-26 01:18
社区公告
暂无公告