treepartition

Нелинейная функция с древовидным разбиением для нелинейных моделей ARX

Описание

A treepartition объект реализует древовидную нелинейную функцию и является нелинейной функцией отображения для оценки нелинейных моделей ARX. Функция отображения, которая также упоминается как nonlinearity, использует комбинацию линейных весов, смещения и нелинейной функции, чтобы вычислить ее выход. Нелинейная функция содержит treepartition модули, которые работают с радиальной комбинацией входов.

Математически, treepartition является нелинейной функцией y=F(x) который отображает m входы X (t) = [x (t 1), x 2 (t),..., xm (t)]T в скалярный выходной y (t). F является кусочно-линейной (аффинной) функцией x:

F(x)=xL+[1,x]Ck+d

Здесь x принадлежит Pk разбиения. L является вектором 1-by- m, Ck является 1-by- m+ 1 вектор, а Pk является разбиением x - пространство.

Для получения дополнительной информации о функции отображения F (x) см. Алгоритмы.

Использование treepartition как значение OutputFcn свойство idnlarx модель. Для примера задайте treepartition когда вы оцениваете idnlarx модель с помощью следующей команды.

sys = nlarx(data,regressors,treepartition)
Когда nlarx оценивает модель, она по существу оценивает параметры treepartition функция.

Можно сконфигурировать treepartition функция для фиксации параметров. Чтобы опустить линейный компонент, установите LinearFcn.Use на false. Использовать evaluate вычислить выход функции для заданного вектора входов.

Создание

Описание

пример

T = treepartition создает treepartition t объекта это двоичный древовидный объект нелинейного отображения. Функция вычисляет количество J узлов дерева, представленных свойством NumberOfUnits, автоматически во время оценки. Дерево имеет количество листьев, равное 2^(J+1)-1.

T = treepartition(numUnits) задает количество treepartition узлы numUnits.

Входные параметры

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

Количество модулей, заданное как 'auto' или положительное целое число. numUnits определяет количество узлов дерева.

Этот аргумент устанавливает T.NonlinearFcn.NumberOfUnits свойство.

Свойства

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

Информация входного сигнала для сигналов, используемых для оценки, задается как векторы m значений свойств, где m - количество входных сигналов. The Input свойства для каждого входного сигнала следующие:

  • Name - Имена входных сигналов, заданные как 1-байт- m строковый или символьный массив, где m количество входов

  • Mean - Среднее значение входных сигналов, заданное в виде числа

  • Range - Области значений входных сигналов, заданные как 2-байт- m числовой массив, который содержит минимальное и максимальное значения

Выход сигнале, заданная как значения конкретных свойств. The Output свойства следующие:

  • Name - Имя выходного сигнала, заданное как строка или символьный массив

  • Mean - Среднее значение выходного сигнала, заданное в виде числа

  • Range - Область значений выходного сигнала, заданный как числовой массив 2 на 1, который содержит минимальное и максимальное значения

Параметры линейной функции, заданные следующим образом:

  • Value - Значение L, заданное как вектор 1 байт m.

  • Free - Опция обновления записей Value во время оценки. задается как логический скаляр. Программа чтит Free спецификация только, если начальное значение Value является конечным. Значение по умолчанию true.

  • Minimum - Минимальная граница Value, заданный как вектор 1-байт- p. Если Minimum задается с конечным значением и начальным значением Value является конечным, тогда программное обеспечение применяет эту минимальную границу во время оценки модели.

  • Maximum - Максимальная граница на Value, заданный как вектор 1-байт- p. Если Maximum задается с конечным значением и начальным значением Value является конечным, тогда программное обеспечение применяет эту максимальную границу во время оценки модели.

  • SelectedInputIndex - Индексы treepartition входы (см. Input.Name), которые используются в качестве входов в линейную функцию, заданную как 1-байт- nr целочисленный вектор, где nr - количество входов. The RegressorUsage свойство idnlarx модель определяет эти индексы.

Программа вычисляет значение LinearFcn как (X-X0)'*L, где X0 - среднее значение регрессора.

Параметры срока смещения, заданные следующим образом:

  • Value - Значение смещения, заданное как скаляр.

  • Free - Опция обновления Value во время оценки, заданной как скаляр логический. Программа чтит Free спецификация false только если значение Value является конечным. Значение по умолчанию true.

  • Minimum - Минимальная граница Value, заданный как числовой скаляр или –Inf. Если Minimum задается с конечным значением и значением Value является конечным, тогда программное обеспечение применяет эту минимальную границу во время оценки модели. Значение по умолчанию -Inf.

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

