update projects

This commit is contained in:
johnjim0816
2022-07-31 23:42:12 +08:00
parent e9b3e92141
commit ffab9e3028
236 changed files with 370 additions and 133 deletions

View File

@@ -0,0 +1,50 @@
# OpenAi Gym 环境说明
## 基础控制
### [CartPole v0](https://github.com/openai/gym/wiki/CartPole-v0)
<img src="assets/image-20200820174307301.png" alt="image-20200820174307301" style="zoom:50%;" />
通过向左或向右推车能够实现平衡所以动作空间由两个动作组成。每进行一个step就会给一个reward如果无法保持平衡那么done等于true本次episode失败。理想状态下每个episode至少能进行200个step也就是说每个episode的reward总和至少为200step数目至少为200
### CartPole-v1
```CartPole v1```环境其实跟```CartPole v0```是一模一样的区别在于每回合最大步数max_episode_steps以及奖励阈值reward_threshold如下是相关源码
![](assets/gym_info_20211130180023.png)
这里先解释一下奖励阈值reward_threshold即Gym设置的一个合格标准比如对于```CartPole v0```如果算法能够将奖励收敛到195以上说明该算法合格。但实际上```CartPole v0```的每回合最大步数max_episode_steps是200每步的奖励最大是1也就是每回合最大奖励是200比Gym设置的奖励阈值高。笔者猜测这是Gym可能是给算法学习者们设置的一个参考线而实际中在写算法时并不会用到这个算法阈值所以可以忽略。
再看每回合最大步数,可以看到```CartPole v1```的步数更长,相应的奖励要求更高,可以理解为```v1```是```v0```的难度升级版。
### [Pendulum-v0](https://github.com/openai/gym/wiki/Pendulum-v0)
gym 0.18.0之后版本中Pendulum-v0已经改为Pendulum-v1
<img src="assets/image-20200820174814084.png" alt="image-20200820174814084" style="zoom:50%;" />
钟摆以随机位置开始,目标是将其摆动,使其保持向上直立。动作空间是连续的,值的区间为[-2,2]。每个step给的reward最低为-16.27最高为0。目前最好的成绩是100个episode的reward之和为-123.11 ± 6.86。
###
悬崖寻路问题CliffWalking是指在一个4 x 12的网格中智能体以网格的左下角位置为起点以网格的下角位置为终点目标是移动智能体到达终点位置智能体每次可以在上、下、左、右这4个方向中移动一步每移动一步会得到-1单位的奖励。
<img src="./assets/image-20201007211441036.png" alt="image-20201007211441036" style="zoom:50%;" />
如图红色部分表示悬崖数字代表智能体能够观测到的位置信息即observation总共会有0-47等48个不同的值智能体再移动中会有以下限制
* 智能体不能移出网格,如果智能体想执行某个动作移出网格,那么这一步智能体不会移动,但是这个操作依然会得到-1单位的奖励
* 如果智能体“掉入悬崖” ,会立即回到起点位置,并得到-100单位的奖励
* 当智能体移动到终点时,该回合结束,该回合总奖励为各步奖励之和
实际的仿真界面如下:
<img src="./assets/image-20201007211858925.png" alt="image-20201007211858925" style="zoom:50%;" />
由于从起点到终点最少需要13步每步得到-1的reward因此最佳训练算法下每个episode下reward总和应该为-13。
## 参考
[Gym环境相关源码](https://github.com/openai/gym/tree/master/gym/envs)