Создайте модель Simulink для обучения с подкреплением, с помощью образца модели в качестве среды
создает модель Simulink® с именем, заданным env
= createIntegratedEnv(refModel
,newModel
)newModel
и возвращает объект среды обучения с подкреплением, env
, для этой модели. Новая модель содержит блок RL Agent и использует образец модели refModel
как среда обучения с подкреплением для обучения свойство агента задано этим блоком.
[
возвращает блок path в блок RL Agent в новой модели и технических требованиях данных о наблюдении и действии для образца модели, env
,agentBlock
,obsInfo
,actInfo
] = createIntegratedEnv(___)obsInfo
и actInfo
, соответственно.
[___] = createIntegratedEnv(___,
создает модель и интерфейс среды использование порта, наблюдения, и информация о действии задала использование одного или нескольких Name,Value
)Name,Value
парные аргументы.
В этом примере показано, как использовать createIntegratedEnv
создать объект среды, начинающий с модели Simulink, реализующей систему, с которой должен взаимодействовать агент. Такая система часто упоминается как объект, система разомкнутого цикла или ссылочная система, в то время как целая (интегрированная) система включая агента часто упоминается как система замкнутого цикла.
В данном примере используйте летающую модель робота, описанную в, Обучают Агента DDPG Управлять Летающим Роботом как ссылкой (разомкнутый цикл) система.
Откройте летающую модель робота.
open_system('rlFlyingRobotEnv');
Инициализируйте переменные состояния и шаг расчета.
% initial model state variables theta0 = 0; x0 = -15; y0 = 0; % sample time Ts = 0.4;
Создайте модель Simulink IntegratedEnv
содержа летающую модель робота, соединенную в замкнутом цикле с блоком агента. Функция также возвращает среду обучения с подкреплением object env
, использоваться в обучении.
env=createIntegratedEnv('rlFlyingRobotEnv','IntegratedEnv')
env = SimulinkEnvWithAgent with properties: Model: "IntegratedEnv" AgentBlock: "IntegratedEnv/RL Agent" ResetFcn: [] UseFastRestart: 'on'
Функция может также возвратить блок path в блок RL Agent в новой интегрированной модели, а также технических требованиях данных о наблюдении и действии для образца модели.
[~,agentBlk,observationInfo,actionInfo]=createIntegratedEnv('rlFlyingRobotEnv','IntegratedEnv')
agentBlk = 'IntegratedEnv/RL Agent'
observationInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf Name: "observation" Description: [0x0 string] Dimension: [7 1] DataType: "double"
actionInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf Name: "action" Description: [0x0 string] Dimension: [2 1] DataType: "double"
Это полезно в случаях, в которых необходимо изменить описания, пределы или имена в observationInfo
и actionInfo
и позже создайте среду из интегрированной модели IntegratedEnv
, использование функционального rlSimulinkEnv
.
В этом примере показано, как вызвать функциональный createIntegratedEnv
с использованием Имени и пар Значения, чтобы создать интегрированное (замкнутый цикл) окружение Simulink и соответствующий объект среды.
Первый аргумент createIntegratedEnv
функция является именем ссылочной модели Simulink, которая содержит систему, с которой должен взаимодействовать агент. Такая система часто упоминается как объект или система разомкнутого цикла. В данном примере ссылочная система является моделью бака с водой.
Откройте модель бака с водой разомкнутого цикла.
open_system('rlWatertankOpenloop.slx');
Установите время выборки дискретного блока интегратора, используемого, чтобы сгенерировать наблюдение, таким образом, симуляция может запуститься.
Ts=1;
Поскольку входной порт называется u
(вместо action
), и первые и третьи выходные порты называются y
и stop
(вместо observation
и isdone
), используйте пары Имени и Значения, чтобы задать правильное имя при вызове функционального createIntegratedEnv
.
env=createIntegratedEnv('rlWatertankOpenloop','IntegratedWatertank','ActionPortName','u','ObservationPortName','y','IsDonePortName','stop')
env = SimulinkEnvWithAgent with properties: Model: "IntegratedWatertank" AgentBlock: "IntegratedWatertank/RL Agent" ResetFcn: [] UseFastRestart: 'on'
Это создает новую модель IntegratedWatertank
который содержит образец модели, соединенный в замкнутом цикле с блоком агента. Функция также возвращает объект env
среды обучения с подкреплением, использоваться в обучении.
refModel
— Имя образца моделиИмя образца модели в виде строки или вектора символов. Это - модель Simulink, реализующая систему, с которой должен взаимодействовать агент. Такая система часто упоминается как объект, система разомкнутого цикла или ссылочная система, в то время как целая (интегрированная) система включая агента часто упоминается как система замкнутого цикла. Новая модель Simulink использует этот образец модели в качестве динамической модели среды для обучения с подкреплением.
newModel
— Новое имя моделиНовое имя модели в виде строки или вектора символов. createIntegratedEnv
создает модель Simulink с этим именем, но не сохраняет модель.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'IsDonePortName',"stopSim"
устанавливает stopSim
порт образца модели как источник isdone
сигнал.'ObservationPortName'
— Имя выходного порта сигнала наблюдения образца модели"observation"
(значение по умолчанию) | представляет в виде строки | вектор символовВыходной порт сигнала наблюдения образца модели называет в виде разделенной запятой пары, состоящей из 'ObservationPortName'
и строка или вектор символов. Задайте ObservationPortName
когда именем выходного порта сигнала наблюдения образца модели не является "observation"
.
'ActionPortName'
— Имя входного порта действия образца модели"action"
(значение по умолчанию) | представляет в виде строки | вектор символовВходной порт действия образца модели называет в виде разделенной запятой пары, состоящей из 'ActionPortName'
и строка или вектор символов. Задайте ActionPortName
когда именем входного порта действия образца модели не является "action"
.
'RewardPortName'
— Премиальное имя выходного порта образца модели"reward"
(значение по умолчанию) | представляет в виде строки | вектор символовПремиальный выходной порт образца модели называет в виде разделенной запятой пары, состоящей из 'RewardPortName'
и строка или вектор символов. Задайте RewardPortName
когда именем премиального выходного порта образца модели не является "reward"
.
'IsDonePortName'
— Образец модели сделанное имя выходного порта флага"isdone"
(значение по умолчанию) | представляет в виде строки | вектор символовОбразец модели сделанное имя выходного порта флага в виде разделенной запятой пары, состоящей из 'IsDonePortName'
и строка или вектор символов. Задайте IsDonePortName
когда именем сделанного выходного порта флага образца модели не является "isdone"
.
'ObservationBusElementNames'
— Имена наблюдения соединяют шиной листовые элементыИмена наблюдения соединяют шиной листовые элементы, для которых можно создать технические требования в виде массива строк. Чтобы создать спецификации наблюдений для подмножества элементов в объекте шины Simulink, задайте BusElementNames
. Если вы не задаете BusElementNames
, спецификация данных создается для каждого листового элемента в шине.
ObservationBusElementNames
применимо только, когда выходной порт сигнала наблюдения является сигналом шины.
Пример: 'ObservationBusElementNames',["sin" "cos"]
создает технические требования для элементов шины наблюдения с именами "sin"
и "cos"
.
'ObservationDiscreteElements'
— Конечные значения для спецификаций наблюденийКонечные значения для дискретных элементов спецификации наблюдений в виде разделенной запятой пары, состоящей из 'ObservationDiscreteElements'
и массив ячеек пар "имя-значение". Каждая пара "имя-значение" состоит из имени элемента и массива дискретных значений.
Если выходной порт сигнала наблюдения образца модели:
Сигнал шины, задайте имя одного из листовых элементов шины, заданной в ObservationBusElementNames
Сигнал нешины, задайте имя порта наблюдения, как задано ObservationPortName
Заданные дискретные значения должны быть castable к типу данных заданного сигнала наблюдения.
Если вы не задаете дискретные значения для элемента спецификации наблюдений, элемент непрерывен.
Пример: 'ObservationDiscretElements',{'observation',[-1 0 1]}
указывает, что дискретные значения для сигнала наблюдения нешины с портом по умолчанию называют observation
.
Пример: 'ObservationDiscretElements',{'gear',[-1 0 1 2],'direction',[1 2 3 4]}
задает дискретные значения для 'gear'
и 'direction'
листовые элементы сигнала действия шины.
'ActionDiscreteElements'
— Конечные значения для спецификаций действияКонечные значения для дискретных элементов спецификации действия в виде разделенной запятой пары, состоящей из 'ActionDiscreteElements'
и массив ячеек пар "имя-значение". Каждая пара "имя-значение" состоит из имени элемента и массива дискретных значений.
Если входной порт действия образца модели:
Сигнал шины, задайте имя листового элемента шины
Сигнал нешины, задайте имя порта действия, как задано ActionPortName
Заданные дискретные значения должны быть castable к типу данных заданного сигнала действия.
Если вы не задаете дискретные значения для элемента спецификации действия, элемент непрерывен.
Пример: 'ActionDiscretElements',{'action',[-1 0 1]}
указывает, что дискретные значения для сигнала действия нешины с портом по умолчанию называют 'action'
.
Пример: 'ActionDiscretElements',{'force',[-10 0 10],'torque',[-5 0 5]}
задает дискретные значения для 'force'
и 'torque'
листовые элементы сигнала действия шины.
env
— Среда обучения с подкреплениемSimulinkEnvWithAgent
объектИнтерфейс среды обучения с подкреплением, возвращенный как SimulinkEnvWithAgent
объект.
agentBlock
— Блок path с блоком агентаБлок path к агенту блокируется в новой модели, возвращенной как вектор символов. Чтобы обучить агента в новой модели Simulink, необходимо создать агента и задать имя агента в блоке RL Agent, обозначенном agentBlock
.
Для получения дополнительной информации о создании агентов смотрите Агентов Обучения с подкреплением.
obsInfo
— Технические требования данных о наблюденииrlNumericSpec
возразите | rlFiniteSetSpec
возразите | массив объектов спецификации данныхТехнические требования данных о наблюдении, возвращенные как одно из следующего:
rlNumericSpec
объект для одной непрерывной спецификации наблюдений
rlFiniteSetSpec
объект для одной дискретной спецификации наблюдений
Массив спецификации данных возражает для нескольких технических требований
actInfo
— Технические требования данных о действииrlNumericSpec
возразите | rlFiniteSetSpec
возразите | массив объектов спецификации данныхТехнические требования данных о действии, возвращенные как одно из следующего:
rlNumericSpec
объект для одной непрерывной спецификации действия
rlFiniteSetSpec
объект для одной дискретной спецификации действия
Массив спецификации данных возражает для нескольких спецификаций действия
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.