欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    如何让AI教机器自己玩俄罗斯方块?.doc

    • 资源ID:3429101       资源大小:18.50KB        全文页数:3页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    如何让AI教机器自己玩俄罗斯方块?.doc

    如何让AI教机器自己玩俄罗斯方块?人工智能大火的今天,如果还是自己玩俄罗斯方块未免显得太 LOW,为什么不对游戏升级,让机器自己去玩俄罗斯方块呢?有了这个想法之后,我用了两天时间去搜集了大量资料,在电脑死机好多次之后终于将 AI 俄罗斯方块实现了。程序介绍所谓让机器自己去玩俄罗斯方块,就是让机器计算当前方块的所有形态可放置的所有位置,然后根据统一的评价标准,计算出最优的位置进行放置。这个评价的标准简单的来说就是:板块放置的位置越靠下越好,方块之间越紧密越好,自身对消除行的方块贡献数量越多越好,但是这里还要注意的是不可为了追求消除行数,而去造成过多的空洞,这样也是不合理的。关于 AI 算法主要有两种:一种是经典的 Pierre Dellacherie 算法,一种基于基于深度搜索的算法。深度搜索需要优化的地方很多,假如计算的层数不够、没有高效剪枝,一不小心容易写成人工智障,时间复杂度也不好。Pierre Dellacherie 算法更加清晰,复杂度更低。但是该算法只考虑当前,不对未来的情况进行计算,注重的是“不死性”,追求方块的“密集”,有时就算可以一次性消除 3 行,却会使全局方块更加“疏”,即过多的空洞。代码由 Tetris.py、AI.py 和 Utils.py 三部分组成,游戏的主要逻辑由 Tetis 控制,Utils 定义了方块的样式,AI 顾名思义实现了主要的 AI算法。具体介绍Pierre Dellacherie 算法只考虑当前方块,不对未来的情况进行计算,注重的是“不死性”,算法每次生成一个方块,便穷举该方块所有旋转的落点。一种方块最多有 4 种旋转,并且由于游戏界面是 10*20 的,所以对于每个旋转形状,只需要考虑 10 种落点。算法的核心是一个评估函数,对穷举出的每一种下落情况,计算 6 个参数值,用评估函数加权求和得到一个值,该值最大的情况便是目前方块的最优下落位置,六个参数分别是:1. 下落高度(Landing Height)当前方块落下去之后,方块中点距底部的方格数(事实上,不求中点也是可以的)。2. 消行数(Rows eliminated)消行层数与当前方块贡献出的方格数乘积。3. 行变换(Row Transitions)从左到右(或者反过来)检测一行,当该行中某个方格从有方块到无方块(或无方块到有方块),视为一次变换。游戏池边界算作有方块。行变换从一定程度上反映出一行的平整程度,越平整值越小;该指标为所有行的变换数之和;如图: 表示有方块, 表示空格(游戏池边界未画出) 变换数为 6 变换数为 9 变换数为 2 变换数为 04. 列变换(Column Transitions)大意同上,列变换从一定程度上反映出一列中空洞的集中程度,空洞越集中值越小。5. 空洞数(Number of Holes)6. 井的总和(Well Sums)井指两边皆有方块的空列。该指标为所有井的深度连加到 1 再求总和。注意一列中可能有多个井,如图:中间一列为井,深度连加到一的和为 (2+1)+(3+2+1)=9评估函数如下 (首字母简写):关于方块形态这里对 AI 俄罗斯方块的形态做一下特别说明,各个方块都是根据中心点的坐标来生成的,以(0,0)为中心点,在 x、y 轴加减 1 则是其他方格的坐标,这样的好处就是只要确定中心点坐标,其他的方格位置就能随即生成。看图就懂:1# 每种块包含的四个小方块相对坐标分布 2        self.shapes_relative_coords =  3                                         0, 0, 0, 0, 0, 0, 0, 0, 4                                         0, -1, 0, 0, 0, 1, 0, 2, 5                                         0, -1, 0, 0, 0, 1, 1, 1, 6                                         0, -1, 0, 0, 0, 1, -1, 1, 7                                         0, -1, 0, 0, 0, 1, 1, 0, 8                                         0, 0, 0, -1, 1, 0, 1, -1, 9                                         0, 0, 0, -1, -1, 0, 1, -1,10                                         0, 0, 0, -1, 1, 0, -1, -111                                      基于深度搜索的方法暂不介绍。收获成果以上,感兴趣的同学可通过网盘获取源代码:https:/pan.baidu/s/1gC6sF62Pz5D6rh6eicOZUw,提取码: k17b。

    注意事项

    本文(如何让AI教机器自己玩俄罗斯方块?.doc)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开