“错误:模型不支持多个环境;它需要”“单个矢量化环境。”

问题描述 投票:0回答:1

我为 PPO 代理初始化了环境,但遇到了此错误。

AssertionError: The algorithm only supports (<class 'gymnasium.spaces.box.Box'>, <class 'gymnasium.spaces.discrete.Discrete'>, <class 'gymnasium.spaces.multi_discrete.MultiDiscrete'>, <class 'gymnasium.spaces.multi_binary.MultiBinary'>) as action spaces but Discrete(3) was provided.

这是错误部分中的另一条语句。是空间离散引起的问题吗?

这是代码:

class CustomEnv(gymnasium.Env):
    def __init__(self, dataset, columns):
        super(CustomEnv, self).__init__() 
        if dataset is None:
            raise ValueError("The dataset must be provided.")
        if columns is None:
            raise ValueError("The columns must be provided.")
        self.dataset = dataset
        self.columns = columns
        if not isinstance(dataset, pd.DataFrame):
            raise ValueError("The dataset must be a DataFrame.")
        self.dataset = dataset
        self.initial_balance = 10000  # Initial balance for trading
        self.current_step = 0  # Current step in the dataset
        self.balance = self.initial_balance
        self.holding = 0  # Number of units of the asset held by the agent
        # Use "MPN5P" as the price column
        self.price_column = "MPN5P"
        self.current_price = self.dataset[self.price_column].iloc[self.current_step]  # Current price of the asset
        self.action_space = spaces.Discrete(3)  # Three actions: 0 = buy, 1 = sell, 2 = hold
        self.observation_space = spaces.Box(low=0, high=1, shape=(1,), dtype=np.float32)
        self.columns = columns

我期待环境能够正确初始化和训练。但它要么导致 NaN 错误,要么导致 AssertionError。

python bots reinforcement-learning stable-baselines
1个回答
0
投票

我相信这应该是 Gymnasium 版本的问题。

查看他们的网站,他们以同样的方式定义了一个离散的动作空间根据这个,用

spaces.Discrete(3)

但从错误中,我们看到
'gymnasium.spaces.discrete.Discrete'
是您的操作空间的正确类,暗示您应该使用
spaces.discrete.Discrete(3)
来代替。您可以尝试一下,根据错误它应该起作用。令人惊讶的是,here您也可以看到,根据文档,您不必将“离散”部分放在中间,所以我猜您有一个过时的版本。在其他情况下,请检查您的 Gymnasium 版本(不是 OpenAI Gym),看看它是否太旧。

否则,我只能想到 OpenAI Gym 和 Farama's Gymnasium 都存在的一些错误,并导致它们之间的差异导致一些问题(但我发现这不太可能)。

© www.soinside.com 2019 - 2024. All rights reserved.