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, weights): state = env.reset() treward = 0 for _ in range(200): s = np.dot(state, weights) a = 0 if s < 0 else 1 state, reward, done, info = env.step(a) treward += reward 注 2: 例如,参见博客文章“Simple reinforcement learning methods to learn CartPole”。强化学习 | 209 if done: break return treward In [27]: run_episode(env, weights) Out[27]: 41.0 因此,可以应用蒙特卡罗模拟来测试大量不同的权重。下面的代码模拟了大量的权重,检 查它们是成功还是失败,然后选择产生成功的权重。 In [28]: def set_seeds(seed=100): random.seed(seed) np.random.seed(seed) env.seed(seed) In [29]: set_seeds() num_episodes = 1000 In [30]: besttreward = 0 for e in range(1, num_episodes + 1): weights = np.random.rand(4) * 2 - 1 ➊ treward = run_episode(env, weights) ➋ if treward > besttreward: ➌ besttreward = treward ➍ bestweights = weights ➎ if treward == 200: print(f'SUCCESS | episode={e}') break print(f'UPDATE | episode={e}') UPDATE | episode=1 UPDATE | episode=2 SUCCESS | episode=13 In [31]: weights Out[31]: array([-0.4282, 0.7048, 0.95 , 0.7697]) ➊ 随机权重。 ➋ 这些权重的总奖励。 ➌ 观察是否有改善。 ➍ 替换最佳总奖励。 ➎ 替换最佳权重。 如果连续 100 回合的平均总奖励为 195 或更高,则认为 CartPole 问题已被智能体解决,如 以下代码所示。 In [32]: res = [] for _ in range(100): treward = run_episode(env, weights) res.append(treward) res[:10]210 | 第 9 章 Out[32]: [200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0] In [33]: sum(res) / len(res) Out[33]: 200.0 这是一个用来与其他更复杂的方法做比较的强有力的基准。
标签:episode,200.0,智能,seed,weights,蒙特卡罗,treward,Out From: https://blog.csdn.net/weixin_44731078/article/details/136786624