拓冰建站拓冰建站
首页 / 资讯中心 / 正文

第 3 课:第一个 MuJoCo Agent——Random Agent

一、本节目标本节仍然不训练算法。目标是把上一节的环境测试整理成完整的 Agent–Environment Loop。对应代码lesson01/01_random_agent.py完成后应能解释Random Agent 的 Policy 是什么Observation 和 Action 的实际类型与 shapereset()和step()返回的数据怎样流动为什么“Agent 能行动”不等于“Agent 在学习”。二、先看完整代码import gymnasium as gym env gym.make( InvertedPendulum-v5, render_modehuman ) observation, info env.reset() print(初始 observation:) print(observation) print(\nobservation space:) print(env.observation_space) print(\naction space:) print(env.action_space) for step in range(1000): action env.action_space.sample() observation, reward, terminated, truncated, info env.step(action) print( fstep{step}, faction{action}, freward{reward} ) if terminated or truncated: print(Episode finished!) observation, info env.reset() env.close()运行cd lesson01 python3 01_random_agent.py三、什么是 Random Agent代码中决定动作的是action env.action_space.sample()因此它的 Policy 是每一步都从合法 Action space 随机采样。它确实有选择动作的方法所以可以说它有一个随机 Policy但是它没有根据经验更新任何参数因此不会学习。四、逐行理解重要代码1.observation, info env.reset()这行使用 Python 的“序列解包”右侧返回两个对象左侧使用两个变量接收。当前环境的一次初始输出可能类似[-0.003, 0.008, 0.001, -0.005]它是 NumPy arrayshape (4,) dtype float64四个元素的准确物理意义应以环境文档为准。当前学习重点是理解Agent 每一步接收一个长度为 4 的连续数值向量。2. 打印 Observation spaceprint(env.observation_space)实测形式是Box(-inf, inf, (4,), float64)逐项解释Box连续数值空间-inf, inf各维没有有限上下界(4,)shape 为一维长度 4float64元素类型。3. 打印 Action spaceprint(env.action_space)该环境的形式是Box(-3.0, 3.0, (1,), float32)Action 是一个 shape 为(1,)的数组而不是离散整数0/1/2。例如action [1.42]4. f-stringfstep{step}, action{action}, reward{reward}字符串前面的f表示 f-string。花括号中的变量会被替换成当前值。如果step3、action[1.2]打印结果会包含step3, action[1.2]5. 为什么需要 resetif terminated or truncated: observation, info env.reset()episode 已结束后旧 episode 的状态不应继续使用。reset()返回下一局的初始 Observation。五、一次循环的数据流假设当前 Observation 为o_to_t ↓ 随机 Policyaction_space.sample() ↓ a_t ↓ env.step(a_t) ↓ o_(t1), r_t, terminated, truncated, info变量覆盖需要特别注意observation, reward, terminated, truncated, info env.step(action)执行后变量observation不再保存旧 Observation而是保存新的 Observation。六、运行现象怎样回到理论Random Agent 往往很快失去平衡因为动作与当前 Observation 没有合理关系。这说明有 Agent–Environment Loop ≠ 有学习 ≠ 能解决任务当前程序只证明环境能够接收 Action环境能够返回 Observation 和 Rewardepisode 结束后能够重新开始。七、建议实验实验 1打印 shape在 reset 后增加print(observation.shape , observation.shape)在采样动作后增加print(action.shape , action.shape)观察(4,)和(1,)的区别。实验 2缩短运行把range(1000)改成range(20)确认这只改变总步数。八、常见错误把 Action space 当成离散动作该 MuJoCo 环境使用连续BoxAction不能直接照搬后续SimpleMoveEnv的0/1/2动作。把 Random Agent 叫作训练算法它有 Policy但没有更新过程所以不是学习算法。把总循环 step 当作 episode step外层step从 0 数到 999中间 reset 后它不会重新变成 0。九、本节复盘Observation shape(4,) Action shape(1,) Policy随机采样合法动作 学习没有 episode 结束reset真正的强化学习算法会替换“随机选择动作”这一部分但算法必须和环境的动作空间匹配。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门