rlFiniteSetSpec

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

Описание

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

Создание

Описание

пример

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

Свойства

расширить все

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

mdl = 'rlSimplePendulumModel';
open_system(mdl)

Создание rlNumericSpec и rlFiniteSetSpec объекты для информации о наблюдении и действии, соответственно.

obsInfo = rlNumericSpec([3 1]) % vector of 3 observations: sin(theta), cos(theta), d(theta)/dt
obsInfo = 
  rlNumericSpec with properties:

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

actInfo = rlFiniteSetSpec([-2 0 2]) % 3 possible values for torque: -2 Nm, 0 Nm and 2 Nm
actInfo = 
  rlFiniteSetSpec with properties:

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

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

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

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

agentBlk = [mdl '/RL Agent'];
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 объект.

Предположим, что допустимые значения для системы с двумя выходами [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