Как я могу разыменовать элементы вектора спортзала Python DummyVecEnv OpenAI? - PullRequest
1 голос
/ 13 января 2020

Я создал свою векторизованную среду с test_env = DummyVecEnv( [lambda: myEnv(df)] ) и определил пользовательский метод plot_stuff() для среды myEnv.

Теперь я хотел бы сделать что-то похожее на test_env[0].plot_stuff(), но это не работает:

TypeError: объект 'DummyVecEnv' не может быть подписан

Я также попытался использовать map( lambda x: x.plot_stuff(), test_env ), что привело меня к ответу:

TypeError: объект 'DummyVecEnv' не повторяется

Я предполагаю, что это скорее новый вопрос ie Python, чем вопрос OpenAI, но я этого не делаю действительно знаю, что искать, чтобы найти решение этой проблемы.

Автономный, (относительно) минимальный, достаточный пример кода:

import numpy as np
import gym
from gym import spaces
from stable_baselines.common.vec_env import DummyVecEnv

class someEnv(gym.Env):    
    def __init__( self):
        super(someEnv, self).__init__()
        self.action_space = spaces.MultiDiscrete([2, 2])
        self.observation_space = spaces.Box( low=0, high=1, shape=(1, 2), dtype=np.float64 )
    def plot_stuff(self):
        print("Hello")

test_env = DummyVecEnv( [lambda: someEnv()] )
test_env[0].plot_stuff()
...