exponenta event banner

tunableSurface

Создание настраиваемой поверхности усиления для планирования усиления

Описание

tunableSurface позволяет параметризовать и настраивать графики усиления, которые представляют собой выигрыши, изменяющиеся в зависимости от одной или нескольких переменных планирования.

Для настройки удобно параметризовать переменное усиление как гладкую поверхность усиления вида:

K (n (λ)) = γ [K0 + K1F1 (n (λ)) +... + KMFM (n (λ))],

где

  • λ - вектор переменных планирования.

  • n (λ) - нормирующая функция (см. Normalization свойство выходного аргумента K).

  • γ - масштабный коэффициент (см. Normalization свойство выходного аргумента K).

  • F1,...,FM являются выбранными пользователем базовыми функциями.

  • K0,...,KM коэффициенты, подлежащие настройке

В качестве базисных функций можно использовать термины в универсальном многочленовом расширении. Или, когда известна ожидаемая форма K (λ), можно использовать более специфические функции. Затем можно использоватьsystune для настройки коэффициентов, K0,...,KM в соответствии с требованиями проекта, в диапазоне значений переменных планирования.

пример

K = tunableSurface(name,K0init,domain,shapefcn) создает настраиваемую поверхность усиления:

K (n (λ)) = γ [K0 + K1F1 (n (λ)) +... + KMFM (n (λ))].

Настраиваемая поверхность K сохраняет базовые функции, указанные shapefcn и дискретный набор (расчетные точки), задаваемый domain. Настраиваемая усилительная поверхность имеет настраиваемые коэффициенты K0,...,KM. Значение коэффициента усиления инициализируется постоянным коэффициентом усиления. K0init. Можно комбинировать K с другими статическими или динамическими элементами для построения замкнутой модели системы управления с планированием усиления. Или, использовать K для параметризации таблицы подстановки в slTuner интерфейс с моделью Simulink ®. Затем используйтеsystune настроить K0,...,KM таким образом, чтобы система с замкнутым контуром соответствовала проектным требованиям в выбранных точках проектирования.

K = tunableSurface(name,K0init,domain) создает плоскую поверхность с постоянным настраиваемым коэффициентом усиления. Этот синтаксис эквивалентен tunableGain(name,K0init).

Примеры

свернуть все

Создайте скалярный коэффициент усиления K, который изменяется как квадратичная функция t:

K (t) = K0 + K1n (t) + K2 (n (t)) 2.

Эта поверхность усиления может представлять усиление, которое изменяется со временем. Коэффициенты K0, K1 и K2 являются настраиваемыми параметрами этого изменяющегося во времени усиления. В этом примере предположим, что t изменяется от 0 до 40. В этом случае функция нормализации n (t) = (t-20 )/20.

Чтобы представить настраиваемую поверхность усиления K (t) в MATLAB ®, сначала выберите вектор из t значений, которые являются расчетными точками системы. Например, если точки проектирования представляют собой снимки изменяющейся во времени системы каждые 5 секунд от времени t = 0 до t = 40, используйте следующую сетку выборки:

t = 0:5:40;
domain = struct('t',t);

Задайте квадратичную функцию для переменного коэффициента усиления.

shapefcn = @(x) [x,x^2];

shapefcn является дескриптором анонимной векторной функции. Каждая запись в векторе дает член в полиномиальном расширении, который описывает переменное усиление. tunableSurface неявно предполагает постоянную функцию f0 (t) = 1, поэтому ее не нужно включать вshapefcn.

Создайте настраиваемую поверхность усиления K (t ).

K = tunableSurface('K',1,domain,shapefcn)
K = 
  Tunable surface "K" of scalar gains with:
    * Scheduling variables: t
    * Basis functions: t,t^2
    * Design points: 1x9 grid of t values
    * Normalization: default (from design points)

Дисплей суммирует характеристики поверхности усиления, включая расчетные точки и базовые функции. Изучить свойства K.

