Моделируйте обученный агент изучения укрепления в заданной среде
experience = sim(env,agent,simOpts)
experience = sim(agent,env,simOpts)
моделирует среду обучения укрепления против агента, сконфигурированного для той среды..experience
= sim(env
,agent
,simOpts
)
выполняет ту же симуляцию как предыдущий синтаксис.experience
= sim(agent
,env
,simOpts
)
Моделируйте среду обучения укрепления с агентом, сконфигурированным для той среды. В данном примере загрузите среду и агент, которые уже сконфигурированы. Среда является дискретной полюсной корзиной средой, созданной с rlPredefinedEnv
. Агент является Градиентом политики (rlPGAgent
) агент. Для получения дополнительной информации о среде и агенте, используемом в этом примере, смотрите Train Агент 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: [4×1 double]
agent
agent = rlPGAgent with properties: AgentOptions: [1×1 rl.option.rlPGAgentOptions]
Как правило, вы обучаете агент с помощью train
и моделируете среду, чтобы проверить производительность обученного агента. В данном примере моделируйте среду с помощью агента, который вы загрузили. Сконфигурируйте опции симуляций, указывающие что симуляция, запущенная для 100 шагов..
simOpts = rlSimulationOptions('MaxSteps',100);
Для предопределенной полюсной корзиной среды, используемой в этом примере. можно использовать plot
, чтобы сгенерировать визуализацию полюсной корзиной системы. Когда вы моделируете среду, этот график обновления автоматически так, чтобы можно было смотреть, что система развивается во время симуляции.
plot(env);
Моделируйте среду.
experience = sim(env,agent,simOpts)
experience = struct with fields:
Observation: [1×1 struct]
Action: [1×1 struct]
Reward: [1×1 timeseries]
IsDone: [1×1 timeseries]
SimulationInfo: [1×1 struct]
Выходная структура experience
записывает наблюдения, собранные из среды, действия и вознаграждения и других данных, собранных во время симуляции. Каждое поле содержит, timeseries или структура данных о timeseries. Например, experience.Action
является timeseries, содержащим действие, наложенное на полюсную корзиной систему агентом на каждом шаге симуляции.
experience.Action
ans = struct with fields:
CartPoleAction: [1×1 timeseries]
env
— СредаСреда, в которой агент действует, заданный как объект среды обучения укрепления, такой как:
Предопределенный MATLAB® или среда Simulink®, созданная с помощью rlPredefinedEnv
Пользовательская среда MATLAB вы создаете с функциями, такими как rlFunctionEnv
или rlCreateEnvTemplate
Пользовательское окружение Simulink вы создаете использование rlSimulinkEnv
Для получения дополнительной информации о создании и конфигурировании сред, см.:
Когда env
является окружением Simulink, вызывая компиляции sim
и моделирует модель, сопоставленную со средой.
agent
— АгентАгент, чтобы обучаться, заданный как укрепление, изучая объект агента, такой как объект rlACAgent
или rlDDPGAgent
или пользовательский агент. Перед симуляцией необходимо сконфигурировать агента и представления критика агента. Для получения дополнительной информации о том, как создать и сконфигурировать агенты для изучения укрепления, смотрите, что Укрепление Изучает Агенты.
simOpts
— Опции симуляцииrlSimulationOptions
Опции симуляции, заданные как объект rlSimulationOptions
. Используйте этот аргумент, чтобы задать такие параметры и опции как:
Количество шагов на симуляцию
Количество симуляций, чтобы запуститься
Для получения дополнительной информации смотрите rlSimulationOptions
.
experience
— Результаты симуляцииРезультаты симуляции, возвращенные как структура или массив структур. Элементы номера f в массиве равны количеству симуляций, заданных опцией 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.