Создайте модель Simulink для обучения с подкреплением, используя образец модели как окружение
создает Simulink® модель с именем, заданным как env
= createIntegratedEnv(refModel
,newModel
)newModel
и возвращает объект окружения обучения с подкреплением, env
, для этой модели. Новая модель содержит блок RL Agent и использует образец модели refModel
как окружение обучения с подкреплением для настройки агента, заданного этим блоком.
[
возвращает путь блока к блоку RL Agent в новой модели и спецификации данных о наблюдениях и действиях для образца модели, env
,agentBlock
,obsInfo
,actInfo
] = createIntegratedEnv(___)obsInfo
и actInfo
, соответственно.
[___] = createIntegratedEnv(___,
создает модель и интерфейс окружения с использованием информации о порте, наблюдении и действии, заданной с помощью одной или нескольких Name,Value
)Name,Value
аргументы в виде пар.
В этом примере показано, как использовать createIntegratedEnv
создать объект окружения, начиная с модели Simulink, которая реализует систему, с которой работает агент. Такая система часто упоминается как объект, разомкнутый контур система или ссылка система, в то время как вся (интегрированная) система, включая агента, часто упоминается как система с обратной связью.
В этом примере используйте модель летающего робота, описанную в Train DDPG Agent, чтобы управлять летающим роботом в качестве ссылки (разомкнутого контура).
Откройте модель летающего робота.
open_system('rlFlyingRobotEnv')
Инициализируйте переменные состояния и шаг расчета.
% initial model state variables theta0 = 0; x0 = -15; y0 = 0; % sample time Ts = 0.4;
Создайте модель Simulink IntegratedEnv
содержащий модель летающего робота, соединенную в замкнутом цикле с блоком агента. Функция также возвращает объект окружения обучения с подкреплением env
будет использоваться для обучения.
env = createIntegratedEnv('rlFlyingRobotEnv','IntegratedEnv')
env = SimulinkEnvWithAgent with properties: Model : IntegratedEnv AgentBlock : IntegratedEnv/RL Agent ResetFcn : [] UseFastRestart : on
Функция может также вернуть путь блока к блоку Агента RL в новой интегрированной модели, а также наблюдения и спецификации действия для образца модели.
[~,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
использование пар "имя-значение" для задания имен портов.
Первый аргумент createIntegratedEnv
- имя ссылочной модели Simulink, содержащей систему, с которой должен взаимодействовать агент. Такая система часто упоминается как объект или разомкнутая система. В данном примере эталонная система является моделью бака с водой.
Откройте модель бака с водой без разомкнутого контура.
open_system('rlWatertankOpenloop.slx')
Установите шаг расчета дискретного блока интегратора, используемого для генерации наблюдения, чтобы симуляция могла выполняться.
Ts = 1;
Порт входа называется u
(вместо action
), и первый и третий выходные порты называются y
и stop
(вместо observation
и isdone
). Задайте имена портов, используя пары "имя-значение".
env = createIntegratedEnv('rlWatertankOpenloop','IntegratedWatertank',... 'ActionPortName','u','ObservationPortName','y','IsDonePortName','stop')
env = SimulinkEnvWithAgent with properties: Model : IntegratedWatertank AgentBlock : IntegratedWatertank/RL Agent ResetFcn : [] UseFastRestart : on
Новая модель IntegratedWatertank
содержит образец модели, соединенную в системе с блоком агента. Функция также возвращает объект окружения обучения с подкреплением, который будет использоваться для обучения.
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
Nonbus сигнал, задайте имя порта наблюдения, как задано ObservationPortName
Заданные дискретные значения должны быть приведены к типу данных заданного сигнала наблюдения.
Если вы не задаете дискретные значения для элемента спецификации наблюдений, элемент непрерывен.
Пример: 'ObservationDiscretElements',{'observation',[-1 0 1]}
задает дискретные значения для небусового сигнала наблюдения с именем порта по умолчанию observation
.
Пример: 'ObservationDiscretElements',{'gear',[-1 0 1 2],'direction',[1 2 3 4]}
задает дискретные значения для 'gear'
и 'direction'
листовые элементы массива сигнала действия шины.
'ActionDiscreteElements'
- Конечные значения для спецификаций действияКонечные значения для дискретных элементов спецификации действия, заданные как разделенная разделенными запятой парами, состоящая из 'ActionDiscreteElements'
и массив ячеек из пар "имя-значение". Каждая пара "имя-значение" состоит из имени элемента и массива дискретных значений.
Если входной порт действия образца модели:
Сигнал шины, задайте имя листового элемента шины
Nonbus сигнал, задайте имя порта действия, как задано ActionPortName
Заданные дискретные значения должны быть приведены к типу данных заданного сигнала действия.
Если вы не задаете дискретные значения для элемента спецификации действия, элемент непрерывен.
Пример: 'ActionDiscretElements',{'action',[-1 0 1]}
задает дискретные значения для небусового сигнала действия с именем порта по умолчанию 'action'
.
Пример: 'ActionDiscretElements',{'force',[-10 0 10],'torque',[-5 0 5]}
задает дискретные значения для 'force'
и 'torque'
листовые элементы массива сигнала действия шины.
env
- окружение обучения с подкреплениемSimulinkEnvWithAgent
объектИнтерфейс окружения обучения с подкреплением, возвращенный как SimulinkEnvWithAgent
объект.
agentBlock
- Блокируйте путь к блоку агентаБлокируйте путь к блоку агента в новой модели, возвращаемый как вектор символов. Чтобы обучить агента в новой модели Simulink, вы должны создать агента и указать имя агента в блоке RL Agent, указанном agentBlock
.
Для получения дополнительной информации о создании агентов см. Раздел «Агенты обучения с подкреплением».
obsInfo
- Спецификации данных о наблюденииrlNumericSpec
| объекта rlFiniteSetSpec
объект | массив объектов спецификаций данныхСпецификации данных о наблюдении, возвращенные как одно из следующего:
rlNumericSpec
объект для одной непрерывной спецификации наблюдений
rlFiniteSetSpec
объект для одной дискретной спецификации наблюдений
Массив объектов спецификаций данных для нескольких спецификаций
actInfo
- Спецификации данных о действииrlNumericSpec
| объекта rlFiniteSetSpec
объект | массив объектов спецификаций данныхСпецификации данных о действии, возвращенные как одно из следующего:
rlNumericSpec
объект для одной непрерывной спецификации действия
rlFiniteSetSpec
объект для одной дискретной спецификации действия
Массив объектов спецификации данных для нескольких спецификаций действия
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.