exponenta event banner

sim

Моделирование обученных агентов по обучению подкреплению в определенной среде

Описание

пример

experience = sim(env,agents) моделирует один или несколько агентов обучения усилению в среде, используя параметры моделирования по умолчанию.

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

env = sim(___,simOpts) использует объект параметров моделирования simOpts. Используйте параметры моделирования, чтобы задать такие параметры, как количество шагов на моделирование или количество запускаемых моделирований. Используйте этот синтаксис после любого из входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Моделирование среды обучения усилению с помощью агента, настроенного для этой среды. В этом примере загрузите среду и агент, которые уже настроены. Среда представляет собой дискретную среду типа cart-pole, созданную с помощью rlPredefinedEnv. Агент является градиентом политики (rlPGAgent) агент. Дополнительные сведения о среде и агенте, используемых в этом примере, см. в разделе Подготовка агента PG к балансировке системы Cart-Pole.

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);

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

plot(env)

Figure Cart Pole Visualizer contains an axes. The axes contains 6 objects of type line, polygon.

Моделирование среды.

experience = sim(env,agent,simOpts)

Figure Cart Pole Visualizer contains an axes. The axes contains 6 objects of type line, polygon.

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

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

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

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

Загрузите агенты в рабочую область MATLAB ®.

load rlCollaborativeTaskAgents

Создание среды для rlCollaborativeTask Модель Simulink ®, которая имеет два блока агентов. Поскольку агенты используются двумя блоками (agentA и agentB) уже находятся в рабочей области, для создания среды не требуется передавать их спецификации наблюдения и действий.

env = rlSimulinkEnv('rlCollaborativeTask',["rlCollaborativeTask/Agent A","rlCollaborativeTask/Agent B"]);

Загрузите параметры, необходимые для rlCollaborativeTask Запускаемая модель Simulink ®.

rlCollaborativeTaskParams

Имитация агентов против окружающей среды, сохранение опыта в xpr.

xpr = sim(env,[agentA agentB]);

Постройте график действий обоих агентов.

subplot(2,1,1); plot(xpr(1).Action.forces)
subplot(2,1,2); plot(xpr(2).Action.forces)

Figure contains 2 axes. Axes 1 with title Time Series Plot:forces contains 2 objects of type stair. Axes 2 with title Time Series Plot:forces contains 2 objects of type stair.

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

свернуть все

Среда, в которой действуют агенты, указанная как один из следующих видов объектов среды обучения усиления:

  • Предопределенная среда MATLAB ® или Simulink ®, созданная с помощьюrlPredefinedEnv. Этот вид среды не поддерживает одновременное обучение нескольких агентов.

  • Пользовательская среда MATLAB, создаваемая с помощью таких функций, как rlFunctionEnv или rlCreateEnvTemplate. Этот вид среды не поддерживает одновременное обучение нескольких агентов.

  • Пользовательская среда Simulink, создаваемая с помощью rlSimulinkEnv. Этот вид среды поддерживает одновременное обучение нескольких агентов.

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

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

Агенты для моделирования, указанные как объект усиливающего обучающего агента, например, rlACAgent или rlDDPGAgentили как массив таких объектов.

Если env - многоагентная среда, созданная с помощью rlSimulinkEnv, укажите агенты как массив. Порядок агентов в массиве должен соответствовать порядку агентов, используемому для создания env. Многоагентное моделирование не поддерживается для сред MATLAB.

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

Параметры моделирования, указанные как rlSimulationOptions объект. Этот аргумент используется для указания таких параметров, как:

  • Количество шагов на моделирование

  • Количество имитаций для выполнения

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

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

свернуть все

Результаты моделирования, возвращаемые в виде структуры или массива структуры. Количество строк в массиве равно количеству моделирований, указанных 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