2

我正在尝试使用 Gym 和 kears_rl 设置强化学习项目。

描述:

给定一个范围内的数字(100, 200),我希望代理在数字接近限制时提醒我,比如说在0%-10%90%-100%位数之间。

报酬:

分位数样本 (0, 0.1),奖励为 (+1)

分位数样本 (0.1, 0.9),奖励为 (-1)

分位数样本 (0.9, 1),奖励为 (+1)

代理需要学习 10% 和 90% 的限值。

low = np.array([100])
high = np.array([200])
self.action_space = spaces.Box(low=low, high=high, dtype=np.intt32)
self.observation_space = spaces.Box(low=low, high=high, dtype=np.int32)

main.py 信息:

if __name__ == '__main__':
        env = Env(max_steps=100)

        nb_actions = env.action_space.shape[0]  # equal to 100

        model = Sequential()
        model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
        model.add(Dense(8, activation='relu'))
        model.add(Dense(8, activation='relu'))
        model.add(Dense(2, activation='softmax'))

        memory = SequentialMemory(limit=50000, window_length=1)
        policy = BoltzmannQPolicy()

        # Create DQN agent
        dqn = DQNAgent(model=env.model,
                       memory=memory,
                       policy=policy,
                       nb_actions=nb_actions,
                       nb_steps_warmup=10,
                       target_model_update=1e-2)

        # Compile the DQN agent
        dqn.compile(Adam(lr=1e-3), metrics=['mae'])

        # Okay, now it's time to learn something!
        dqn.fit(env, nb_steps=50000, visualize=False, verbose=1)

问题\问题:

在 fit 函数 (rl/core.py:169) 上,我得到的动作为零。它应该在 [100, 200] 之间。这是为什么?我希望该操作在 action_space 内,但我看到所有策略都返回 0 或 1 的值。我想如何在 env.step() 函数中使用该值?

我的代码基于以下示例:

OpenAI-Gym cartpole.py

keras_rl dqn_cartpole.py

OpenAI-Gym hottercolder.py 环境

任何帮助深表感谢。

谢谢。

4

0 回答 0