主要内容

tunableSurface

为增益调度创建可调增益曲面

描述

tunableSurface允许参数化和调优获得时间,是增益作为一个或多个调度变量的函数而变化。

为了调优目的,将变量增益参数化为平滑增益是很方便的获得表面形式的:

K n σ γ K 0 + K 1 F 1 n σ + ... + K F n σ

在哪里

  • σ是调度变量的向量。

  • nσ)是一个归一化函数(请参阅归一化属性的输出参数K).

  • γ是一个比例因子(参见归一化属性的输出参数K).

  • F1、……F是用户选择的基函数。

  • K0、……K系数需要调整吗

你可以把一般多项式展开式中的项作为基函数。或者,当期望的形状Kσ)是已知的,您可以使用更具体的函数。然后你可以使用systune调整系数K0、……K,根据您的设计要求,超出调度变量值的范围。

例子

K= tunableSurface (的名字K0initshapefcn创建可调增益曲面:

K n σ γ K 0 + K 1 F 1 n σ + ... + K F n σ

可调谐曲面K所指定的基函数shapefcn一个离散的集合σ值(设计点)由.可调谐增益曲面具有可调谐系数K0、……K.增益值初始化为恒定增益K0init.你可以结合K与其他静态或动态元素构建增益控制系统的闭环模型。或者,使用K类中的查找表参数化slTuner接口到Simulink金宝app®模型。然后,用systune调优K0、……K使闭环系统在选定的设计点上满足您的设计要求。

K= tunableSurface (的名字K0init创建一个平面与恒定,可调增益。这个语法等价于K0init tunableGain(名称)

例子

全部折叠

创建标量增益K它随的二次函数变化t

K t K 0 + K 1 n t + K 2 n t 2

这个增益面可以表示随时间变化的增益。系数 K 0 K 1 , K 2 是这个时变增益的可调参数。对于这个例子,假设t取值范围为0 ~ 40。在这种情况下,归一化函数是 n t t - 2 0 / 2 0

表示可调增益曲面Kt)在MATLAB®中,首先选择向量t这些值是系统的设计点。例如,如果您的设计点是时间t = 0到t = 40期间每5秒的时变系统快照,则使用以下采样网格:

T = 0:5:40;域= struct(“t”t);

为可变增益指定一个二次函数。

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

shapefcn匿名向量函数的句柄。矢量中的每一项在多项式展开中给出一个描述变量增益的项。tunableSurface隐式地假设常数函数 f 0 t 1 ,因此不需要包括在shapefcn

创建可调增益曲面Kt).

K =可调谐表面(“K”1域shapefcn)
K =标量增益的可调曲面“K”*调度变量:t *基函数:t,t^2 *设计点:t值的1x9网格*归一化:默认(从设计点)

显示屏总结了增益曲面的特点,包括设计要点和基函数。检查K

得到(K)
BasisFunctions: @(x)[x,x^2]系数:[1x3 realp] SamplingGrid: [1x1 struct]归一化:[1x1 struct]名称:'K'

系数可调曲面的性质是可调系数的数组, K 0 K 1 K 2 ,存储为数组值realp块。

现在可以在控制系统模型中使用可调表面。在MATLAB中调优,互连K使用其他控制系统元素,就像使用控制设计块创建可调控制系统模型一样。要在Simulink®中进行金宝app调优,请使用setBlockParam为了使K对象中可调块的参数化slTuner接口。当您调优模型或slTuner接口的使用systune,得到的模型或接口包含系数的调优值 K 0 K 1 , K 2

调优系数后,可以使用viewSurf命令。对于本例,不进行调优,而是手动将系数设置为非零值。将得到的增益视为时间的函数。

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

图中包含一个轴对象。标题为Gain K(t)的axis对象包含一个类型为line的对象。

viewSurf指定的调度变量值范围内,显示增益作为调度变量的函数并存储在SamplingGrid增益曲面的性质。

这个例子展示了如何对标量增益建模K对两个调度变量有双线性依赖。为此,您可以创建一个表示两个变量独立依赖关系的设计点网格。

假设第一个变量α一个入射角是从0到15度,第二个变量是什么V取值范围为300 ~ 600m /s。默认情况下,规范化变量为:

x α - 7 5 7 5 y V - 4 5 0 1 5 0

增益曲面建模为:

K α V K 0 + K 1 x + K 2 y + K 3. x y

在哪里 K 0 K 3. 是可调参数。

创建一个设计点网格,(αV),它们是线性间隔的α而且V.这些设计点是用于调整增益面系数的调度变量值。它们必须与您对植物进行采样时的参数值相对应。

[alpha,V] = ndgrid(0:3:1);

这些数组,α而且V,表示两个调度变量在其全范围内的独立变化量。将它们放入一个结构中,以定义可调曲面的设计点。

域= struct(“α”α,“V”, V);

创建描述双线性展开的基函数。

Shapefcn = @(x,y) [x,y,x*y];%或使用polyBasis('canonical',1,2)

