项目作者: star2dust

项目描述 :
DQN to play paddle-ball game.
高级语言: Python
项目地址: git://github.com/star2dust/paddle-ball.git
创建时间: 2020-06-30T02:09:10Z
项目社区:https://github.com/star2dust/paddle-ball

开源协议:MIT License

下载


DQN to Play Paddle-Ball Game

终极复现项目说明

本项目基于使用PARL框架实现算法解决一星环境任务Orbit中的Paddle-Ball游戏。

安装依赖项(requirements)

  1. # or try: pip install -r requirements.txt
  2. pip install paddlepaddle==1.6.3
  3. pip install parl==1.3.1

训练策略(strategy)

本项目训练策略分三步进行。

  1. # 策略1 大学习率大数据量大探索率
  2. BATCH_SIZE = 32*5 # 每次给agent learn的数据数量,从replay memory随机里sample一批数据出来
  3. LEARNING_RATE = 0.001*5 # 学习率
  4. EPSILON = 1 # 探索率
  5. EPSILON_DEC = .995
  6. # 策略2 小学习率大衰减因子
  7. BATCH_SIZE = 32 # 每次给agent learn的数据数量,从replay memory随机里sample一批数据出来
  8. LEARNING_RATE = 0.001 # 学习率
  9. GAMMA = 0.99 # reward 的衰减因子,一般取 0.9 到 0.999 不等
  10. # 策略3 小探索率大衰减因子(改了下发球逻辑,现在发球方向随机)
  11. GAMMA = 0.999 # reward 的衰减因子,一般取 0.9 到 0.999 不等
  12. EPSILON = 0.5 # 探索率
  13. EPSILON_DEC = .995

训练效果(result)

效果说明:

  • 第一步需要大探索率,不然根本碰不到球,所以尽可能随机性大一点
  • 训练一段时间后,白板总是蜷缩在右下角(如图1),发现原环境的发球逻辑有问题,每次必然向右发,于是改了下逻辑,现在发球方向随机
  • 为了把原先训练的结果拉回去,把衰减因子调到接近1,考虑动的收益,同时探索率稍微减少,保证能探索到左边(如图2)

图1,15次reward均值0.33:

test1

图2,15次reward均值7.06:

test2

代码运行如下:

  1. # train
  2. python .\train.py
  3. # test
  4. python .\test.py