get(K)
    BasisFunctions: @(x)[x,x^2]
      Coefficients: [1x3 realp]
      SamplingGrid: [1x1 struct]
     Normalization: [1x1 struct]
              Name: 'K'

Coefficients свойство перестраиваемой поверхности - массив перестраиваемых коэффициентов [K0, K1, K2], хранящийся как значение массиваrealp блок.

Теперь можно использовать настраиваемую поверхность в модели системы управления. Для настройки в MATLAB, межсоединение K с другими элементами системы управления так же, как и при использовании блока Control Design Block для создания настраиваемой модели системы управления. Для настройки в Simulink ® используйтеsetBlockParam сделать K параметризация настраиваемого блока в slTuner интерфейс. При настройке модели или slTuner интерфейс с использованием systuneрезультирующая модель или интерфейс содержит настроенные значения коэффициентов K0, K1 и K2.

После настройки коэффициентов можно просмотреть форму результирующей кривой усиления с помощью viewSurf команда. В этом примере вместо настройки вручную установите коэффициенты на ненулевые значения. Просмотрите результирующий выигрыш как функцию времени.

Ktuned = setData(K,[12.1,4.2,2]);
viewSurf(Ktuned)

Figure contains an axes. The axes with title Gain K(t) contains an object of type line.

viewSurf отображает коэффициент усиления как функцию переменной планирования для диапазона значений переменных планирования, указанных domain и хранится в SamplingGrid свойство поверхности усиления.

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

Предположим, что первая переменная α - это угол падения, который находится в диапазоне от 0 до 15 градусов, а вторая переменная V - это скорость, которая находится в диапазоне от 300 до 600 м/с. По умолчанию нормализованные переменные:

x = α-7,57,5, y = V-450150.

Поверхность усиления моделируется как:

K (α, V) = K0 + K1x + K2y + K3xy,

где K0,...,K3 - настраиваемые параметры.

Создайте сетку расчетных точек (α, V), которые линейно разнесены в α и V. Эти расчетные точки представляют собой значения переменных планирования, используемые для настройки коэффициентов поверхности усиления. Они должны соответствовать значениям параметров, при которых производится выборка завода.

[alpha,V] = ndgrid(0:3:15,300:50:600);

Эти массивы, alpha и V, представляют независимое изменение двух переменных планирования, каждая из которых проходит через весь диапазон. Поместите их в структуру, чтобы определить точки проектирования для настраиваемой поверхности.

domain = struct('alpha',alpha,'V',V);

Создайте базовые функции, описывающие билинейное расширение.

shapefcn = @(x,y) [x,y,x*y];  % or use polyBasis('canonical',1,2)

В массиве, возвращенном shapefcn, базовыми функциями являются:

F1 (x, y) = xF2 (x, y) = yF3 (x, y) = xy.

Создайте настраиваемую поверхность усиления.

K = tunableSurface('K',1,domain,shapefcn);

Настраиваемую поверхность можно использовать в качестве параметризации для блока таблицы подстановки или блока функции MATLAB в модели Simulink. Или используйте команды взаимодействия модели, чтобы включить ее в качестве настраиваемого элемента в систему управления, смоделированную в MATLAB. После настройки коэффициентов можно исследовать результирующую поверхность усиления, используя viewSurf команда. В этом примере вместо настройки вручную установите коэффициенты на ненулевые значения и просмотрите результирующий коэффициент усиления.

Ktuned = setData(K,[100,28,40,10]);
viewSurf(Ktuned)

Figure contains an axes. The axes with title Gain K(alpha,V) contains an object of type surface.

viewSurf отображает поверхность усиления как функцию переменных планирования для диапазонов значений, указанных domain и хранится в SamplingGrid свойство поверхности усиления.

Создайте поверхность усиления, используя точки проектирования, которые не образуют обычную сетку в рабочей области. Поверхность усиления изменяется как билинейная функция нормированных переменных планирования αN и βN:

K (αN, βN) = K0 + K1αN + K2βN + K3αNβN.

