exponenta event banner

rlFiniteSetSpec

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

Описание

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

Создание

Описание

пример

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

Свойства

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

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

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

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

Название 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