sim

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

Описание

пример

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

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

env = sim(___,simOpts) использует объект опций симуляции 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)

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]

Область структуры output 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 a Simulink.SimulationOutput объект, содержащий данные моделирования. Записанные данные включают любые сигналы и состояния, что модель сконфигурирована для регистрации, метаданных симуляции и любых возникших ошибок.

Введенный в R2019a
Для просмотра документации необходимо авторизоваться на сайте