Документация Engee

ReinforcementLearningBase.jl

Базовый тип игрока для случайного шага игры.

Сумма наград всех игроков — константа.

В среде нет ChancePlayer. Игра полностью детерминированная.

Обычно используется для описания игры в развернутой форме. В среде есть игрок «Случай», и соответствующая вероятность известна. Поэтому должна быть определена функция prob(env, player=chance_player(env)).

Псевдоним для FullActionSet().

Сумма наград всех игроков на каждом шаге может быть разной.

Все игроки получают одну и ту же награду.

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

Псевдоним для MinimalActionSet().

Все игроки наблюдают одно и то же состояние.

В среде есть игрок «Случай», и соответствующая вероятность неизвестна. Обычно в таком случае допускается только фиктивное действие.

Игрок «Случай» (chance_player(env)) должен присутствовать в результате метода RLBase.players(env). В результате вызова action_space(env, chance_player) должно быть только одно фиктивное действие.

В среде со стилем DynamicStyle SEQUENTIAL игроки должны выполнять действия по очереди.

В среде со стилем DynamicStyle SIMULTANEOUS все или некоторые игроки должны выполнять действия одновременно.

SPECTATOR

Зритель — это особый игрок, который не выполняет действий.

Псевдоним для StepReward().

В среде нет игрока «Случай». Игра является стохастической. Для повышения воспроизводимости такие среды, как правило, должны принимать AbstractRNG в качестве именованного аргумента. Для некоторых сторонних сред в конструкторе доступен по крайней мере метод seed.

Получение награды происходит только по завершении выполнения среды.

Сумма наград всех игроков равна 0. Частный случай CONSTANT_SUM.

act!(env::AbstractEnv, action, player=current_player(env))

Супертип всех сред обучения с подкреплением.

TODO:

описывает, как моделируется среда обучения с подкреплением. TODO: требуются дополнительные исследования. Ссылка: https://bair.berkeley.edu/blog/2019/12/12/mbpo/

plan!(π::AbstractPolicy, env) -> action

Политика — это самое основное понятие в обучении с подкреплением. Здесь действие агента определяется методом plan!, который принимает среду и политику и возвращает действие.

В этом обсуждении можно узнать, почему на вход подается объект AbstractEnv, а не состояние.

Политика π может изменять свое внутреннее состояние, но не должна изменять env. Если это все же необходимо сделать, обязательно создайте копию env, чтобы исходный объект env оставался без изменений.

Стиль AbstractUtilityStyle для сред, в которых сумма наград всех игроков — константа.

Стиль AbstractChanceStyle для полностью детерминированных игр без ChancePlayer.

Выполнение среды завершается за конечное число шагов.

В пространстве действий среды могут быть недопустимые действия. Для сред стиля FULL_ACTION_SET необходимо также определить legal_action_space и legal_action_space_mask.

Стиль AbstractUtilityStyle для сред, в которых сумма наград всех игроков не является константой.

Служит для представления целевого состояния.

Стиль AbstractUtilityStyle для сред, в которых все игроки получают одинаковую награду.

Игрокам (Player) неизвестны действия других игроков (Player).

Служит для представления внутреннего состояния.

В пространстве действий среды все действия являются допустимыми.

MultiAgent(n::Integer) -> MultiAgent{n}()

n должно быть ≥ 2.

Среда может выполняться бесконечно.

Специалисты из разных областей иногда называют одно и то же по-разному. В данном пакете Observation{Any}() является стилем состояния по умолчанию.

Обсуждение см. здесь.

Все действия каждого игрока (Player) видны другим игрокам (Player).

Игроки (Player) выполняют действия по очереди.

Игроки (Player) выполняют действия одновременно.

Стиль AbstractNumAgentStyle для сред с одним агентом.

Получение награды может происходить после каждого шага.

Stochastic()

По умолчанию ChanceStyle.

Получение награды происходит только по завершении выполнения среды.

Стиль AbstractUtilityStyle для сред, в которых сумма наград всех игроков равна нулю.

Base.:(==)(env1::T, env2::T) where T<:AbstractEnv

Проверяется только состояние всех игроков в среде.

Создает независимую копию env.

Генератор случайных чисел (если он есть в среде env) также копируется!

Задает начальное значение для генератора случайных чисел.

ActionStyle(env::AbstractEnv)

Для сред с дискретными действиями указывает, содержит ли текущее состояние среды env полное или минимальное множество действий. По умолчанию возвращается MINIMAL_ACTION_SET.

ChanceStyle(env) = STOCHASTIC

Указывает, какую роль играет случай в среде env. Возможные возвращаемые значения:

