Чтобы создать новую среду в формате спортзала, она должна иметь 5 функций, упомянутых в файле gym.core.
https://github.com/openai/gym/blob/e689f93a425d97489e590bba0a7d4518de0dcc03/gym/core.py#L11-L35
Чтобы сложить это поэтапно -
Определите пространство наблюдения и пространство действия для вашей среды, предпочтительно с помощью модуля gym.spaces.
Запишите пошаговую функцию, которая выполняет действия агента и возвращает 4 кортежа, содержащего - следующий набор наблюдений из среды, вознаграждение,
done - логическое значение, указывающее, закончился ли эпизод, и некоторая дополнительная информация, если хотите.
Напишите функцию сброса для среды, чтобы повторно инициализировать эпизод до состояния произвольного запуска и вернуть кортеж 4, аналогичный шагу.
Этих функций достаточно для запуска агента RL в вашей среде.
Вы можете пропустить функции рендеринга, посева и закрытия, если хотите.
Для заданной вами задачи вы можете смоделировать пространство наблюдения и действия, используя Discrete (2). 0 для первой двери и 1 для второй двери.
- Сброс вернется в наблюдении, какая дверь имеет награду.
- Тогда агент выберет любую из дверей - 0 или 1.
- Затем выполните шаг среды, вызвав step (action), который вернет вознаграждение агента и флаг done как true, что означает, что эпизод окончен.
Честно говоря, описанная вами проблема кажется слишком простой для решения для любого алгоритма обучения с подкреплением, но я предполагаю, что вы предоставили это в качестве примера.
Запоминание для более длинных горизонтов обычно труднее.
Вы можете прочитать их документацию и игрушечную среду, чтобы понять, как ее создать.