引用来自ShangtongZhang的代码chapter12/random_walk.py
使用random walk问题来测试TD(λ)算法的性能
问题描述
本例通过将不同类型的的TD(λ)方法应用在Chapter06的random-walk问题中,不过将原来的5-state问题修改为了19-state问题。
引入模块并定义常量
1 | import numpy as np |
将TD(λ)算法封装为类,提供接口给agent,用来在交互过程中训练weight
基本算法类,只对TD(λ)算法使用的数据进行定义,用来在其他算法类中使用
1 | # base class for lambda-based algorithms in this chapter |
off-line λ-return算法类
1 | # Off-line lambda-return algorithm |
TD(λ)算法类
1 | # TD(lambda) algorithm |
true on-line TD(λ)算法类
1 | # True online TD(lambda) algorithm |
完成一次更新
1 | # 19-state random walk |
该函数用来计算给定不同的参数的学习算法的均方误差(square value error)
1 | # general plot framework |
将上述3种算法不同参数下的均方误差绘制成图像
1 | # Figure 12.3: Off-line lambda-return algorithm |
100%|██████████| 50/50 [04:19<00:00, 5.09s/it]
100%|██████████| 50/50 [01:05<00:00, 1.26s/it]
100%|██████████| 50/50 [01:13<00:00, 1.46s/it]