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

最新文章
· 学平面设计是一个全面
· 平面设计领域不断发展
· 平面设计是一门创意的
· 平面设计通常是团队合
· 对于数字平面设计而言
· 平面设计软件的使用
· 文字是设计中重要的表
· 色彩在平面设计中起着
当前位置:邳州电脑培训 --学校动态
      
邳州电脑培训让电脑自己学会玩游戏

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

之前本号有一篇文章是关于用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段会出现一个必输的盘面。


 
发表评论】【打印新闻】【关闭窗口  
最新学校动态
  · 学平面设计是一个全面而深入的过程,需要掌握多方面的知识和 [2024/6/6]
  · 平面设计领域不断发展变化,了解行业趋势和掌握最新的设计工 [2024/6/6]
  · 对于数字平面设计而言,了解用户体验和用户界面设计原则至关 [2024/5/17]
  · 文字是设计中重要的表达方式,懂得如何合理排版和选择适当字 [2024/4/11]
  · 色彩在平面设计中起着关键作用,能够传达情感和引起注意 [2024/4/11]
  · 平面设计师是综合性非常强的职业 [2024/3/9]
  · 字体的使用与设计是平面设计师必学的科目之一 [2024/2/21]
  · 任何的设计作品都需要色彩的参与,无论是平面设计还是其他 [2024/2/21]
  · 文字在平面设计和视觉传达中,作为画面的形象要素之一 [2024/1/13]
  · 杂志、报纸、书籍等统称为出版物,出版物设计包括装订、包装 [2023/12/15]
  · 包装设计是平面设计与结构设计的有机结合 [2023/12/15]
  · 要平衡画面两侧的视觉重量感 [2023/11/23]
  · 必须注重画面的统一性,如色彩的统一性 [2023/10/9]
  · 要想让用户的视线集中在某处,可以通过线条来引导 [2023/9/20]
  · 形状可以利用图像的方式来传达创作者想要表达的思想 [2023/8/11]

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

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