Параметры нелинейной функции, заданные следующим образом:

  • NumberOfUnits - Количество модулей виде 'auto' или положительное целое число. NumberOfUnits определяет число узлов, N в дереве. Когда N установлено на:

    • 'auto'программа выбирает N путем обрезки.

    • положительное целое число перед оценкой, затем программное обеспечение устанавливает N на самое большое значение вида 2^(J+1)-1 меньше этого целого числа.

  • Parameters - расчетные значения параметров treepartition., указанный как в следующей таблице:

    Имя поляОписание
    SampleLength Длина оценочных данных
    NoiseVarianceОценочное отклонение шума в оценочных данных
    Tree

    Структура, содержащая параметры дерева, как описано в следующем списке:

    • TreeLevelPntr: N-by-1 вектор, содержащий уровни j каждого узла.

    • AncestorDescendantPntr: N-by-3 матрица, такая что запись (k,1) является предком узла k, и записи (k,2) и (k,3) являются левым и правым потомками, соответственно.

    • LocalizingVectors: N-by- (m+1) матрица, такая что rвторая строка B_r.

    • LocalParVector: N-by- (m+1) матрица, такая что kвторая строка C_k.

    • LocalCovMatrix: N-by- ((m+1)m/2) матрица такая, что kth row - ковариационная матрица C_k. C_k изменяется как вектор-строка.

  • Free - Опция для оценки параметров, заданная как логический скаляр. Если все параметры имеют конечные значения, например, когда treepartition объект соответствует ранее оцененной модели, затем настраивая Free на false приводит к тому, что параметры нелинейного компонента функционального F (X) остаются неизменными во время оценки. Значение по умолчанию true.

  • SelectedInputIndex - Индексы treepartition входы (см. Input.Name), которые используются в качестве входов в нелинейную функцию, заданную как 1-байт- nr целочисленный вектор, где nr - количество входов. The RegressorUsage свойство определяет эти индексы.

  • Structure - Расширенные опции, которые влияют на начальную модель.

    СвойствоОписаниеДефолт
    FinestCell

    Целое число или вектор символов, задающий минимальное количество точек данных в наименьшем разделе.

    'auto'
    ThresholdПороговый параметр, используемый адаптивным алгоритмом обрезки. Меньшее пороговое значение соответствует более короткой ветви, которая заканчивается активным разделом D_a. Более высокое пороговое значение приводит к более длинной ветви1.0
    StabilizerШтрафной параметр штрафованного алгоритма наименьших квадратов, используемый для вычисления локальных векторов параметра C_k. Более высокое значение стабилизатора улучшает стабильность, но может ухудшить точность оценки методом наименьших квадратов.1e-6

Примеры

свернуть все

Загрузите данные

load iddata1 z1

Создайте treepartition объект с настройками по умолчанию.

T = treepartition
T = 
Tree Partition

 Nonlinear Function: Tree Partition with number of units chosen automatically.
 Linear Function: uninitialized
 Output Offset: uninitialized

           Input: [1×1 idpack.Channel]
          Output: [1×1 idpack.Channel]
       LinearFcn: [1×1 nlident.internal.StructuredFcn]
    NonlinearFcn: [1×1 nlident.internal.TreeFcn]
          Offset: [1×1 nlident.internal.Offset]

Оцените нелинейную модель ARX с помощью T.

sys = nlarx(z1,[2 2 1],T);

Просмотрите выходную функцию sys.

disp(sys.OutputFcn)
Tree Partition
Inputs: y1(t-1), y1(t-2), u1(t-1), u1(t-2)
Output: y1

 Nonlinear Function: Tree Partition with 31 units.
 Linear Function: initialized to [1.19 -0.419 0.873 0.844]
 Output Offset: initialized to 0.249

           Input: [1×1 idpack.Channel]
          Output: [1×1 idpack.Channel]
       LinearFcn: [1×1 nlident.internal.StructuredFcn]
    NonlinearFcn: [1×1 nlident.internal.TreeFcn]
          Offset: [1×1 nlident.internal.Offset]

T теперь имеет 31 узел.

Загрузите данные

load iddata7 z7
ze = z7(1:300);

