createIntegratedEnv

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

Описание

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

пример

[env,agentBlock,obsInfo,actInfo] = createIntegratedEnv(___) возвращает блок path в блок RL Agent в новой модели и технических требованиях данных о наблюдении и действии для образца модели, 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 среды обучения с подкреплением, использоваться в обучении.

Входные параметры

свернуть все

Имя образца модели в виде строки или вектора символов. Это - модель 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".

Образец модели сделанное имя выходного порта флага в виде разделенной запятой пары, состоящей из 'IsDonePortName' и строка или вектор символов. Задайте IsDonePortName когда именем сделанного выходного порта флага образца модели не является "isdone".

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

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

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

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

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

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

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

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

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

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

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

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

Если входной порт действия образца модели:

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

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

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

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

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

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

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

свернуть все

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

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

Для получения дополнительной информации о создании агентов смотрите Агентов Обучения с подкреплением.

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

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

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

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

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

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

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

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

Введенный в R2019a