tunableSurface

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

Описание

tunableSurface позволяет вам параметризовать и настроить gain schedules, которые являются усилениями, которые варьируются как функция от одной или нескольких переменных планирования.

В целях настройки удобно параметризовать переменный коэффициент усиления как плавную gain surface вида:

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

где

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

  • n (σ) является функцией нормализации (см. Normalization свойство выходного аргумента K).

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

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

  • K 0,..., KM являются коэффициентами, которые будут настроены

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

пример

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

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

Настраиваемая поверхность K сохраняет базисные функции, заданные shapefcn и множество значений σ (design points), заданных domain. Настраиваемая поверхность усиления имеет настраиваемые коэффициенты K 0,..., KM. Значение усиления инициализируется к постоянному усилению K0init. Можно комбинировать K с другими статическими или динамическими элементами, чтобы создать модель с обратной связью вашей системы управления с запланированным усилением. Или используйте K для параметризации интерполяционной таблицы в slTuner интерфейс с Simulink® модель. Затем используйте systune чтобы настроить K 0,..., 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'

The 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 Function в модели 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. Настраиваемые коэффициенты автоматически расширяются так, что усиления в каждом канале ввода-вывода настраиваются независимо.

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

Каждая запись, Kij в настраиваемой матричной 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 до 2 π, то соответствующие значения в domain должен также варьироваться от 0 до 2 π .

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

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

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

свернуть все

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

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

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

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

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

    Каждая запись, Kij в настраиваемой матричной 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 function блока в модели Simulink. Например, предположим ST0 является slTuner интерфейс с моделью Simulink и GainTable - имя настроенного блока в интерфейсе. Следующая команда устанавливает параметризацию GainTable к настраиваемой поверхности усиления.

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

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

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

Введенный в R2015b