【国象AI】评估函数(一)

先做个框=感觉有些是应该由搜索树去考虑的、也没做过这些所以有点困扰
思路有点乱一边整一边写……
在很努力把每种情况分开来但感觉还是蛮难的- -而且某只鸟不下棋也很久了(咳咳)本来也下不好……

一边写一边听歌“棋局与人生,哪个更多劫?”迷之沧桑感。sigh

以下我执白。白先。

重要棋子

定义一些需要深搜的\或者说作为一个人类(捂脸)会需要额外关注的、
或许在搜索的时候不一定用得上

  • 敌方移动之后直接会攻击到的子、需要想办法保护或者移动
  • 下一步会造成将军的子、这种棋子很可能将要发起进攻或者存在某些潜在威胁,比如牵制、闪将

子力

一些可能没有直接体现出来但是在长期看起来会有蛮多加分的棋

基础价值

后900,车500,象325,马300,兵100

具体价值

这个部分是对,己方每种棋子进行分析。暂时不考虑对方以及自己的其他棋子情况。

然后感觉还是,兵马的具体情况影响比较大,象在中间。
然后我在想要怎么把具体的情况区分开来……比如马在靠近中间的话会带来基本会带来(具体价值&机动性&子力交换)一系列提升、在思考要怎么处理。

在这个过程中顺便更新一下占据的棋盘啥的(比如我可能会用一个int【64】来记录一下每个棋盘能被我直接攻击到的棋子的子力的最小值,如果下面需要的话还可以接着补充嘛= =)

兵Pawn

兵形
- 叠兵
我对叠兵的态度近于弃疗……太烦了走起来像毛毛虫一点都不优雅……
- 孤兵
如果不是通路兵的话一只孤零零的也很危险、当然如果是通路兵的话有那个价值特意找棋子来保护

然后这两种应该要独立在,是否被兵保护之外。
就没被保护的兵,可能是一排兵的最后一个可能是孤兵……但孤兵和叠兵应该要有额外的扣分因为,一串兵的最后一只不容易在斜线上和马线上威胁。

距离底线的距离、
因为越近越容易升变,这个最后的价值= 我觉得我会考虑用对方子力最低的为一个基础根据距离调整(因为对方要是没有马象了就只能用车换了- -思路简单)//这个不知道算不算发展价值了……装作不算吧

马Knight

马的攻击力受位子影响会非常大,马的棋子位置从2-8相差是最大的
这个和机动性不一样的在于马提供保护攻击也在考虑范围之内。

象Bishop

象的话差距也会有一倍那么多……不过象和马的不一样是(马的进攻不会被挡住),象的憋屈基本上都是……被别人家的兵挡了、被自己家的兵挡了……所以在这里相对受到位置影响会小一点。
然后这里双象我觉得可以给加分、单象的价值随着进入残局会减的很明显(有可能剩了一直白象然后对方所有子都在黑格了=)

王King

王的易位保留破坏扣分
王前的兵形(就那种开了个天窗的)

综合价值

这里考虑相互影响的情况
这里主要是,受到对方棋子的影响 = =

兵Pawn

兵 - 兵
通路兵给加分

马Knight

兵 - 马
马的一个优势位置就是(周围的两个兵都走远了),就是说兵没法直接驱赶马的情况下,马会处于一个相对安全的位置。然后要是这个马还在比较中间的话,威力就会比较大。
对于中局比较适用、(然而中局残局的分界有点难办)

象Bishop

兵 - 象
自己的兵感觉起来,同色的可以给保护 - 不同色的不会挡路,自己的棋子的影响要比对方的小很多就不打算考虑了- -而且考虑到基本上因为【对兵】两边的兵色会是反的所以也就只考虑对方的兵的情况了。
还没想好具体咋做、就对方与自己同色的兵越多这颗象价值越低。
然后要是有,自己的兵挡住的情况,应该会在后面的机动性中体现。

车Rook

车的话,占据通路适当加分吧,因为不单单是自己的移动区域大还有限制别人的移动区域。
车的优势在残局才能体现的完全。在开局车出不来中局杀伤力不算大。

后Queen

后的话机动性一定要考虑0 0 以前玩的一个游戏我经常可以抓住它的后。

王King

王前的正常兵形我在想要怎么表示……
觉得王的评价没法和整个局势独立开来。换句话说王到了后期成为我进攻的子力,但这个后期要怎么界定

空间

这里先简单的列为,单边占据的格子数(占有或者直接能攻击到)之差。
不知道会不会出现为了占据更大的空间而放弃进攻

空间感觉应该算为数不多的整体评价指标了。但确实也有潜在的风险要考虑,比如说两个车相互保护的话牺牲的空间应该说是蛮多的但因为(人类)比较容易顾此失彼= =

然后这个在想一些别的 - - 比如可不可以通过、王附近的位置给分评价高来定义王的安全性。

机动性

这个听说原则性影响不超过150分(原来兵那么重要啊)
将军的时候对机动性的评价

这应该也是归于,单独的每个棋子的分值。
这一点我可能不想单纯的从着法数来定、至少我感觉兵的着法数没有统计的必要,大概可以用(兵的基础分+叠兵的扣分)来表示了

然后我想的是,按照每个棋子的着法数来判断,感觉对于一步棋子的落点是自己的棋子还是对方的棋子应该要给不一样的判断。

然后还有一点就是长射程的棋子再考虑不同棋子的阻隔作用对于某一颗棋子的影响。比如说比较稳定的兵不太会移动这样,从长远来看被这样的兵挡住的棋子不太可能有未来(。。)

发展评价

接近于预测向的、最近这几步就会发生的事情,我觉得这个要是搜索做得好的话可以不用?(tan90’)

子力交换

这里的判断肯定得和,接下来是谁走有关系吧= =
像后这种棋子尴尬的地方就是基本一被抓就只能跑- 自己子力太高了

这一项还有就是,到底用哪个层次的价值=

加分项

黑方无保护并且被白方攻击的子的子力

黑方有保护但其子力比攻击子力高,减去子力的差(就是交换)
在这种情况下还应该考虑一下,交换之后的局面评估,以及当前评价(占优方更可能在局面评分差改动不大的情况下进行子力交换)

这里还有一个胜负判断,如果黑的King在被攻击的位置上就可以返回+INF了。

减分项

我觉得这里不能完全和上面相反……哪一方移动,应该是纳入评价范围内的。
然后所以减分应该是:

上面两个的相反情况 -
比如捉双的时候,基本上会选择躲子力大的那个,所以说减去价值小的那个。
(这种我想想也应该不会超过仨?)
但是这个还要判断下去就有点麻烦……因为还要考虑,比如反正逃不掉了可以再随便吃颗子这样……

进攻信号

这个可能会作为一个单独的评判指标,当它大于一定值的时候给这一枝一个附加的信号、至少告诉他们应该往这个方向搜索。
(又要瞎定指标了)、比方说王在两步之内能够达到的距离能够通过调度棋子覆盖的话可以给一些加分(具体再议再议、)

藐视因子

http://www.xqbase.com/computer/other_contempt.htm
这个之后再加……
我觉得更应该加在延拓的时候吧

你可能感兴趣的:(国象AI)