今天是: 2024年3月29日 星期五 返回首页 | 电脑培训学校简介 | 学校新闻 | 我要报名 | 就业体系 | 专业设计 | 联系我们
 
 
本站导航
· 校园文化 · 学校动态
· 学校公告 · 婚纱设计
· 平面设计 · 室内装潢
· 办公文秘 · 办公自动化
· 职称计算机
联系方式
邳州市天翼电脑培训学校
联系人:胡老师
手机:13092300677
Q Q:439524682
邮箱:439524682@qq.com
网址:http://www.pzdnpx.com
地址:邳州市镇北一路铁路立交桥向东10米天翼电脑培训学校

最新文章
· 精简和简洁的设计
· 平面设计专业毕业以后
· 平面设计专业毕业以后
· 平面设计专业怎么样?
· 美术设计及版面编排两
· 平面设计师是用设计语
· 平面设计的定义泛指具
· 平面设计也称为视觉传
当前位置:邳州电脑培训 --学校动态
      
邳州电脑培训让电脑自己学会玩游戏

发布时间:2019-6-3  新闻类别:学校动态 点击次数:601

之前本号有一篇文章是关于用Python编写一个"拿石子"游戏,一个能让你与电脑对弈的小游戏,但其中电脑玩家的选择是随机的,意味着你是与一个智障电脑在玩游戏。


我们更进一步,编写程序让这个智障电脑可以自己与自己不断玩这个"拿石子"游戏,最终学会如何赢得这个游戏。不仅如此,我们还可以通过这个训练后的电脑玩家得知这个游戏的必胜秘诀(文末处)。下面看看示意动图。



电脑自训练



与电脑对战


高能预警,本文与之前的文章不一样,需要自己实现一个强化学习中的一个小算法,但这个算法不难,而且可以广泛应用到其他同类型的博弈问题中,可以让你做出有趣的东西出来。我们开始吧。


[项目代码地址](https://github.com/CrystalWindSnake/Creative/tree/master/python/rl_learning_stone)


"拿石子"游戏规则

拿石子游戏规则很简单,开始有一定数量的石子(假如是10),然后两人轮流从石子堆中取走一定范围的数量(例如是1到3),以此类推,拿走剩余的所有石子的人输了。


本文需要的库

numpy

pandas

retrying

如果你已经看过我关于如何安装Anaconda的文章,那么这些库基本都不用操心了。


程序结构

由于本次程序较为复杂,并且日后我会继续使用不同的方式去改善他。因此不会使用上次文章中的代码结构,而是采用类的方式组织代码。 整个游戏有3个角色:



上述所有实现都在models.py中,有兴趣的朋友请去github查看即可。


关键点说明

到底机器学习的程序与普通的应用开发程序有什么不一样?正如本文的实现,程序的逻辑走向不是通过我们写代码的方式编写的,而是通过数据来决定。


下面来简单说明整个过程的关键点



整体上来说,电脑玩家每次选择拿取多少个石子,是通过一个表的数据判断出来。

图中的行索引(左边绿色框中的),表示当前盘面的石子数量。

列索引(上方红色框中),表示可以选择的数量

那么行列索引交叉点的数据,表示这次选择的价值,这个值越大,电脑玩家会越可能选择。

所以你可以看到,当你与电脑玩家对战时,其实他早想好每一步要怎么走了。

问题是,这个表格中的价值数据是怎么得来的?没错,是让他与自己不断的对战从而获得经验而来。 我们来分析一下这个对战过程



一开始的时候,整个表格的值全是0

假设当前剩余数量是10,那么他会看行索引10对应的那一行的数据。

他发现那一行全是0,那么他会随机来挑。对的,此时他是在碰运气。

当他选好本次拿取数后,会根据下一轮可能出现的状态来计算价值,然后更新到本次选择中。

上图包含了3种可能的选择中的每个情况

当然,次训练时,比较靠后的记录都不会有任何更新。直到遇到奖励或惩罚。下图表明了这样的情况



假如当前剩余数量是4,电脑玩家选择,他选了取走3个。

这是裁判反馈给他说,你赢了,因此在(行4,列3)那里的价值加了10分。这是电脑玩家可以自己学会玩游戏的关键。

如果裁判反馈给他说,你输了,那么以一样的机制扣减价值分。

再来看看之后他是怎么得到下面行的分数。假设现在已经训练了几个回合,表格上方的行陆陆续续有些得分



假设当前剩余数量为6,电脑玩家随机选了1,那么可以确定下一个可能的状态区域

发现3行数据没有一行全是0或全是负数,因此(行6,列1)那里的价值分加3行区域中的值*学习率(是一个百分比)

以此类推,电脑玩家不断与自己玩游戏,不断更新表格中的分数。

注意一点,整个项目我们都没有编写任何的游戏逻辑代码。只有关于奖励与惩罚相关的逻辑。

游戏必胜秘诀


上图把电脑玩家学习到的表格数据显示出来

看到那些整行都是负数的吗,那些是必定会输的状态。

这也是为什么我设定于电脑对战时默认是21开始并且是电脑先拿,这样我才有机会赢。

我们还看到从2开始,每个3段会出现一个必输的盘面。


 
发表评论】【打印新闻】【关闭窗口  
最新学校动态
  · 精简和简洁的设计 [2023/5/17]
  · 平面设计专业毕业以后可以做创意指 [2023/5/17]
  · 美术设计及版面编排两者的工作内容差不多 [2023/4/12]
  · 平面设计师是用设计语言将产品或被设计媒体的特点和潜在价值 [2023/4/12]
  · 平面设计属于广告设计类 [2023/3/9]
  · 学习平面设计需要有一定的耐心和毅力 [2023/3/9]
  · 平面设计需要一定的审美素质 [2023/2/22]
  · 排版是平面设计中的一个重要环节 [2023/2/22]
  · 设计原则是平面设计的基础 [2023/1/10]
  · 在掌握了专业知识之后需要不断学习 [2023/1/10]
  · 学习平面设计的初期,需要了解一些基本的设计概念和工具 [2022/12/23]
  · 面设计是一门充满创意、实践性很强的艺术学科 [2022/12/23]
  · 在平面设计中色彩是表现形式的重点 [2022/11/20]
  · 正文即传播内容一般采用说明文的形式 [2022/11/20]
  · 文字是平面设计中不可或缺的核心元素 [2022/10/16]

 
 
电脑培训学校新闻中心 | 友情链接 | 网站地图 | 邳州电脑培训学校加入收藏 |邳州电脑培训学校设为首页
邳州电脑培训关键字: 邳州电脑培训 - 邳州电脑学校 - 邳州市天翼电脑培训学校 - 邳州电脑培训
Copyright © 2011-2012 邳州市天翼电脑培训学校 All Rights Reserved.

你是第1108693位访客   建议使用1024×768以上分辨率,IE6.0以上浏览器    技术支持:
邳州慧网 银杏苗木 银杏树