我正在尝试使用 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() 函数中使用该值?
我的代码基于以下示例:
任何帮助深表感谢。
谢谢。