
208
|
第
9
章
9.3
蒙特卡罗智能体
CartPole
问题不一定非要使用成熟的强化学习方法和一些神经网络来解决,本节介绍了基
于蒙特卡罗模拟的问题的简单解决方案,并使用了
降维
的特定策略。在这种情况下,定义
环境状态的
4
个参数通过线性组合被压缩为了单个实值参数
。
2
以下
Python
代码实现了这
个想法。
In [18]: np.random.seed(100)
➊
In [19]: weights = np.random.random(4) * 2 - 1
➊
In [20]: weights
➊
Out[20]: array([ 0.0868, -0.4433, -0.151 , 0.6896])
In [21]: state = env.reset()
➋
In [22]: state
➋
Out[22]: array([-0.0347, -0.0103, 0.047 , -0.0315])
In [23]: s = np.dot(state, weights)
➌
s
➌
Out[23]: -0.02725361929630797
➊
固定种子值的随机权重。
➋
环境的初始状态。
➌
状态和权重的点积。
然后根据单个状态参数
s
的符号来定义策略。
In [24]: if s < 0:
a = 0
else:
a = 1
In [25]: a
Out[25]: 0
接下来可以使用此策略玩一回合
CartPole
游戏。鉴于所应用的权重的随机性,通常结果并
不比上一节的随机动作策略的结果好。
In [26]: def run_episode(env, ...