Пользовательская среда OpenAI Gym: дискретное пространство для наблюдения с реальными значениями

Я хотел бы создать индивидуальную среду тренажерного зала openai с дискретным пространством состояний, но со значениями с плавающей запятой. Если быть более точным, это должен быть диапазон значений с шагом 0,25: 10,0, 10,25, 10,5, 10,75, 11,0, ..., 19,75, 20,0

Есть ли способ сделать это в индивидуальной среде тренажерного зала openai, используя такие пространства, как Discrete, Box, MultiDiscrete или некоторые другие? Discrete требует целого числа, а Box, похоже, не имеет какого-либо параметра шага.


person sesli    schedule 10.06.2019    source источник


Ответы (1)


Вы можете реализовать собственное пространство, используя np.linspace (учитывая, например, _2 _ в качестве ориентира):

from gym.spaces.space import Space
import numpy as np

class Incremental(Space):
    def __init__(self, start, stop, num, **kwargs):
        self.values = np.linspace(start, stop, num, **kwargs)
        super().__init__(self.values.shape, self.values.dtype)

    def sample(self):
        return np.random.choice(self.values)

    def contains(self, x):
        return x in self.values

space = Incremental(10, 20, 41)
person a_guest    schedule 10.06.2019
comment
Спасибо, попробую! - person sesli; 11.06.2019