关于强化学习往经验池中预存数据的问题
Created by: zbp-xxxp
在复杂环境中,智能体学习的过程非常慢,我的思路是人为给一个大方向,然后智能体再沿着这个大方向探索最优方案,但是我在做的过程中,发现绕不开智能体,不知道有没有什么好方法解决它?
实际训练前:
往经验池中预存数据
while len(rpm) < MEMORY_WARMUP_SIZE: run_episode(agent, env, rpm)
游戏环境是CarRacing-v0
我的改进是把run_episode改成warn_up:
def WarnUp(env, agent):
env.render()
env.viewer.window.on_key_press = key_press
env.viewer.window.on_key_release = key_release
obs_list, action_list, reward_list = [], [], []
isopen = True
for i in range(1):
obs = env.reset()
total_reward = 0.0
steps = 0
restart = False
while True:
# obs = preprocess(obs) # from shape (96, 96, 3) to (28*32,)
# obs_list.append(obs)
action_list.append(a)
s, r, done, info = env.step(a)
reward_list.append(r)
total_reward += r
if steps % 1 == 0 or done:
print("\naction " + str(["{:+0.2f}".format(x) for x in a]))
print("step {} total_reward {:+0.2f}".format(steps, total_reward))
steps += 1
isopen = env.render()
if done or restart or isopen == False:
break
return obs_list, action_list, reward_list
这部分是我人为完成决策的,然后进入正式训练;相比于智能体一开始随机行进,我觉得这个方法要快一些,并且效果也会更好一些,但是不太清楚要怎么将参数传给智能体?