Предположим, что представляющими интерес значениями переменных планирования являются следующие пары (α, β ).

(α,β)={(-0.9,0.05)(-1.5,0.6)(-1.5,0.95)(-2.5,0.5)(-3.2,0.7)(-3.9,0.3).

Укажите значения образца (α, β) как векторы.

alpha = [-0.9;-1.5;-1.5;-2.5;-3.2;-3.9];
beta = [0.05;0.6;0.95;0.5;0.7;0.3];
domain = struct('alpha',alpha,'beta',beta);

Вместо регулярной сетки из (α, β) значений, здесь система дискретизируется в нерегулярно разнесенных точках на (α, β) - пространстве.

plot(alpha,beta,'o')

Figure contains an axes. The axes contains an object of type line.

Укажите базовые функции.

shapefcn = @(x,y) [x,y,x*y];

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

K = tunableSurface('K',1,domain,shapefcn)
K = 
  Tunable surface "K" of scalar gains with:
    * Scheduling variables: alpha,beta
    * Basis functions: alpha,beta,alpha*beta
    * Design points: 6x1 grid of (alpha,beta) values
    * Normalization: default (from design points)

Домен является списком шести (α, β) пар. Нормализация по умолчанию сдвигает α и β так, чтобы центр диапазона каждой переменной был равен нулю, и масштабирует их так, чтобы они находились в диапазоне от -1 до 1.

K.Normalization
ans = struct with fields:
      InputOffset: [-2.4000 0.5000]
     InputScaling: [1.5000 0.4500]
    OutputScaling: 1

Создайте настраиваемую поверхность усиления, которая принимает две переменные планирования и возвращает матрицу усиления 3 на 3. Каждая запись в матрице усиления является независимой функцией двух переменных планирования.

Создание сетки точек проектирования (alpha,V).

[alpha,V] = ndgrid(0:3:15,300:50:600);
domain = struct('alpha',alpha,'V',V);

Создайте базисную функцию, описывающую изменение поверхности в зависимости от переменных планирования. Используйте базис, описывающий билинейное расширение в alpha и V.

shapefcn = polyBasis('canonical',1,2);

Чтобы создать настраиваемую поверхность, укажите начальное значение матричной поверхности усиления. Это значение задает значение поверхности усиления, когда нормализованные переменные планирования равны нулю. tunableSurface принимает размеры поверхности усиления от заданного начального значения. Таким образом, чтобы создать матрицу усиления 3 на 3, используйте начальное значение 3 на 3.

K0init = diag([0.05 0.05 -0.05]);
K0 = tunableSurface('K',K0init,domain,shapefcn)
K0 = 
  Tunable surface "K" of 3x3 gain matrices with:
    * Scheduling variables: alpha,V
    * Basis functions: @(x1,x2)utFcnBasisOuterProduct(FDATA_,x1,x2)
    * Design points: 6x7 grid of (alpha,V) values
    * Normalization: default (from design points)

Входные аргументы

свернуть все

Идентифицирующая метка для настраиваемой поверхности усиления, заданная как символьный вектор. tunableSurface использует это имя для realp блок, представляющий перестраиваемые коэффициенты поверхности. Поэтому это имя можно использовать для ссылки на перестраиваемые коэффициенты усиления в пределах genss модель системы управления или slTuner интерфейс.

Начальное значение члена константы в настраиваемой поверхности усиления, определяемое как скаляр или массив. Размеры K0init определение размеров ввода/вывода усиливающей поверхности. Например, если поверхность усиления представляет усиление с двумя входами и двумя выходами, можно задать K0init = ones(2). Остальные коэффициенты K1,K2,... всегда имеют тот же размер, что и K0. Перестраиваемые коэффициенты автоматически расширяются так, что коэффициенты усиления в каждом канале ввода-вывода настраиваются независимо.

Например, для поверхности с двумя входами и двумя выходами имеется набор коэффициентов расширения для каждого элемента в матрице усиления.

Каждая запись Kijin настраиваемой матрицы усиления K (n (λ)) задается следующим образом:

Kij (n (λ)) = Kij0 + Kij1F1 (n (λ)) +... + KijMFM (n (λ)).

Расчетные точки, в которых настраивается усиливающая поверхность, заданная как структура. Структура содержит поля, содержащие значения переменных планирования, при которых производится выборка установки для настройки по коэффициенту усиления. Например, предположим, что вы хотите настроить коэффициент усиления, который изменяется как функция двух переменных планирования, α и V. Вы линеаризуете растение в сетке из α и V значений, с α = [0,5,0,10,0,15] и V = [700 800 900 1000]

. Укажите точки проектирования следующим образом:

[alpha,V] = ndgrid([0.5,0.10,0.15],[700,800,900,1000]);
domain = struct('alpha',alpha,'V',V);

Расчетные точки не обязательно должны лежать на прямоугольной или регулярно разнесенной сетке (см. «Поверхность усиления над нерегулярной сеткой»). Однако для получения наилучших результатов используйте точки проектирования, которые охватывают весь диапазон рабочих условий. Поскольку тюнинг учитывает только эти расчетные точки, достоверность настроенного графика усиления сомнительна в условиях эксплуатации, далеких от расчетных точек.

Базовые функции, используемые для моделирования поверхности усиления в терминах переменных планирования, заданных как дескриптор функции. Функция, связанная с дескриптором, принимает нормализованные значения переменных планирования в качестве входных данных и возвращает вектор значений базисной функции. Базовые функции всегда работают в нормированном диапазоне [-1,1]. tunableSurface неявно нормализует переменные планирования для этого интервала.

Например, рассмотрим значения переменных планирования α = [0,5,0,10,0,15] и V = [700 800 900 1000]. Следующее выражение создает базовые функции для поверхности усиления, которая является билинейной в этих переменных:

shapefcn = @(x,y) [x y x*y];

shapefcn является анонимной функцией двух переменных. Базовые функции описывают параметризованный коэффициент усиления G (α, V) = G0 + G1αN + G2VN + G3αNVN, где αN и VN - нормализованные переменные планирования (см.Normalization имущество K).

Можно использовать анонимные функции для указания любого набора базисных функций, необходимых для описания коэффициента усиления переменной. Кроме того, вспомогательные функции можно использовать для автоматического создания базовых функций для часто используемых расширений:

  • polyBasis - Расширение серии питания и расширение Чебышева.

  • fourierBasis - Периодическое расширение серии Фурье. Базовые функции, созданные fourierBasis являются периодическими, так что поверхность K усиления, определяемая этими функциями, удовлетворяет K (-1) = K (1). При создании поверхности усиления с помощьюtunableSurface, программное обеспечение нормализует диапазон переменных планирования, который вы указываете с помощью domain в интервал [-1,1]. Поэтому при использовании функций периодического базиса диапазон выборки соответствующей переменной календарного планирования должен быть ровно одним периодом. Это ограничение гарантирует, что периодичность базисной функции совпадает с периодичностью переменной планирования. Например, если периодически изменяющейся переменной планирования является угол, который находится в диапазоне от 0 до , то соответствующие значения в domain также должен находиться в диапазоне от 0 до .

  • ndBasis - Создание многомерных расширений из низкоразмерных расширений. Эта функция полезна при необходимости использования различных базисных функций для различных переменных планирования.

Дополнительные сведения о генерируемых базисных функциях см. на ссылочных страницах этих функций.

Выходные аргументы

свернуть все

Настраиваемая поверхность усиления, возвращаемая как tunableSurface объект. Этот объект имеет следующие свойства, которые хранят коэффициенты, базисные функции и другую информацию о поверхности усиления:

  • BasisFunctions - базовые функции, указанные как дескриптор функции. При создании поверхности усиления shapefcn входной аргумент задает начальное значение этого свойства.

  • Coefficients - Перестраиваемые коэффициенты поверхности усиления, задаваемые как массив значений realp настраиваемый параметр. Размеры K0init и количество базовых функций в shapefcn определить размеры K.Coefficients.

    Для скалярных коэффициентов усиления K.Coefficients имеет размеры [1,M+1], где M - количество базисных функций. Записи в K.Coefficients соответствуют перестраиваемым коэффициентам K0,...,KM.

    Для коэффициентов усиления со значением массива каждый коэффициент расширяется до размерности K0init. Эти расширенные коэффициенты сцеплены горизонтально в K.Coefficients. Поэтому, например, для поверхности усиления с двумя входами и двумя выходами, K.Coefficients имеет размеры [2,2(M+1)].

    Каждая запись Kijin настраиваемой матрицы усиления K (n (λ)) задается следующим образом:

    Kij (n (λ)) = Kij0 + Kij1F1 (n (λ)) +... + KijMFM (n (λ)).

  • SamplingGrid - Сетка расчетных точек, заданная как структура данных. При создании поверхности усиления domain входной аргумент задает начальное значение этого свойства.

  • Normalization - Смещение и масштабирование нормализации, заданные как структура с полями:

    • InputOffset - Вектор смещений для каждой переменной планирования.

    • InputScaling - Вектор коэффициентов масштабирования для каждой переменной планирования.

    • OutputScaling - Коэффициент масштабирования для общего коэффициента усиления.

    В общем, tunableSurface параметризация имеет вид:

    K (λ) = OutputScaling [K0 + K1F1 (n (λ)) +⋯+KmFm (n (λ))],

    где n (λ) - нормированная переменная планирования, заданная следующим образом:

    n (λ) = λ − InputOffsetInputScaling.

    tunableSurface нормализует переменные планирования для сжатия их числового диапазона и улучшения числовой стабильности процесса оптимизации. По умолчанию OutputScaling = 1, и tunableSurface вычисляет значения для InputOffset и InputScaling которые отображают SamplingGrid область каждой переменной планирования в [-1,1]. Таким образом, n = 0 в центре расчетного диапазона точек.

    Нормализацию по умолчанию можно изменить путем корректировки значений этих полей. Например:

    • При наличии известного значения коэффициента усиления для конкретной расчетной точки можно задать Normalization.InputOffset так что n = 0 в этой точке проектирования. Затем можно установить K0init до известного значения усиления.

    • Если требуется ограничить переменную календарного планирования неотрицательными значениями, установите Normalization.InputOffset до минимального значения этой переменной в проектной сетке. Это ограничение полезно, например, когда ваша базисная функция включает

  • Name - имя поверхности усиления, указанное как символьный вектор. При создании поверхности усиления name входной аргумент задает начальное значение этого свойства.

Совет

  • Настройка поверхности усиления в системе управления, смоделированной в MATLAB ®: Соединение поверхности усиления с массивом моделей установки, соответствующих точкам проектирования вdomain. Например, предположим G является таким массивом, и K представляет переменное время интегрирования. Следующая команда создает модель с замкнутым контуром, которую можно настроить с помощью systune команда.

    C0 = tf(K,[1 0]);
    T0 = feedback(C0*G,1);
  • Настройка поверхности усиления в системе управления, смоделированной в Simulink: Используйте поверхность усиления для параметризации таблицы поиска, матричной интерполяции или функционального блока MATLAB в модели Simulink. Например, предположим ST0 является slTuner интерфейс с моделью Simulink и GainTable - имя настроенного блока в интерфейсе. Следующая команда задает параметризацию GainTable на настраиваемую усилительную поверхность.

    ST0 = setBlockParam(ST0,'GainTable',K);

    Дополнительные сведения см. в разделе Параметризация графиков усиления.

  • При использовании writeBlockValue (Simulink Control Design), чтобы записать настроенную поверхность усиления обратно в модель Simulink, программное обеспечение использует codegen для формирования кода MATLAB для поверхности усиления. Вы можете использовать codegen себя, чтобы изучить этот код.

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