Skip to content

Commit 5d248d6

Browse files
committed
update ch1.md
1 parent 297153d commit 5d248d6

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

docs/chapter1/chapter1.md

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -592,11 +592,11 @@ SimpleAgent 类的 decide()方法用于决策,learn() 方法用于学习,该
592592

593593
```python
594594
def play(env, agent, render=False, train=False):
595-
episode_reward = 0. # 记录回合总奖励,初始化为0
595+
episode_reward = 0. # 记录回合总奖励,初始值为0
596596
observation = env.reset() # 重置游戏环境,开始新回合
597597
while True: # 不断循环,直到回合结束
598598
if render: # 判断是否显示
599-
env.render() # 显示图形界面,图形界面可以用 env.close() 语句关闭
599+
env.render() # 显示图形界面
600600
action = agent.decide(observation)
601601
next_observation, reward, done, _ = env.step(action) # 执行动作
602602
episode_reward += reward # 收集回合奖励
@@ -608,12 +608,9 @@ def play(env, agent, render=False, train=False):
608608
return episode_reward # 返回回合总奖励
609609
```
610610

611-
上面代码中的 play 函数可以让智能体和环境交互一个回合,这个函数有 4 个参数。
612-
env 是环境类。agent 是智能体类。render 是 bool 型变量,指示在运行过程中是否要图形化显示,如果函数参数 render为 True,那么在交互过程中会调用 env.render() 以显示图形界面,而这个界面可以通过调用 env.close()关闭。
613-
train是 bool 型的变量,指示在运行过程中是否训练智能体,在训练过程中应当设置为 True,以调用 agent.learn()函数;在测试过程中应当设置为 False,使得智能体不变。
614-
这个函数有一个返回值episode\_reward,是 float 型的数值,表示智能体与环境交互一个回合的回合总奖励。
611+
上面代码中的 play 函数可以让智能体和环境交互一个回合,该函数有 4 个参数。env 是环境类。agent 是智能体类。render 是 bool 型变量,其用于判断是否需要图形化显示。如果 render 为 True,则在交互过程中会调用 env.render() 以显示图形界面,通过调用 env.close() 可关闭图形界面。train 是 bool 型变量,其用于判断是否训练智能体,在训练过程中设置为 True,让智能体学习;在测试过程中设置为 False,让智能体保持不变。该函数的返回值 episode\_reward 是 float 型的数值,其表示智能体与环境交互一个回合的回合总奖励。
615612

616-
接下来,我们使用下面的代码让智能体和环境交互一个回合,并在交互过程中进行图形化显示,可用 env.close()语句关闭图形界面
613+
接下来,我们使用下面的代码让智能体和环境交互一个回合,并且显示图像界面
617614

618615
```python
619616
env.seed(3) # 设置随机种子,让结果可复现
@@ -627,7 +624,7 @@ env.close() # 关闭图形界面
627624
回合奖励 = -105.0
628625
```
629626

630-
为了系统评估智能体的性能,下列代码求出了连续交互 100 回合的平均回合奖励。
627+
为了评估智能体的性能,需要计算出连续交互 100 回合的平均回合奖励,代码如下
631628
```python
632629
episode_rewards = [play(env, agent) for _ in range(100)]
633630
print('平均回合奖励 = {}'.format(np.mean(episode_rewards)))
@@ -638,9 +635,9 @@ print('平均回合奖励 = {}'.format(np.mean(episode_rewards)))
638635
平均回合奖励 = -106.63
639636
```
640637

641-
小车上山环境有一个参考的回合奖励值 $-$110,如果连续 100 个回合的平均回合奖励大于 $-$110,则认为这个任务被解决了。SimpleAgent 类对应的策略的平均回合奖励就在 $-$110 左右。完整代码实现可参考[小车上山代码](https://github.com/datawhalechina/easy-rl/blob/master/docs/chapter1/RL_example.py)
638+
SimpleAgent 类对应策略的平均回合奖励在 $-$110 左右,而对于小车上山任务,只要连续 100 个回合的平均回合奖励大于 $-$110,就可以认为该任务被解决了。完整代码实现可参考[小车上山代码](https://github.com/datawhalechina/easy-rl/blob/master/docs/chapter1/RL_example.py)
642639

643-
测试智能体在 Gym 库中某个任务的性能时,学术界一般最关心 100 个回合的平均回合奖励。至于为什么是 100 个回合而不是其他回合数(比如 128 个回合),完全是习惯使然,没有什么特别的原因。对于有些任务,还会指定一个参考的回合奖励值,当连续 100 个回合的奖励大于指定的值时,就认为这个任务被解决了。但是,并不是所有的任务都指定了这样的值。对于没有指定值的任务,就无所谓任务被解决了或者没有被解决
640+
测试智能体在 Gym 库中某个任务的性能时,出于习惯使然,学术界一般最关心 100 个回合的平均回合奖励。对于有些任务,还会指定一个参考的回合奖励值,当连续 100 个回合的奖励大于指定的值时,则认为该任务被解决了。而对于没有指定值的任务,就无所谓任务被解决了或没有被解决
644641

645642
我们对 Gym 库的用法进行总结:使用 env=gym.make(环境名)取出环境,使用 env.reset()初始化环境,使用 env.step(动作)执行一步环境,使用 env.render()显示环境,使用 env.close()关闭环境。Gym库 有对应的[官方文档](https://www.gymlibrary.dev/),读者可以阅读文档来学习 Gym库 。
646643

0 commit comments

Comments
 (0)