Симулируйте обученных агентов обучения с подкреплением в заданной среде
симулирует одного или несколько агентов обучения с подкреплением в среде, с помощью опций симуляции по умолчанию.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, Simulink.SimulationOutput
объект, содержащий данные моделирования. Записанные данные включают любые сигналы и утверждают, что модель сконфигурирована, чтобы регистрировать, метаданные симуляции и любые ошибки, которые произошли.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.