Создайте treepartition объект и используйте запись через точку для того, чтобы задать параметры.

T = treepartition;
T.Offset.Value = 0.2;
T.Offset.Free = false;
T.NonlinearFcn.NumberOfUnits = 30;

Задайте регрессоры модели.

Reg1 = linearRegressor({'y1','u1'},{1:4, 0:4});
Reg2 = polynomialRegressor({'y1','u1'},{1:2, 0:2},2);

Оцените нелинейную модель ARX.

sys = nlarx(ze, [Reg1;Reg2], T);

Просмотр OutputFcn постэстимации свойства.

disp(sys.OutputFcn)
Tree Partition
Inputs: y1(t-1), y1(t-2), y1(t-3), y1(t-4), u1(t), u1(t-1), u1(t-2), u1(t-3), u1(t-4), y1(t-1)^2, y1(t-2)^2, u1(t)^2, u1(t-1)^2, u1(t-2)^2
Output: y1

 Nonlinear Function: Tree Partition with 15 units.
 Linear Function: initialized to [0.0725 0.895 -0.0727 -0.475 0.0725 -0.106 0.0304 1.02 1.43 0.000459 -0.00473 0 0 0]
 Output Offset: fixed to 0.2

           Input: [1×1 idpack.Channel]
          Output: [1×1 idpack.Channel]
       LinearFcn: [1×1 nlident.internal.StructuredFcn]
    NonlinearFcn: [1×1 nlident.internal.TreeFcn]
          Offset: [1×1 nlident.internal.Offset]
disp(sys.OutputFcn.Input)
  Channel with properties:

     Name: [1×14 string]
     Mean: [0.2033 0.2035 0.2149 0.2159 0.0405 0.0338 0.0338 0.0338 0.0405 10.0493 10.0491 1 1 1]
    Range: [2×14 double]
disp(sys.OutputFcn.Offset)
Output Offset (fixed to 0.2)

      Value: 0.2000
    Minimum: -Inf
    Maximum: Inf
       Free: 0
disp(sys.OutputFcn.NonlinearFcn)
  TreeFcn with properties:

         NumberOfUnits: 15
             Structure: [1×1 nlident.internal.TreeStructure]
            Parameters: [1×1 nlident.internal.TreeFcnParameters]
                  Free: 1
    SelectedInputIndex: [1 2 3 4 5 6 7 8 9 10 11 12 13 14]

Алгоритмы

F отображения определяется диадическим P раздела x -пространство, таким образом, что на каждом элементе раздела Pk, F является линейным отображением. Когда x принадлежит Pk, F (x) задается:

F(x)=xL+[1,x]Ck+d

где L является вектором 1-by m, а d является скалярным общим для всех элементов разбиения. C k является вектором 1-бай- (m + 1).

F отображения и связанные P раздела x -пространство вычисляются следующим образом:

  1. Учитывая значение J, диадического дерева с J уровнями и N = 2J–1 узлы инициализированы.

  2. Каждый узел на уровне 1 < j < J имеет два потомка на уровне j + 1 и один родительский элемент на уровне j - 1.

    • Корневой узел на уровне 1 имеет два потомка.

    • Узлы на J уровне являются конечными листьями дерева и имеют один родительский элемент.

  3. Один элемент разбиения связан с каждым узлом k дерева.

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

    • Когда узел k не является оконечным листом, элемент P k разбиения разрезается на две части, чтобы получить элементы разбиения дочерних узлов. Вырез определяется полупространствами (1, x) Bk > 0 или < = 0 (перемещение влево или вправо потомка), где Bk выбирается для улучшения устойчивости наименьших квадратов расчета на разбиениях в дочерних узлах.

  4. Когда значение отображения F, заданное как treepartition объект, вычисляется в x, адаптивный алгоритм выбирает активный узел k дерева в ветви разделов, которые содержат x.

Когда Focus опция в nlarxOptions является 'prediction', treepartition использует нетеративный метод для оценки параметров. Итерационные уточнения не возможны для моделей, содержащих эту оценку нелинейности.

Вы не можете использовать treepartition когда Focus является 'simulation' поскольку этот нелинейный объект отображения не является дифференцируемым. Минимизация ошибки симуляции требует дифференцируемых нелинейных функций.

Вопросы совместимости

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

Не рекомендуемый запуск в R2021a

Введенный в R2007a