В данном примере рассмотрите модель rlSimplePendulumModel
Simulink. Модель является простым лишенным трения маятником, который первоначально зависает в нисходящем положении.
Откройте модель.
Присвойте информацию о блоке path агента и создайте rlNumericSpec
и объекты rlFiniteSetSpec
для получения информации о наблюдении и действии. Можно использовать запись через точку, чтобы присвоить значения свойств объектов rlFiniteSetSpec
и rlNumericSpec
.
obsInfo =
rlNumericSpec with properties:
LowerLimit: -Inf
UpperLimit: Inf
Name: [0×0 string]
Description: [0×0 string]
Dimension: [3 1]
DataType: "double"
actInfo =
rlFiniteSetSpec with properties:
Elements: [2 1]
Name: [0×0 string]
Description: [0×0 string]
Dimension: [1 1]
DataType: "double"
Создайте среду обучения укрепления для модели Simulink с помощью информации, извлеченной на предыдущих шагах.
env =
SimulinkEnvWithAgent with properties:
Model: "rlSimplePendulumModel"
AgentBlock: "rlSimplePendulumModel/RL Agent"
ResetFcn: []
UseFastRestart: 'on'
Можно также включать функцию сброса, использующую запись через точку. В данном примере рассмотрите случайным образом инициализирующий theta0
в рабочем пространстве модели.
env =
SimulinkEnvWithAgent with properties:
Model: "rlSimplePendulumModel"
AgentBlock: "rlSimplePendulumModel/RL Agent"
ResetFcn: @(in)setVariable(in,'theta0',randn,'Workspace',mdl)
UseFastRestart: 'on'