初学强化学习,跑用例代码时发现报错,网上试过很多方案解决不了,后面参考这篇博客( https://blog.csdn.net/Er_Studying_Bai/article/details/127441552)才知道 env.step() 的返回值由 4 个变为了 5 个,说明如下
虽然英文完全看得懂,但是连在一起关于terminated, truncated就让人有点不知所措了
在多次尝试后,发现在倒立摆(Pendulum-v1)游戏中,teminated长时间都不能为 True,如果用下面的代码就会导致死循环
# 之前的代码
while True:
action = self.get_action(state)
# 执行动作, 得到反馈
state, reward, terminated, trucated, _ = env.step([action])
# print(terminated, truncated)
#### 处理过程略
# 这里通过循环打印发现 terminated 不能作为终止条件
if terminated:
break
但是如果我们把 if terminated 改为 if truncated,反而能达到我们预期的效果。 但在别的游戏,比如平衡车(CartPole),用 terminated 确能够很成功。
所以我个人都是通过print打印,再选择终止条件的,有没有大佬指点或者讨论一下。
或许取它们任意一个作为终止条件是最佳选择?(个人猜想)