开始使用免费开始使用

DRL 训练循环

为了让智能体能够反复与环境交互,您需要搭建一个训练循环。

许多 DRL 算法都有如下核心结构:

  1. 按回合进行循环
  2. 在每个回合内按步数进行循环
  3. 每一步选择一个动作、计算损失,并更新网络

这里已为您提供占位用的 select_action()calculate_loss() 函数,便于代码运行。上一练习中定义的 Networkoptimizer 也可直接使用。

本练习是课程的一部分

Python 中的深度强化学习

查看课程

练习说明

  • 确保外层循环(遍历回合)运行 10 个回合。
  • 确保内层循环(遍历步数)一直运行到该回合结束为止。
  • env 环境中执行 select_action() 选出的动作。
  • 在每次内层循环结束时,在开始下一步之前先更新状态。

交互式实操练习

通过完成这段示例代码来试试这个练习。

env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
    state, info = env.reset()
    done = False    
    # Run through steps until done
    while ____:
        action = select_action(network, state)        
        # Take the action
        next_state, reward, terminated, truncated, _ = ____
        done = terminated or truncated        
        loss = calculate_loss(network, state, action, next_state, reward, done)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()        
        # Update the state
        state = ____
    print(f"Episode {episode} complete.")
编辑并运行代码