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如何从数组中打印int值?   prepared语句Java中奇怪的异常PreparedStatement:参数索引超出范围   封装如何在OOP Java中为主方法编码?   java某些手机显示快捷方式徽章需要什么权限?   java TextView不会随OnItemSelectedListener更改   java注释处理器不会自动触发吗?   java Spring JPA如何计算外键数   c#对于这个简单的OOAD问题,哪种设计最优雅?   java如何处理while循环中的异常?   Android Studio错误:进程'command'/home/draven/Downloads/安卓studio/jre/bin/java''结束,退出值为非零2   在使用Payara服务器的Vaadin应用程序中导航到根目录时,java将丢失上下文根目录   使用contentType application/json而不是application/jsonpatch+json的java修补程序   带有tomcat的java HAproxy连接不足   Java:在应用过滤器后创建一个简单的通用方法进行计数   java如何使用多态性创建一个实例化对象的方法,然后用它们高效地填充ArrayList?