update chapeter1.md

This commit is contained in:
qiwang067
2023-07-21 21:52:23 +08:00
parent 3e22a1b036
commit 12ace0c320
2 changed files with 10 additions and 6 deletions

View File

@@ -41,6 +41,7 @@ def play_montecarlo(env, agent, render=False, train=False):
env = gym.make('MountainCar-v0')
env.seed(3) # 设置随机数种子,只是为了让结果可以精确复现,一般情况下可删去
agent = BespokeAgent(env)
print(type(env.observation_space))
print('观测空间 = {}'.format(env.observation_space))
print('动作空间 = {}'.format(env.action_space))
print('观测范围 = {} ~ {}'.format(env.observation_space.low,

View File

@@ -430,10 +430,13 @@ OpenAI是一家非营利性的人工智能研究公司其公布了非常多
我们可以通过 pip 来安装 Gym 库,由于 Gym 库 0.26.0 及其之后的版本对之前的代码不兼容,所以我们安装 0.26.0 之前的 Gym比如 0.25.2。
```bash
pip install gym==0.25.2
```
此外,为了显示图形界面,我们还需要安装 pygame 库。
```bash
pip install pygame
```
在 Python 环境中导入Gym库如果不报错就可以认为 Gym 库安装成功。
@@ -554,14 +557,14 @@ print('动作数 = {}'.format(env.action_space.n))
输出:
```
观测空间 = Box(2,)
观测空间 = Box([-1.2 -0.07], [0.6 0.07], (2,), float32)
动作空间 = Discrete(3)
观测范围 = [-1.2 -0.07] ~ [0.6 0.07]
动作数 = 3
```
由输出可知,观测空间是形状为 (2,) 的浮点型 np.array动作空间是取 {0,1,2} 的 int 型数值。
由输出可知,观测是形状为 (2,) 的浮点型 np.array动作空间是取 {0,1,2} 的 int 型数值。
接下来考虑智能体。智能体往往是我们自己实现的。我们可以实现一个智能体类————BespokeAgent 类,代码如下:
@@ -617,7 +620,7 @@ train是 bool 型的变量,指示在运行过程中是否训练智能体,在
接下来,我们使用下面的代码让智能体和环境交互一个回合,并在交互过程中进行图形化显示,可用 env.close()语句关闭图形界面。
```python
env.seed(0) # 设置随机数种子,只是为了让结果可以精确复现,一般情况下可删去
env.seed(3) # 设置随机数种子,只是为了让结果可以精确复现,一般情况下可删去
episode_reward = play_montecarlo(env, agent, render=True)
print('回合奖励 = {}'.format(episode_reward))
env.close() # 此语句可关闭图形界面
@@ -636,10 +639,10 @@ print('平均回合奖励 = {}'.format(np.mean(episode_rewards)))
输出:
```
平均回合奖励 = -102.61
平均回合奖励 = -106.63
```
小车上山环境有一个参考的回合奖励值 $-$110如果连续 100 个回合的平均回合奖励大于 $-$110则认为这个任务被解决了。BespokeAgent 类对应的策略的平均回合奖励就在 $-$110 左右。
小车上山环境有一个参考的回合奖励值 $-$110如果连续 100 个回合的平均回合奖励大于 $-$110则认为这个任务被解决了。BespokeAgent 类对应的策略的平均回合奖励就在 $-$110 左右。完整代码实现可参考[小车上山代码](https://github.com/datawhalechina/easy-rl/blob/master/docs/chapter1/RL_example.py)。
测试智能体在 Gym 库中某个任务的性能时,学术界一般最关心 100 个回合的平均回合奖励。至于为什么是 100 个回合而不是其他回合数(比如 128 个回合),完全是习惯使然,没有什么特别的原因。对于有些任务,还会指定一个参考的回合奖励值,当连续 100 个回合的奖励大于指定的值时,就认为这个任务被解决了。但是,并不是所有的任务都指定了这样的值。对于没有指定值的任务,就无所谓任务被解决了或者没有被解决。