Указывает стиль состояния по умолчанию при вызове state(env).

DynamicStyle(env::AbstractEnv) = SEQUENTIAL

Допускается только в средах со стилем NumAgentStyle, имеющим значение MultiAgent. Определяет, могут ли игроки выполнять действия одновременно. Возможные возвращаемые значения:

InformationStyle(env) = IMPERFECT_INFORMATION

Служит для различения сред со стилем PERFECT_INFORMATION и IMPERFECT_INFORMATION. По умолчанию возвращается значение IMPERFECT_INFORMATION.

NumAgentStyle(env)

Количество агентов, участвующих в среде env. Возможные возвращаемые значения:

Указывает, может ли получение награды происходить после каждого шага или только в конце игры. Возможные значения: STEP_REWARD (по умолчанию) или TERMINAL_REWARD.

Среды со стилем TERMINAL_REWARD можно рассматривать как подмножество сред со стилем STEP_REWARD. Некоторые алгоритмы, например MCTS, могут быть реализованы немного эффективнее для сред со стилем TERMINAL_REWARD.

StateStyle(env::AbstractEnv)

Определяет возможные стили state(env). Возможные значения:

  • Observation{T}. Это значение возвращается по умолчанию.

  • InternalState{T}

  • InformationSet{T}

  • При необходимости можно также определить собственный стиль состояния.

Может также возвращать кортеж, содержащий несколько из перечисленных выше значений.

Это полезно в случае со средами, имеющими более одного типа состояния.

UtilityStyle(env::AbstractEnv)

Задает стиль полезности в средах с несколькими агентами. Возможные значения:

action_space(env, player=current_player(env))

Возвращает все доступные действия из среды. См. также описание legal_action_space

chance_player(env)

Допускается только для сред с игроком «Случай».

child(env::AbstractEnv, action)

Представляет env как дерево игры. Создает независимый дочерний объект после применения action.

current_player(env)

Возвращает следующего игрока, который должен выполнить действие. Для игр в развернутой форме может возвращаться игрок «Случай» . (См. также описание метода chance_player.) Для сред со стилем SIMULTANEOUS всегда возвращается одновременный игрок. (См. также описание simultaneous_player.)

is_terminated(env, player=current_player(env))
legal_action_space(env, player=current_player(env))

Для сред со стилем MINIMAL_ACTION_SET результат такой же, как и у функции action_space.

legal_action_space_mask(env, player=current_player(env)) -> AbstractArray{Bool}

Требуется для сред со стилем FULL_ACTION_SET. В реализации по умолчанию legal_action_space_mask создает маску пространства action_space с подмножеством legal_action_space.

next_player!(env::E) where {E<:AbstractEnv}

Выполняет переход к следующему игроку. В играх с одним игроком и одновременных играх это холостая операция. Этот метод должен быть реализован в играх со стилями Sequential и MultiAgent.

RLBase.optimise!(π::AbstractPolicy, experience)

Оптимизирует политику π с использованием потокового или автономного опыта либо параметров.

players(env::RLBaseEnv)

Игроки, участвующие в игре. В играх с одним игроком это холостая операция. Этот метод должен быть реализован в играх со стилем MultiAgent.

priority(π::AbstractPolicy, experience)

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

Возвращает распределение действий для игрока «Случай».

Допускается только для сред со стилем EXPLICIT_STOCHASTIC. Текущим игроком среды env должен быть игрок «Случай».

prob(π::AbstractPolicy, env, action)

Допускается только для сред с дискретными действиями.

prob(π::AbstractPolicy, env) -> Distribution

Возвращает вероятностное распределение действий на основе политики π и среды env.

Сбрасывает внутреннее состояние среды.

reward(env, player=current_player(env))
simultaneous_player(env)

Допускается только для сред со стилем SIMULTANEOUS.

spectator_player(env)

Используется в средах с неполной информацией и несколькими агентами.

state(env, style=[DefaultStateStyle(env)], player=[current_player(env)])

Состояние может быть любого типа. Однако большинство алгоритмов на основе нейронных сетей предполагают, что возвращается AbstractArray. Для сред со множеством разных состояний (внутреннее состояние, информационное состояние и т. д.) пользователям необходимо указывать style для объявления требуемого состояния.

Состояние может использоваться повторно и изменяться на каждом шаге. Если этого не должно происходить, обязательно создайте копию.

state_space(env, style=[DefaultStateStyle(env)], player=[current_player(env)])

Описывает все возможные состояния.

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

walk(f, env::AbstractEnv)

Вызывает функцию f со средой env и ее потомками. Следует использовать только с небольшими играми.