treepartition

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

Описание

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 m вектором, Ck является 1 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 является количеством входных сигналов. Input свойства для каждого входного сигнала следующие:

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

  • Mean — Среднее значение входных сигналов в виде числового скаляра

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

Информация о выходном сигнале в виде специфичных для свойства значений. Output свойства следующие:

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

  • Mean — Среднее значение выходного сигнала в виде числового скаляра

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

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

  • Value — Значение L в виде 1 m вектором.

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

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

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

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

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

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

  • Value — Возместите значение в виде скаляра.

  • Free — Опция, чтобы обновить Value во время оценки в виде логического скаляра. Программное обеспечение соблюдает Free спецификация false только если значение Value isfinite. Значением по умолчанию является 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

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

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

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

    • LocalizingVectorsN- (m+1) матрица, такая, что rстрокой th является B_r.

    • LocalParVectorN- (m+1) матрица, такая, что kстрокой th является C_k.

    • LocalCovMatrixN- ((m+1)m/2) матрицируйте таким образом что kстрока th является ковариационной матрицей C_k. C_k изменен как вектор-строка.

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

  • SelectedInputIndex — Индексы treepartition входные параметры (см. Input.Name) это используется в качестве входных параметров к нелинейной функции в виде 1 nr целочисленным вектором, где nr является количеством входных параметров. 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 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