2

RAY - RLLIB 库 - 使用离线批处理数据估计 DQN 模型。模型无法学习。episode_len_mean: .nan 用于 CartPole 示例以及个人领域特定的数据集

Ubuntu Ray 库 - RLIB DQN 离线环境:- 尝试使用 Cartpole-v0 以及自定义环境示例。

episode_len_mean: .nan episode_reward_max: .nan episode_reward_mean: .nan episode_reward_min: .nan episodes_this_iter: 0 episodes_total: 0

使用 PG 生成数据

rllib train --run=PG --env=CartPole-v0 --config='{"output": "/tmp/cartpole-out", "output_max_file_size": 5000000}' --stop='{"timesteps_total": 100000}'

在离线数据上训练模型

rllib train --run=DQN --env=CartPole-v0 --config='{"input": "/tmp/cartpole-out","input_evaluation": ["is", "wis"],"soft_q": true, "softmax_temp": 1.0}'

预期:- episode_len_mean:数值 episode_reward_max:数值 episode_reward_mean:数值 episode_reward_min:数值

实际结果(在张量板上也没有观察到改善):- episode_len_mean: .nan episode_reward_max: .nan episode_reward_mean: .nan episode_reward_min: .nan

4

1 回答 1

0

我或多或少遇到了同样的问题,这与这一集从未结束的事实有关,因为我没有在 step 函数中正确设置“完成”值。在某一集“完成”之前,Ray 不会计算指标。在我的情况下,我必须在名为 self.count_steps的环境初始化函数中指定一个计数器,并在每一步递增。

 def step(self, action):
    # Changes the yaw angles
    self.cur_yaws = action
    self.farm.calculate_wake(yaw_angles=action)
    # power output
    power = self.farm.get_farm_power()
    reward = (power-self.best_power)/self.best_power

    #if power > self.best_power:
    #    self.best_power = power

    self.count_steps +=1

    if self.count_steps > 50:
        done = True
    else:
        done = False

    return self.cur_yaws, reward, done, {}
于 2020-11-11T13:44:47.923 回答