返回的数组中shapefcn,基函数为:

F 1 x y x F 2 x y y F 3. x y x y

创建可调增益曲面。

K =可调谐表面(“K”1域shapefcn);

可以使用可调曲面作为查找表块或Simulink模型中的MATLAB函数块的参数化。金宝app或者,使用模型互连命令将其作为可调元素纳入MATLAB建模的控制系统中。调优系数后,可以使用viewSurf命令。对于本例,不进行调优,而是手动将系数设置为非零值并查看结果增益。

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

图中包含一个轴对象。标题为Gain K(alpha,V)的坐标轴对象包含一个类型为surface的对象。

viewSurf的值范围内,显示增益面作为调度变量的函数并存储在SamplingGrid增益曲面的性质。

使用在操作域中不形成规则网格的设计点创建增益曲面。增益面是归一化调度变量的双线性函数 α N 而且 β N

K α N β N K 0 + K 1 α N + K 2 β N + K 3. α N β N

假设调度变量感兴趣的值如下 α β 对。

α β - 0 9 0 0 5 - 1 5 0 6 - 1 5 0 9 5 - 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];域= struct(“α”α,“β”,β);

而不是一个规则的网格 α β 值,这里系统在不规则间隔的点上采样 α β 讨论。

情节(α,β,“o”

图中包含一个轴对象。axis对象包含一个line类型的对象。

指定基函数。

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

使用这些采样函数值创建增益曲面的可调模型。

K =可调谐表面(“K”1域shapefcn)
K =标量增益的可调谐表面“K”,具有:*调度变量:alpha,beta *基函数:alpha,beta,alpha*beta *设计点:6x1网格(alpha,beta)值*归一化:默认(从设计点)

定义域是六个的列表 α β 对。默认情况下,归一化会发生变化 α 而且 β 使每个变量的范围的中心为0,并将它们缩放到从-1到1。

K.Normalization
ans =带字段的结构:InputOffset: [-2.4000 0.5000] InputScaling: [1.5000 0.4500] OutputScaling: 1

创建一个可调增益曲面,接受两个调度变量并返回一个3 × 3增益矩阵。增益矩阵中的每一项都是两个调度变量的独立函数。

创建一个设计点网格(α,V)

[alpha,V] = ndgrid(0:3:1);域= struct(“α”α,“V”, V);

创建基函数,描述曲面如何随调度变量变化。使用描述双线性展开的基α而且V

shapefcn = polyBasis(“规范”、1、2);

要创建可调曲面,请指定矩阵值增益曲面的初始值。该值设置归一化调度变量均为零时的增益曲面值。tunableSurface从指定的初始值获取增益曲面的尺寸。因此,要创建3 × 3的增益矩阵,请使用3 × 3的初始值。

K0init = diag([0.05 0.05 -0.05]);K0 =可调谐表面(“K”、K0init域,shapefcn)
K0 = 3x3增益矩阵的可调曲面“K”,具有:*调度变量:alpha,V *基函数:@(x1,x2)utFcnBasisOuterProduct(FDATA_,x1,x2) *设计点:(alpha,V)值的6x7网格*归一化:默认(从设计点)

输入参数

全部折叠

可调增益曲面的标识标签,指定为字符向量。tunableSurface类使用此名称realp块,表示曲面的可调系数。因此,您可以使用此名称来指代a内的可调增益系数一族控制系统的模型slTuner接口。

可调增益面上常数项的初始值,指定为标量或数组。的维度K0init确定增益曲面的I/O尺寸。例如,如果增益曲面表示一个双输入,双输出增益,您可以设置K0init = ones(2).剩下的系数K1, K2,…总是有相同的大小K0.可调系数自动扩展,使每个I/O通道中的增益独立调谐。

例如,对于一个双输入、双输出曲面,增益矩阵中的每个项都有一组展开系数。

每个条目Kij在可调增益矩阵中Knσ),由:

K j n σ K j 0 + K j 1 F 1 n σ + ... + K j F n σ

增益面被调谐的设计点,指定为结构。该结构具有包含调度变量值的字段,您可以对该工厂进行采样以进行增益调度调优。例如,假设你想调优一个增益,它是两个调度变量的函数,α而且V.将植物线性化到α而且V值,α=[0.5,0.10,0.15]和V=(700800900、1000)

.设计要点如下:

(α,V) = ndgrid((0.5, 0.10, 0.15),(700800900、1000));域= struct(“α”α,“V”, V);

设计点不必位于矩形或规则间距的网格上(参见在不规则网格上获得曲面).但是,为了获得最佳效果,应使用覆盖全部操作条件的设计点。由于调优只考虑这些设计点,在远离设计点的操作条件下,调优增益调度的有效性是值得怀疑的。

根据调度变量(指定为函数句柄)对增益曲面建模的基函数。与句柄关联的函数接受调度变量的规范化值作为输入,并返回基函数值的向量。基函数总是在归一化范围[- 1,1]上运行。tunableSurface将调度变量隐式规范化到此间隔。

