人机博弈之(五)---估值基础

原创 2007年09月29日 21:10:00

估值是一个通过既有的棋类知识来评估一个局面的优劣的过程。这一过程对具体的棋类知识的
依赖程度很深,但是仍有一般性的规律可循。


1. 棋子的价值评估,简单的说就是评估双方都有哪些棋子在棋盘上。根据我们的经验,可以让
一个车的价值为500,一个马的价值为300,一个兵的价值为100等等。将的价值为无限大。一方
的棋子总值就是棋盘上存活的该方棋子乘以棋子的价值的和。用一个式子表示:
 
 sideValue = sum(Number*pValude)
其中Number是某种棋子的数量,pValue是该中棋子的价值,sum是对各种棋子的总价值求和。
如果红色棋子的价值总和大于黑色的棋子价值总和,通常意味着红方的局势优于黑方。而红黑
双方的sideValue之差越大,红方的优势就越大。


2 棋子的灵活性与棋盘控制
棋子的灵活性是指棋子的活动范围,通常越大越好。一匹不能动的马很难在棋局中发挥重要的
作用;同样,一个蹲在角落里的车也是价值不高。
评估棋子的灵活性较为简单,将一个棋子的所有合法的走法罗列出来,称上该种棋子每一可移
动的价值就行了。可用下面的公式:
  mobility = sum(moveNumber * moveValue)
其中,moveNumber是某种棋子的合法走法数量,moveValue是该种棋子每一走法的价值,sum是对
所有棋子灵活性价值求和。mobility就是所有棋子的灵活性分数。
    与灵活性评估类似,还可以评估博弈双方对棋盘上位置的控制能力。在象棋中,如果一位
置落在某方棋子的合法走不上,就可以认为被该方控制。如果某一位置同时落在双方的合法的
步上,我们可以根据双方控制该位置的棋子数量及棋子价值来决定孰优孰劣。能控制更多位置
的一方应该在这项得分上更多。


3. 棋子之间的关系也是估值重要的内容之一,我们可以将某个棋子被对方棋子威胁看成是一个
步利因素。类如红车的位置在黑马的合法走法当中,此时我们可以把红车的价值减去一个值如
200来刻画这种情形。而如果红马在黑车的合法走步之中,而红马同时也在红卒的合法走步之中,
我们可以认为红马置于红卒的保护之下,没有受到威胁,价值不变。
 棋子关系的评估应考虑到该谁走棋的问题。如果某个红马落在黑炮的合法走步之内,但
此时轮到红方走棋,应该认为红马受到的威胁较轻。而如果此时轮到黑方走棋,就应该认为受到
的危险很大,应减去一个相对较大的值了。如果将被威胁,且轮到对方走棋,那么无论有何种可
以走到将位都没有意义,将等于失去了。此时应该结束估值返回失败的估值。棋子间关系的评估
可以在很大程度上提高估值的精度,通常是博弈估值的必备内容。 

人机博弈之(六)------代码实现(4)估值

package eveluation;import constdata.ConstData;import java.awt.Point;public class Eveluation...{    /...
  • dremi
  • dremi
  • 2007年09月24日 22:49
  • 1220

ACM博弈学习小结

1.ACM博弈题,不会的时候觉得难于上青天,会的时候觉得没有比博弈更水的题了; 博弈题看到的第一眼觉得是难题,代码敲完顿觉水题。你可能花半个小时去找规律,然后仅花2分钟敲代码。 2.博弈是单人游戏,也...
  • tomorrowtodie
  • tomorrowtodie
  • 2016年08月10日 00:54
  • 1274

人机博弈之(一)------博弈介绍

       爱好编程的大部分还是喜欢自己编写一个游戏,但较少是编写和电脑对战的游戏,因为里面毕竟涉及博弈,搜索等技术,我想来通编写一个人机博弈的中国象棋游戏,希望从中收获些东西。参考书是王小春编著的...
  • dremi
  • dremi
  • 2007年09月23日 15:36
  • 2826

中国象棋人机对弈搜索算法学习-极大极小值,负极大值,alpha-beta算法

先参考学习如下博文: http://blog.csdn.net/kingkong1024/article/details/7639401 http://hk.gamfe.com/news/2015...
  • qq_26437925
  • qq_26437925
  • 2016年04月07日 18:48
  • 2381

中国象棋的人机博弈程序

对此题目有兴趣的朋友们:    感谢你们抽出宝贵的时间来阅读这些浅显的文字。    很多人可能都知道chess的人机大战:     1996年,卡斯帕罗夫以4比2战胜“深蓝”(Deep Blue); ...
  • shaozz
  • shaozz
  • 2009年03月10日 09:53
  • 1118

Android 面试题总结之Android 基础(六)

Android 面试题总结之Android 基础(六) 在上一章节Android 面试题总结之Android 基础ListView(五) 主要是ListView的优化,原理以及一些基本问题。 ...
  • vfush
  • vfush
  • 2016年05月30日 15:29
  • 7825

博弈算法实现简单五子棋

博弈算法实现的简单五子棋,使用极大极小搜索,alpha-beta剪枝,java图形界面。...
  • FANGPINLEI
  • FANGPINLEI
  • 2015年12月21日 16:46
  • 3146

五子棋人机对弈代码——之博弈树算法

#include #include #include #include /* Program of Game -- wuziqi Written by Zhang shuai, DEC.25t...
  • handsomesunshineboy
  • handsomesunshineboy
  • 2011年02月09日 07:03
  • 13186

Android 面试题总结之Android 基础(五)

Android 面试题总结之Android 基础(ListView)(五) 前几篇面试总结中,主要讲了Android 的四大组件的相关知识点,希望在大家日常工作中有所帮助,那么在本节中主要是And...
  • vfush
  • vfush
  • 2016年05月24日 13:28
  • 4287

java五子棋人机对战算法分析

五子棋人机对战采用的算法,目前大都是搜索树算法,用一棵树来表示棋局发展的 种种可能性,这种树叫做博弈树(对局树)。根节点表示对局的开始状态,每一种可 能的走法造成的结果作为其子节点,而对每一个这样的子...
  • zzzypp
  • zzzypp
  • 2015年01月13日 15:59
  • 3973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:人机博弈之(五)---估值基础
举报原因:
原因补充:

(最多只允许输入30个字)