博弈大赛赛前培训_六棋子程序的实现专用课件.ppt

博弈大赛赛前培训_六棋子程序的实现专用课件.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
博弈大赛赛前培训_六棋子程序的实现专用课件

六子棋的棋型 眠二:在同一直线上的2颗同色棋子,符合“再下两手 棋只能形成眠四”的条件。 / 计算机博弈与人工智能 搜索函数 下一个最好的(评估分值最高)局面的对应的招法就是 最佳招法吗? 棋类高手都能看很多步! 当我方生成各种局面后,对方针对我方形成的每一种局 面又同样会生成许多局面,我方再针对对方形成的每一 种局面同样又会生成许多对应局面,这样循环往复,就 形成了一个颗博弈树。 / 计算机博弈与人工智能 博弈树 / 计算机博弈与人工智能 博弈树一棵多叉树。 六子棋博弈树的复杂度很高。 每个局面对应招法 开始: 360*359=129240 结束(设50步之后):310*309=95790 设平均取105 个节点。 1层: 105 2层: 105 * 105 = 1010 3层: 1010 * 1010 = 1020 …… 节点数随深度的增加以爆炸式方式增长 博弈树 提高时间效率 一般一步能控制在半分钟内为宜。 方法: 减小博弈树的规模: 1.降低搜索深度,但棋力提高有限。 2.每个局面对应只生成少许有价值的节点, 可能有漏选。 运用高效的搜索算法,例如:α-β剪枝。 提高各模块的效率,尤其是评估函数的效率。 / 计算机博弈与人工智能 极大极小值搜索 建立了博弈树,我们怎样找到我们需要的招法? 搜索与回溯方式: 因为: 局面分值越高,对我方越有利,对于对方越不利。 局面分值越低,对我方越不利,也就是对于对方越有利。 所以: 轮到我方走时,我方会选择使下一步局面分值最高的走 法。此节点(局面)分值 = MAX{所有子节点分值} 轮到对方走时,对方会选择使下一步局面分值最低的走 法。此节点(局面)分值 = MIN{所以子节点分值} / 计算机博弈与人工智能 计算机博弈与人工智能 极大极小值搜索 局面(取极大值) 局面(取极小值) Root Root Moves Leaves Ply = 0 Ply = 1 Ply = 2 Ply = 3 Depth = 3 Depth = 2 Depth = 1 Depth = 0 图例: 深度 层数 8 15 12 70 16 7 10 20 3 48 15 20 7 70 48 7 48 48 / 思路总结 / 计算机博弈与人工智能 棋盘信息 搜索函数 招法生成 查找棋型 评估函数 最佳招法 计算机博弈大赛 1.自己个人能力的提高 2.团队合作能力的提高 3.初步了解软件工程与软件项目 4.计算机博弈领域充满机遇与挑战 5.我有可以吗? 知识是靠自己学的。 能力是从实践中锻炼出来的。 / 计算机博弈与人工智能 / 计算机博弈与人工智能协会 * 计算机博弈与人工智能 LOGO 六子棋博弈程序 唐志峰 计算机博弈与人工智能协会 / 计算机博弈与人工智能 / 计算机博弈与人工智能 本次大赛通信协议 博弈程序整体设计思路 博弈程序核心模块 机器博弈交互平台 本次大赛的一些相关说明 讲解要点 / 计算机博弈与人工智能 机器博弈交互平台 裁判系统 棋盘 黑方程序 白方程序 1 1 1 2 3 3 4 5 5 6 / 计算机博弈与人工智能 本次大赛通信协议 接受裁判系统信息:scanf(%s,Msg); 传回裁判系统信息:printf(%s,Move); 1.确定队名:name?“ 传回队名: name BitStronger\n“ 2.开局:new 3.确定黑白方: 黑方:black 白方:white 4.发送、接收招法 //先横向坐标,后纵向坐标 黑方第一步:move X0Y0 其他步数:move X0Y0X1Y1 / 计算机博弈与人工智能 博弈程序整体设计思路 实际问题 数学建模 算法 编程、调试 得到结果 / 计算机博弈与人工智能 棋盘表示 六子棋棋盘由19条横线和19条纵线组成。 棋盘一共有19*19=361个交点。 交点出现的可能情况:无子、黑子、白子 棋盘:char position[19][19]; 棋子: 黑棋(BLACK):0 白棋(WHITE):1 无子(NOSTONE):0xff 示例代码 宏定义: #define GRID_NUM 19 //棋盘行数 #define GRID_COUNT 361 //可放棋子总数 #define BLACK 0 //黑棋 #define WHITE 1 //白棋 #define NOSTONE 0xff //无棋 全局变量: BYTE positio

文档评论(0)

dart002 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档