exponenta event banner

createIntegratedEnv

Создание модели Simulink для обучения армированию с использованием ссылочной модели в качестве среды

Описание

env = createIntegratedEnv(refModel,newModel) создает модель Simulink ® с именем, указанным newModel и возвращает объект среды обучения усиления, env, для этой модели. Новая модель содержит блок агента RL и использует ссылочную модель refModel как среда обучения усилению для обучения агента, указанного этим блоком.

пример

[env,agentBlock,obsInfo,actInfo] = createIntegratedEnv(___) возвращает путь к блоку агента RL в новой модели и спецификации данных наблюдения и действий для ссылочной модели, obsInfo и actInfoсоответственно.

пример

[___] = createIntegratedEnv(___,Name,Value) создает модель и интерфейс среды с использованием информации о портах, наблюдениях и действиях, указанной с помощью одного или нескольких Name,Value аргументы пары.

Примеры

свернуть все

В этом примере показано, как использовать createIntegratedEnv создание объекта среды, начиная с модели Simulink, реализующей систему, с которой работает агент. Такую систему часто называют установкой, системой с разомкнутым контуром или эталонной системой, в то время как всю (интегрированную) систему, включающую агент, часто называют системой с замкнутым контуром.

Для этого примера используйте модель летающего робота, описанную в документе Train DDPG Agent to Control Flying Robot, в качестве эталонной системы (с разомкнутым контуром).

Откройте модель летающего робота.

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 содержит ссылочную модель, соединенную замкнутым контуром с блоком агента. Функция также возвращает объект среды обучения усиления, который будет использоваться для обучения.

Входные аргументы

свернуть все

Имя ссылочной модели, указанное как строковый или символьный вектор. Это модель Simulink, реализующая систему, с которой агент должен взаимодействовать. Такую систему часто называют установкой, системой с разомкнутым контуром или эталонной системой, в то время как всю (интегрированную) систему, включающую агент, часто называют системой с замкнутым контуром. Новая модель Simulink использует эту ссылочную модель в качестве динамической модели среды для обучения армированию.

Имя новой модели, указанное как строковый или символьный вектор. createIntegratedEnv создает модель Simulink с таким именем, но не сохраняет модель.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'IsDonePortName',"stopSim" устанавливает stopSim порт ссылочной модели в качестве источника isdone сигнал.

Имя выходного порта наблюдения ссылочной модели, указанное как разделенная запятыми пара, состоящая из 'ObservationPortName' и вектор строки или символа. Определить ObservationPortName если имя выходного порта наблюдения ссылочной модели не "observation".

Имя входного порта действия ссылочной модели, указанное как разделенная запятыми пара, состоящая из 'ActionPortName' и вектор строки или символа. Определить ActionPortName если имя входного порта действия ссылочной модели не "action".

Имя выходного порта вознаграждения ссылочной модели, указанное как пара, разделенная запятыми, состоящая из 'RewardPortName' и вектор строки или символа. Определить RewardPortName если имя порта вывода вознаграждения ссылочной модели не "reward".

Имя выходного порта done flag ссылочной модели, указанное как разделенная запятыми пара, состоящая из 'IsDonePortName' и вектор строки или символа. Определить IsDonePortName если имя выходного порта done flag ссылочной модели не "isdone".

Имена элементов листа шины наблюдения, для которых необходимо создать спецификации, указанные как строковый массив. Чтобы создать спецификации наблюдения для подмножества элементов в объекте шины Simulink, укажите BusElementNames. Если не указать BusElementNamesдля каждого листового элемента в шине создается спецификация данных.

ObservationBusElementNames применяется только в том случае, если выходной порт наблюдения является сигналом шины.

Пример: 'ObservationBusElementNames',["sin" "cos"] создает спецификации для элементов шины наблюдения с именами "sin" и "cos".

Конечные значения для элементов спецификации дискретного наблюдения, определяемые как разделенная запятыми пара, состоящая из 'ObservationDiscreteElements' и массив ячеек пар имя-значение. Каждая пара имя-значение состоит из имени элемента и массива дискретных значений.

Если выходной порт наблюдения ссылочной модели:

  • Сигнал шины, укажите имя одного из элементов листа шины, указанного в ObservationBusElementNames

  • Сигнал без шины, укажите имя порта наблюдения, как указано ObservationPortName

Указанные дискретные значения должны быть привязаны к типу данных указанного сигнала наблюдения.

Если дискретные значения для элемента спецификации наблюдения не указаны, элемент является непрерывным.

Пример: 'ObservationDiscretElements',{'observation',[-1 0 1]} задание дискретных значений для сигнала наблюдения, не связанного с шиной, с именем порта по умолчанию observation.

Пример: 'ObservationDiscretElements',{'gear',[-1 0 1 2],'direction',[1 2 3 4]} задает дискретные значения для 'gear' и 'direction' листовые элементы сигнала действия шины.

Конечные значения для элементов спецификации дискретного действия, определяемые как разделенная запятыми пара, состоящая из 'ActionDiscreteElements' и массив ячеек пар имя-значение. Каждая пара имя-значение состоит из имени элемента и массива дискретных значений.

Если входной порт действия ссылочной модели:

  • Сигнал шины, укажите имя листового элемента шины

  • Сигнал без шины, укажите имя порта действия, как указано ActionPortName

Указанные дискретные значения должны быть привязаны к типу данных указанного сигнала действия.

Если дискретные значения для элемента спецификации действия не указаны, элемент является непрерывным.

Пример: 'ActionDiscretElements',{'action',[-1 0 1]} задание дискретных значений для сигнала без действия шины с именем порта по умолчанию 'action'.

Пример: 'ActionDiscretElements',{'force',[-10 0 10],'torque',[-5 0 5]} задает дискретные значения для 'force' и 'torque' листовые элементы сигнала действия шины.

Выходные аргументы

свернуть все

Интерфейс среды обучения для усиления, возвращенный как SimulinkEnvWithAgent объект.

Путь блокировки к блоку агента в новой модели, возвращаемый в виде символьного вектора. Чтобы обучить агента в новой модели Simulink, необходимо создать агента и указать его имя в блоке агента RL, указанном agentBlock.

Дополнительные сведения о создании агентов см. в разделе Усиление агентов обучения.

Технические характеристики данных наблюдения, возвращаемые как одно из следующих:

  • rlNumericSpec объект для одной спецификации непрерывного наблюдения

  • rlFiniteSetSpec объект для одной спецификации дискретного наблюдения

  • Массив объектов спецификации данных для нескольких спецификаций

Спецификации данных действий, возвращаемые как одно из следующих:

  • rlNumericSpec объект для одной спецификации непрерывного действия

  • rlFiniteSetSpec объект для одной спецификации дискретного действия

  • Массив объектов спецификации данных для нескольких спецификаций действий

Представлен в R2019a