проблема с добавлением логики для недопустимых движений в тренажерном зале openai и стабильной базе

Я хочу интегрировать свою среду в тренажерный зал openAI, а затем использовать стабильную библиотеку базовых показателей для ее тренировки.

ссылка на стабильный базовый уровень:

https://stable-baselines.readthedocs.io/

Метод обучения в стабильной базовой линии - это однострочное обучение, и у вас нет доступа к действиям, предпринимаемым во время обучения.

model.learn(total_timesteps=10000)

В частности, вы не делаете строку, в которой вы выбираете из среды в своем коде:

action = space.sample()

Однако мне нравится добавлять некоторую логику в место, где я выбираю действие следующего состояния и отклоняю некоторые действия, которые логика к ним не применима (например, недопустимые ходы на шахматной доске), например:

for _ in range(1000):
    action = env.space.sample()
    if some_logic(action):
         continue

один из способов сделать это - написать оболочку для функции action_space sample() и выбрать только юридические действия. Как здесьclass DiscreteWrapper(spaces.Discrete) по следующей ссылке:

https://github.com/rockingdingo/gym-gomoku/blob/master/gym_gomoku/envs/gomoku.py

Но проблема в том, что стабильная базовая линия принимает только определенные типы данных и не допускает этого.

Как я могу сделать это таким образом, чтобы он был интегрирован в стабильную базовую среду и не нарушал критерии стабильной базовой линии? Если это вообще невозможно, знает ли кто-нибудь другой фреймворк обучения с подкреплением, который, в отличие от стабильной базовой линии, разрешает доступ к действиям?

0 ответов

Другие вопросы по тегам