Создайте модель 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.