例如,考虑调度变量值α=[0.5,0.10,0.15]和V=(700800900、1000)。下面的表达式为增益面创建基函数,该增益面在这些变量中是双线性的:

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

shapefcn是一个匿名函数两个变量。基函数描述了一个参数化增益 G α V G 0 + G 1 α N + G 2 V N + G 3. α N V N 在哪里αN而且VN是否规范化调度变量(参见归一化的属性K).

您可以使用匿名函数指定需要描述变量增益的任何基函数集。或者,您可以使用helper函数自动生成常用展开的基函数:

  • polyBasis-幂级数展开和切比雪夫展开。

  • fourierBasis-周期傅里叶级数展开。生成的基函数fourierBasis这样一个增益曲面是周期性的吗K由这些函数定义满足K(1) =K(1).当你用tunableSurface,该软件将您指定的调度变量范围规范化到区间[- 1,1]。因此,如果使用周期基函数,则对应调度变量的采样范围必须恰好为一个周期。这个限制保证了基函数的周期性与调度变量的周期性相匹配。例如,周期性变化的调度变量为角度,取值范围为0 ~ 2π中对应的值也必须在0到2之间π

  • ndBasis-从低维扩展构建多维扩展。当您想对不同的调度变量使用不同的基函数时,此函数非常有用。

有关它们生成的基函数的更多信息,请参阅这些函数的参考页面。

输出参数

全部折叠

可调增益曲面,返回为tunableSurface对象。该对象具有以下属性,存储有关增益曲面的系数、基函数和其他信息:

  • BasisFunctions-基函数,指定为函数句柄。当你创建增益曲面时shapefcnInput参数设置此属性的初始值。

  • 系数-增益曲面的可调系数,指定为数组值realp可调参数。的维度K0init和基函数的个数shapefcn确定的尺寸K.Coefficients

    对于标量增益,K.Coefficients有尺寸(1) M + 1),在那里是基函数的个数。中的条目K.Coefficients对应于可调系数K0、……K

    对于数组值增益,每个系数展开到维数K0init.这些展开的系数水平地连接在K.Coefficients.因此,例如,对于一个双输入双输出增益曲面,K.Coefficients有尺寸(2, 2 (M + 1))

    每个条目Kij在可调增益矩阵中Knσ),由:

    K j n σ K j 0 + K j 1 F 1 n σ + ... + K j F n σ

  • SamplingGrid-设计点的网格,指定为数据结构。当你创建增益曲面时Input参数设置此属性的初始值。

  • 归一化-规范化偏移和缩放,指定为一个带字段的结构:

    • InputOffset-每个调度变量的偏移量向量。

    • InputScaling-各调度变量的比例因子向量。

    • OutputScaling-整体增益的比例因子。

    一般而言,tunableSurface参数化的形式是:

    K σ OutputScaling K 0 + K 1 F 1 n σ + + K F n σ

    在哪里nσ)为归一化调度变量,为:

    n σ σ InputOffset InputScaling

    tunableSurface对调度变量进行归一化,压缩其数值范围,提高优化过程的数值稳定性。默认情况下,OutputScaling= 1, andtunableSurface计算以下值InputOffset而且InputScaling那张地图SamplingGrid每个调度变量的域为[- 1,1]。因此,n= 0在设计点范围的中心。

    您可以通过调整这些字段的值来更改默认的规范化。例如:

    • 如果您有一个特定设计点的已知增益值,您可以设置规范化。InputOffsetn在该设计点= 0。然后你可以设置K0init到已知增益值。

    • 如果要将调度变量限制为非负值,请设置规范化。InputOffset到设计网格中该变量的最小值。这个限制是有用的,例如当你的基函数包含 σ

  • 的名字-增益曲面的名称,指定为字符向量。当你创建增益曲面时的名字Input参数设置此属性的初始值。

提示

  • 在MATLAB建模的控制系统中调整增益面®:将增益面与中设计点对应的植物模型数组连接.例如,假设G这样的数组,和K表示变量积分时间。命令构建一个闭环模型,您可以使用systune命令。

    C0 = tf(K,[1 0]);T0 =反馈(C0*G,1);
  • 要调优在Simulink中建模的控制系统中的增益面:使用增益面参数化查找表、矩阵插值或金宝appMATLAB函数块在Simulink模型。金宝app例如,假设ST0是一个slTuner到Simulink模型的接口,金宝app以及GainTable接口中调优块的名称。下面的命令设置参数化GainTable到可调增益曲面。

    ST0 = setBlockParam(ST0,“GainTable”、K);

    看到参数化增益计划获取更多信息。

  • 当你使用writeBlockValue(金宝appSimulink控制设计)将调谐增益曲面写回Simulink模型,该软件使用金宝appcodegen生成增益曲面的MATLAB代码。你可以使用codegen自己检查这段代码。

版本历史

在R2015b中引入