exponenta event banner

treepartition

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

Описание

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

Математически, treepartition - нелинейная функция y = F (x), которая отображает m входов X (t) = [x (t1), x2 (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 - имена входных сигналов, указанных в виде строки или символьного массива, где m - количество входов;

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

  • Range - диапазоны входных сигналов, определяемые как числовая матрица 2 на m, содержащая минимальное и максимальное значения;

Информация о выходном сигнале, заданная как специфичные для свойства значения. 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 - количество входов. 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-на-3 матрица, такая, что запись (k,1) является родоначальником узла k, и записи (k,2) и (k,3) являются левым и правым потомками соответственно.

    • LocalizingVectors: Nоколо-(m+1) матрица, такая, что rВ-й ряд B_r.

    • LocalParVector: Nоколо-(m+1) матрица, такая, что kВ-й ряд C_k.

    • LocalCovMatrix: Nоколо-((m+1)m/2) матрица такая, что kВ-я строка - ковариационная матрица 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 - скаляр, общий для всех элементов разбиения. Ck является 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 не является концевым листом, элемент Pk разбиения разрезается на два элемента разбиения для получения элементов разбиения дочерних узлов. Разрез определяется половинными промежутками (1, x) Bk > 0 или < = 0 (перемещение к левому или правому потомку), где Bk выбирается для улучшения стабильности вычисления наименьших квадратов на секциях в дочерних узлах.

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

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

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

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

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

Не рекомендуется начинать с R2021a

Представлен в R2007a