问题描述
我正在使用深度 Q 学习神经网络训练强化学习代理,为此,我主要有 2 个文件,一个环境 python 脚本和一个 Jupyter Notebook(使用 Google Colab),我在其中定义了代理类,我正在那里培训它。
我的环境 Python 脚本中的一个函数是 self.reset
,顾名思义,它会重置所有环境状态值。这是它的样子
def reset(self):
return self.action_space,self.state_space,self.state_space[(np.random.choice(len(self.state_space)))],self.reset_days_total(self.days_total)
(self.reset_days_total()
只是同一个类的另一个函数,我用它来重置另一个实例变量。)
虽然 state_space 和 action_space 的值在整个训练过程中保持不变,但函数返回的初始状态应该在每次调用时随机选择。
当我尝试直接在笔记本上选择随机状态时,np.random.choice
函数对类变量起作用。
for i in range(5):
print(env.state_space[(np.random.choice(len(env.state_space)))])
--------------------------------------------------------------------------------------------------
o/p: (4,7,0)
(3,2,0)
(4,13,4)
(2,16,3)
(2,9,5)
但是,当我尝试使用实例方法实现相同的目标时,它不会在每次运行该方法时返回随机状态。第一次后它停止返回随机值,此后无论我运行该函数多少次都返回一个不变的值。
env = CabDriver()
for i in range(5):
action_space,state_space,state_new,days_total = env.reset()
print(f"State: {state_new}")
--------------------------------------------------------------------------------------------------
o/p: State: (4,22,0)
State: (4,0)
我很想知道为什么这两种情况的行为不同,以及如何在访问 env.reset()
方法时克服这种特殊行为。如果您能在正确的方向上推动此方法按预期工作,我们将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)