sim

Симулируйте обученного агента обучения с подкреплением в заданной среде

Описание

пример

experience = sim(env,agent,simOpts) симулирует среду обучения с подкреплением против агента, сконфигурированного для той среды..

experience = sim(agent,env,simOpts) выполняет ту же симуляцию как предыдущий синтаксис.

Примеры

свернуть все

Симулируйте среду обучения с подкреплением с агентом, сконфигурированным для той среды. В данном примере загрузите среду и агента, которые уже сконфигурированы. Среда является дискретной средой тележки с шестом, созданной с rlPredefinedEnv. Агент является градиентом политики (rlPGAgent) агент. Для получения дополнительной информации о среде и агенте, используемом в этом примере, смотрите, Обучают Агента PG Балансировать Систему Тележки с шестом.

rng(0) % for reproducibility
load RLSimExample.mat
env
env = 
  CartPoleDiscreteAction with properties:

                  Gravity: 9.8000
                 MassCart: 1
                 MassPole: 0.1000
                   Length: 0.5000
                 MaxForce: 10
                       Ts: 0.0200
    ThetaThresholdRadians: 0.2094
               XThreshold: 2.4000
      RewardForNotFalling: 1
        PenaltyForFalling: -5
                    State: [4x1 double]

agent
agent = 
  rlPGAgent with properties:

    AgentOptions: [1x1 rl.option.rlPGAgentOptions]

Как правило, вы обучаете агента с помощью train и симулируйте среду, чтобы протестировать производительность обученного агента. В данном примере симулируйте среду с помощью агента, которого вы загрузили. Сконфигурируйте опции симуляции, указав что симуляция, запущенная для 100 шагов.

simOpts = rlSimulationOptions('MaxSteps',100);

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

plot(env)

Симулируйте среду.

experience = sim(env,agent,simOpts)

experience = struct with fields:
       Observation: [1x1 struct]
            Action: [1x1 struct]
            Reward: [1x1 timeseries]
            IsDone: [1x1 timeseries]
    SimulationInfo: [1x1 struct]

Структура output experience записывает наблюдения, собранные из среды, действия и вознаграждения и других данных, собранных во время симуляции. Каждое поле содержит, timeseries или структура данных о timeseries. Например, experience.Action timeseries, содержащий действие, наложенное на систему тележки с шестом агентом на каждом шаге симуляции.

experience.Action
ans = struct with fields:
    CartPoleAction: [1x1 timeseries]

Входные параметры

свернуть все

Среда, в которой агент действует в виде объекта среды обучения с подкреплением, такого как:

  • Предопределенный MATLAB® или среда Simulink®, созданная с помощью rlPredefinedEnv

  • Пользовательская среда MATLAB вы создаете с функциями, такими как rlFunctionEnv или rlCreateEnvTemplate

  • Пользовательское окружение Simulink вы создаете использование rlSimulinkEnv

Для получения дополнительной информации о создании и конфигурировании сред, см.:

Когда env окружение Simulink, вызывая sim компиляции и симулируют модель, сопоставленную со средой.

Агент, чтобы обучаться в виде объекта агента обучения с подкреплением, такого как rlACAgent или rlDDPGAgent объект или пользовательский агент. Перед симуляцией необходимо сконфигурировать представления актёра и критика агента. Для получения дополнительной информации о том, как создать и сконфигурировать агентов для обучения с подкреплением, смотрите Агентов Обучения с подкреплением.

Опции симуляции в виде rlSimulationOptions объект. Используйте этот аргумент, чтобы задать такие параметры и опции как:

  • Количество шагов на симуляцию

  • Количество симуляций, чтобы запуститься

Для получения дополнительной информации смотрите rlSimulationOptions.

Выходные аргументы

свернуть все

Результаты симуляции, возвращенные как структура или массив структур. Элементы номера f в массиве равны количеству симуляций, заданных NumSimulations опция rlSimulationOptions Поля experience структура следующие.

Наблюдения собраны из среды, возвращенной, когда структура с полями, соответствующими наблюдениям, задана в среде. Каждое поле содержит timeseries из длины N + 1, где N является количеством шагов симуляции.

Чтобы получить текущее наблюдение и следующее наблюдение для данного шага симуляции, используйте код такой в качестве следующего, принимая одно из полей Observation obs1.

Obs = getSamples(experience.Observation.obs1,1:N);
NextObs = getSamples(experience.Observation.obs1,2:N+1);
Эти значения могут быть полезными, если вы пишете свой собственный алгоритм настройки с помощью sim сгенерировать события для обучения.

Действия вычисляются агентом, возвращенным, когда структура с полями, соответствующими сигналам действия, задана в среде. Каждое поле содержит timeseries из длины N, где N является количеством шагов симуляции.

Вознаградите на каждом шаге в симуляции, возвращенной как timeseries из длины N, где N является количеством шагов симуляции.

Отметьте указание на завершение эпизода, возвращенного как timeseries из скалярного логического сигнала. Этот флаг установлен на каждом шаге средой, согласно условиям, которые вы задаете для завершения эпизода, когда вы конфигурируете среду. Когда среда устанавливает этот флаг на 1, симуляция завершает работу.

Информация, собранная в процессе моделирования, возвратилась как:

  • Для сред MATLAB, структура, содержащая поле SimulationError. Эта структура содержит любые ошибки, которые произошли в процессе моделирования.

  • Для окружений Simulink, Simulink.SimulationOutput объект, содержащий данные моделирования. Записанные данные включают любые сигналы и утверждают, что модель сконфигурирована, чтобы регистрировать, метаданные симуляции и любые ошибки, которые произошли.

Введенный в R2019a