rlFiniteSetSpec

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

Описание

rlFiniteSetSpec объект задает дискретные технические требования данных о действии или наблюдении для сред обучения с подкреплением.

Создание

Описание

пример

spec = rlFiniteSetSpec(elements) создает спецификацию данных с дискретным набором действий или наблюдений, устанавливая свойство Elements.

Свойства

развернуть все

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

  • Вектор — Задает допустимые числовые значения для одного действия или одного наблюдения.

  • Массив ячеек — Задает допустимые комбинации числового значения, когда у вас есть больше чем одно действие или наблюдение. Каждая запись массива ячеек должна иметь те же размерности.

Имя rlFiniteSetSpec объект в виде строки. Используйте это свойство определить понятное имя для вашего конечного множества.

Описание rlFiniteSetSpec объект в виде строки. Используйте это свойство задать значимое описание значений конечного множества.

Это свойство доступно только для чтения.

Размер каждого элемента в виде вектора.

Если вы задаете Elements как вектор, затем Dimension [1 1]. В противном случае, если вы задаете массив ячеек, затем Dimension указывает на размер записей в Elements.

Это свойство доступно только для чтения.

Информация о типе данных в виде строки.

Функции объекта

rlSimulinkEnvСоздайте среду обучения с подкреплением с помощью динамической модели, реализованной в Simulink
rlFunctionEnvЗадайте пользовательскую динамику среды обучения с подкреплением с помощью функций
rlRepresentation(Не рекомендуемый) представление Модели для агентов обучения с подкреплением

Примеры

свернуть все

В данном примере рассмотрите rlSimplePendulumModel Модель Simulink. Модель является простым лишенным трения маятником, который первоначально висит в нисходящем положении.

Откройте модель.

mdl = 'rlSimplePendulumModel';
open_system(mdl)

Присвойте информацию о блоке path агента и создайте rlNumericSpec и rlFiniteSetSpec объекты для получения информации о наблюдении и действии. Можно использовать запись через точку, чтобы присвоить значения свойств rlNumericSpec и rlFiniteSetSpec объекты.

agentBlk = [mdl '/RL Agent'];
obsInfo = rlNumericSpec([3 1])
obsInfo = 
  rlNumericSpec with properties:

     LowerLimit: -Inf
     UpperLimit: Inf
           Name: [0x0 string]
    Description: [0x0 string]
      Dimension: [3 1]
       DataType: "double"

actInfo = rlFiniteSetSpec([2 1])
actInfo = 
  rlFiniteSetSpec with properties:

       Elements: [2x1 double]
           Name: [0x0 string]
    Description: [0x0 string]
      Dimension: [1 1]
       DataType: "double"

obsInfo.Name = 'observations';
actInfo.Name = 'torque';

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

env = rlSimulinkEnv(mdl,agentBlk,obsInfo,actInfo)
env = 
  SimulinkEnvWithAgent with properties:

             Model: "rlSimplePendulumModel"
        AgentBlock: "rlSimplePendulumModel/RL Agent"
          ResetFcn: []
    UseFastRestart: 'on'

Можно также включать функцию сброса, использующую запись через точку. В данном примере рассмотрите случайным образом инициализирующий theta0 в рабочем пространстве модели.

env.ResetFcn = @(in) setVariable(in,'theta0',randn,'Workspace',mdl)
env = 
  SimulinkEnvWithAgent with properties:

             Model: "rlSimplePendulumModel"
        AgentBlock: "rlSimplePendulumModel/RL Agent"
          ResetFcn: @(in)setVariable(in,'theta0',randn,'Workspace',mdl)
    UseFastRestart: 'on'

Если агент для вашего агента обучения с подкреплением имеет несколько выходных параметров, каждого с дискретным пространством действий, можно задать возможные дискретные комбинации действий с помощью rlFiniteSetSpec объект.

Предположим, что допустимыми значениями для 2D выходной системы является [1 2] для первого выхода и [10 20 30] для второго выхода. Создайте спецификацию дискретного пространства действий для всех возможных входных комбинаций.

actionSpec = rlFiniteSetSpec({[1 10],[1 20],[1 30],...
                              [2 10],[2 20],[2 30]})
actionSpec = 
  rlFiniteSetSpec with properties:

       Elements: {6x1 cell}
           Name: [0x0 string]
    Description: [0x0 string]
      Dimension: [1 2]
       DataType: "double"

Введенный в R2019a