Симулируйте обученных агентов обучения с подкреплением в заданном окружении
моделирует одного или несколько агентов обучения с подкреплением в окружении, используя опции симуляции по умолчанию.experience
= sim(env
,agents
)
выполняет ту же симуляцию, что и предыдущий синтаксис.experience
= sim(agents
,env
)
Симулируйте окружение обучения с подкреплением с агентом, настроенным для этого окружения. В данном примере загружает окружение и агента, которые уже настроены. Окружение является дискретной тележкой с шестом окружения созданной с 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]
Симулируйте среду, созданную для модели 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)
env
- ОкружениеОкружение, в которой агенты действуют, заданная как один из следующих видов объекта окружения обучения с подкреплением:
Предопределенный MATLAB® или Simulink® окружение, созданная с помощью rlPredefinedEnv
. Такой вид окружения не поддерживает одновременное обучение нескольких агентов.
Пользовательское окружение MATLAB, которую вы создаете с такими функциями, как rlFunctionEnv
или rlCreateEnvTemplate
. Такой вид окружения не поддерживает одновременное обучение нескольких агентов.
Пользовательское окружение Simulink, которую вы создаете используя rlSimulinkEnv
. Этот вид окружения поддерживает обучение нескольких агентов одновременно.
Для получения дополнительной информации о создании и конфигурировании окружений см.:
Когда env
- окружение Simulink, вызывающая sim
компилирует и имитирует модель, связанную со окружением.
agents
- АгентыАгенты для симуляции, заданные как объект агента обучения с подкреплением, такой как rlACAgent
или rlDDPGAgent
, или как массив таких объектов.
Если env
является мультиагент окружения, созданной с помощью rlSimulinkEnv
, задайте агентов как массив. Порядок агентов в массиве должен совпадать с порядком агентов, используемых для создания env
. Мультиагент симуляции не поддерживается для окружений MATLAB.
Дополнительные сведения о том, как создать и сконфигурировать агентов для обучения с подкреплением, см. в разделе Агенты обучения с подкреплением.
simOpts
- Опции симуляцииrlSimulationOptions
объектОпции симуляции, заданные как rlSimulationOptions
объект. Используйте этот аргумент для задания таких опций, как:
Количество шагов на симуляцию
Количество выполняемых симуляций
Для получения дополнительной информации см. rlSimulationOptions
.
experience
- Результаты симуляцииРезультаты симуляции, возвращенные как структура или массив структур. Количество строк в массиве равно количеству симуляций, заданных NumSimulations
опция rlSimulationOptions
. Количество столбцов в массиве определяется количеством агентов. Поля каждого experience
структура следующая.
Observation
- НаблюденияНаблюдения, собранные от окружения, возвращаются как структура с полями, соответствующими наблюдениям, заданным в окружении. Каждое поле содержит timeseries
длины N + 1, где N - количество шагов симуляции.
Чтобы получить текущее наблюдение и следующее наблюдение для данного шага симуляции, используйте код, такой как следующий, принимая одно из полей Observation
является obs1
.
Obs = getSamples(experience.Observation.obs1,1:N); NextObs = getSamples(experience.Observation.obs1,2:N+1);
sim
генерировать опыт для обучения.
Action
- ДействияДействия, вычисленные агентом, возвращаются как структура с полями, соответствующими сигналам действия, заданным в окружении. Каждое поле содержит timeseries
длины N, где N количество шагов симуляции.
Reward
- Вознагражденияtimeseries
Вознаграждение на каждом шаге симуляции, возвращаемое как timeseries
длины N, где N количество шагов симуляции.
IsDone
- Флаг, указывающий на прекращение эпизода timeseries
Флаг, указывающий на прекращение эпизода, возвращенный как timeseries
Скаляр логического сигнала. Этот флаг устанавливается на каждом шаге средой в соответствии с условиями, которые вы задаете для завершения эпизода при конфигурировании окружения. Когда окружение устанавливает этот флаг равным 1, симуляция прекращается.
SimulationInfo
- Информация, собранная во время симуляцииSimulink.SimulationOutput
объектыИнформация, собранная во время симуляции, возвращается как одно из следующего:
Для сред MATLAB окружения структура, содержащая SimulationError
поля. Эта структура содержит все ошибки, возникшие во время симуляции.
Для окружений Simulink a Simulink.SimulationOutput
объект, содержащий данные моделирования. Записанные данные включают любые сигналы и состояния, что модель сконфигурирована для регистрации, метаданных симуляции и любых возникших ошибок.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.