强化学习中如何应对不同的状态空间大小?

问题描述

我正在进行 A2C 强化学习,在该学习中,我的环境中的代理人数不断增加和减少。由于代理数量的增加和减少,状态空间也将发生变化。我试图解决以这种方式更改状态空间的问题:

  • 如果状态空间超过所选的最大状态空间 作为n_input,多余的状态空间将由 np.random.choice,其中随机选择提供了一种在将状态空间转换为概率之后从状态空间创建随机样本的方法。

  • 如果状态空间小于最大状态,则填充状态 零的空间。

    def get_state_new(state):
     n_features =  n_input-len(get_state(env))
     # print("state",len(get_state(env)))
     p = np.array(state)
     p = np.exp(p)
     if p.sum() != 1.0:
         p = p * (1. / p.sum())
     if len(get_state(env)) > n_input:
         statappend = np.random.choice(state,size=n_input,p=p)
         # print(statappend)
     else:
         statappend = np.zeros(n_input)
         statappend[:state.shape[0]] = state
     return statappend
    

它可以工作,但结果不符合预期,我不知道这是否正确。

我的问题

是否有解决此类问题的参考文件以及如何处理状态空间的变化?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)