上文已经描述了怎么创建和注册一个自定义的gym环境。但是环境类中的4个函数都是空的,本文将描述怎么实现那4个函数,实现一个完整的井字棋游戏的环境。

游戏规则:两个玩家在3x3的棋盘上,一方执X,一方执O。哪方先下的连续3个子(不管在对角,竖直还是水平方向)为胜。(类似五子棋)。赢得一方将会获得+100的奖励。

完整的环境代码访问GitHub。

其中,step函数已经指定了双方下棋的规则,也就是说这个程序不是依靠某个强化学习算法来下棋,而是靠固定规则。因为本系列文章的目的就是要说明如何自定义环境,而不是应用强化学习算法。

def step(self,target):

if self.done==1:

print('game over')

return [self.state,self.reward,self.done,self.add]

elif self.state[int(target/3)][target%3] != '-':

print('invalid step')

return [self.state,self.reward,self.done,self.add]

else:

if(self.counter%2==0):

self.state[int(target/3)][target%3]='o'

else:

self.state[int(target/3)][target%3]='x'

self.counter+=1

if(self.counter==9):

self.done=1

self.render()

win=self.check()

if(win):

self.done=1

print('Player ', win, 'wins. ', sep='',end='\n')

self.add[win-1]=1

if win==1:

self.reward=100

else:

self.reward=-100

return [self.state,self.reward,self.done,self.add]

环境的代码已经写好了,下面我们安装并且注册环境。

pip install -e .

我们编写下面的代码来测试环境。

import gym

import gym_tictac

env = gym.make('tictac-v0')

for e in range(3):

env.reset()

print("######")

print("EPISODE: ", e)

print("######")

for t in range(9):

env.render()

action = t

state, reward, done, info = env.step(action)

print("reward: ", reward)

print("")

env.close()

如果输出是这样

######

EPISODE: 0

######

- - -

- - -

- - -

o - -

- - -

- - -

reward: 0

o - -

- - -

- - -

o x -

- - -

- - -

reward: 0

o x -

- - -

- - -

o x o

- - -

- - -

reward: 0

o x o

- - -

- - -

o x o

x - -

- - -

reward: 0

o x o

x - -

- - -

o x o

x o -

- - -

reward: 0

o x o

x o -

- - -

o x o

x o x

- - -

reward: 0

o x o

x o x

- - -

o x o

x o x

o - -

Player 1wins.

reward: 100

意味着环境已经正确编写并配置。

这个环境已经足够简单了,action是固定规则,我们只是为了阐述自定义gym环境的配置。

下文会讲述gym环境如何结合PyBullet。

参考

https://www.datamachinist.com/applied-reinforcement-learning/part-8-virtual-environments-for-reinforcement-learning/part-2-implementing-a-simple-gym-environment-tic-tac-toe/

python井字棋游戏大作业实验报告_Part 1.2 - 实现一个井字棋游戏的gym环境相关推荐

  1. 网页编程课程大作业实验报告HTML5 、CSS5 、JavaScript

    网页编程课程大作业实验报告 课程名称 网页编程 实验成绩 计算机学院制 一.实验内容与要求 利用HTML5 .CSS5 .JavaScript等知识,按照特定的主题制作一个完整的网站. 二.网站名称以 ...

  2. 深圳大学计算机图形学实验4.1,深圳大学计算机图形学大作业实验报告.doc

    深圳大学计算机图形学大作业实验报告 深 圳 大 学 实 验 报 告 实验课程名称: 计算机图形学 实验项目名称: 计算机期末综合大作业 学院: 计算机与软件 专业: 计算机科学与技术 报告人: 班级: ...

  3. python数据分析大作业-python大作业实验报告

    大学计算机基础 (理工)大作业 --暨南大学南校区生活指南系统 G108 甘颖欣 熊梦娜 翁婉晖 梁绮婷 李嘉顺 2015-1-3 目录 目录 ............................ ...

  4. 数字图像处理大作业实验报告

        <数字图像处理> 期末大作业 班    级:数字媒体技术2020级1班 姓    名:快乐的小蓝 学    号:XXXXXXXXX XXXX大学信息学院 目录 一.任务描述 二.设 ...

  5. 南邮java大作业实验报告_南京邮电大学java第三次实验报告

    实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...

  6. 数据库大作业实验报告

    一.实验目的 通过这个实验回顾数据库这门课程的基本内容,深化自己的理解,掌握高级语言对数据库操作的方法. 二.总体功能设计与ER图 这次的实验是使用Java+ SQL server 完成的. 2.1 ...

  7. 万年历c语言大作业实验,用C语言写的一个万年历

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. #include #include int input(); void re_year(i ...

  8. 计算机逻辑部件按其结构可分为,《数字逻辑电路》期末大作业实验报告

    大连外国语大学软件学院 1数字逻辑电路概述 数字逻辑是数字电路逻辑设计的简称,其内容是应用数字电路进行数字系统逻辑设计.电子数字计算机是由具有各种逻辑功能的逻辑部件组成的,这些逻辑部件按其结构可分为组 ...

  9. 系统分析与设计大作业实验报告

    个人报告 16340035 陈伟昭 ## 个人负责工作 UI及页面逻辑设计 界面文件 组织会议,编写会议纪要 组织会议,分发任务 Android客户端开发 主要负责的部分有(UI+逻辑):密码登录.短 ...

最新文章

  1. python端午dragboat消消乐 美轮美奂的界面效果
  2. vue2路由移除#号(Apache)
  3. AI公开课:19.04.04李航—字节跳动AILab总监《深度学习与自然语言处理:评析与展望》课堂笔记以及个人感悟
  4. 让select查询结果随机排序
  5. 想和你一起为 Visual Studio 庆祝20岁生日
  6. php 生成器作用,php 生成器的理解和使用
  7. mysql基础事件_mysql 基础 事件(定时任务)
  8. Vue的基本环境搭建
  9. EIP-1559性能测试:22小时共处理6426个区块,平均每个区块4100万Gas
  10. centos7 安装VNC Server
  11. C#中virtual与abstract的区别
  12. window.onerror=hide_error_message;
  13. 免费DDOS攻击测试工具大合集
  14. 如何把pdf文件转换为excel表格
  15. 今天,霍金没有提AI威胁论,他的新目标是带领人类移民外星球(附霍金姚期智Pete演讲实录+PPT)
  16. 建立数据挖掘的用户画像
  17. Win10共享文件时提示需要输入网络凭据怎么办?
  18. 天狮集团新零售有什么优势?天狮直销等于天狮新零售?
  19. 2021最全的课程资源库
  20. 安卓手机刷twrp和magisk

热门文章

  1. Linux中的多路IO转接,转载
  2. 左方之地 - 结论 - 组合计数
  3. trello01:后端的搭建
  4. n的阶乘(递归与非递归)
  5. 数据分析之信用风险评分卡建立
  6. typecho小程序双鱼2.5版本更新说明
  7. 写给夏燕第十一个男人
  8. 在线文字生成音频工具
  9. 韩松手机摄影笔记第八课--手机人物摄影
  10. 云原生究竟怎么落地?