openai健身房的tic-tac-toe环境

gym-tictactoe的Python项目详细描述


在openai健身房进行的tic tac toe游戏

tic-tac-toe的3d版本是作为openai的健身房环境实现的。这个^{}文件夹包含几个jupyter笔记本,用于实现基于计算机的播放器的深层神经网络模型。

复杂性

传统的(2d)tic tac toe游戏空间非常小(9^3)。相比之下,本回购协议中的3D版本空间更大,约为81^3。这使得基于计算机的玩家使用搜索和剪枝技术的游戏空间代价高昂。

相反,目前的学习模式是基于政策梯度和深度q-学习。DQN model产生了非常有希望的结果。如果你感兴趣的话,可以自己去体验和贡献。PG-based model需要更多的工作:)

贡献

在游戏开发和学习中,回购协议也对拉取请求和协作开放。

依赖关系

  • 基依赖项:gym
  • 绘图呈现依赖项:numpymatplotlib
  • 学习依赖:tensorflownumpy

安装

要安装,请运行:

# In your virtual environment
pip install gym-tictactoe

用法

目前支持两种不同渲染模式的环境。

文本呈现

要使用文本呈现,请将环境创建为tictactoe-v0,如下所示:

importgymimportgym_tictactoedefplay_game(actions,step_fn=input):env=gym.make('tictactoe-v0')env.reset()# Play actions in action profileforactioninactions:print(env.step(action))env.render()ifstep_fn:step_fn()returnenvactions=['1021','2111','1221','2222','1121']_=play_game(actions,None)

产生的输出是:

Step 1:
- - -    - - -    - - -    
- - x    - - -    - - -    
- - -    - - -    - - -    

Step 2:
- - -    - - -    - - -    
- - x    - o -    - - -    
- - -    - - -    - - -    

Step 3:
- - -    - - -    - - -    
- - x    - o -    - - x    
- - -    - - -    - - -    

Step 4:
- - -    - - -    - - -    
- - x    - o -    - - x    
- - -    - - -    - - o    

Step 5:
- - -    - - -    - - -    
- - X    - o X    - - X    
- - -    - - -    - - o   

游戏结束后的获胜顺序:(0,2,1), (1,2,1), (2,2,1)

绘制渲染

要使用文本呈现,请将环境创建为tictactoe-plt-v0,如下所示:

importgymimportgym_tictactoedefplay_game(actions,step_fn=input):env=gym.make('tictactoe-plt-v0')env.reset()# Play actions in action profileforactioninactions:print(env.step(action))env.render()ifstep_fn:step_fn()returnenvactions=['1021','2111','1221','2222','1121']_=play_game(actions,None)

这将产生以下游戏性:

第一步:

步骤2:

步骤3:

步骤4:

步骤5:

dqn学习

当前模型位于^{}文件夹下。参见Jupyter notebook了解使用两层神经网络和使用actor-critic技术的dqn学习。

由训练模型生成的游戏示例(获胜顺序为(0,0,0), (1,0,0), (2,0,0)):

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Requestcontextholder在spring 4中具有并发访问权限。IBMWebSphere上的x Web应用程序?   java如何下载、设置和使用Eclipse?   java如何组合这些mysql语句   java JDBC无法连接到openshift上的mysql数据库   如果存在允许正确处理的重载,java对于方便的方法来说是否可行?   使用hibernate序列的java Spring MVC不存在   具有路径的java Selenium ChromeDriver负载扩展问题   读一本书。java中的java文件   退出队列时,Java队列程序结果为空   Java lambda返回带有重复代码问题的列表   java使用意图从其他活动传递数据并在listview中显示   java如何在java中创建JSON输出   java Android:在不破坏或暂停活动的情况下关闭显示   支持Android电视和手机的java多apk   关于Java应用程序测试和调试的一组问题   如何在JavaSE中使用jdbcRealmShiro进行授权   在java中是否有一个无异常检查的URL解析实用程序?   当页面上有多个相同类型的元素时,java会选择一个特定的元素   递归需要帮助发现java代码中的缺陷