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