这个例子展示了如何使用鲁棒控制工具箱™通过更简单的低阶模型来近似高阶对象模型。
鲁棒控制工具箱提供了处理大型模型的工具,如:
高阶植物:详细的第一性原理或有限元模型的工厂往往有高阶。通常我们想要简化这类模型以进行模拟或控制设计。
高阶控制器:鲁棒控制技术通常产生高阶控制器。例如,当我们使用频率加权函数来塑造开环响应时,这是常见的。我们希望简化这些控制器的实现。
为了控制目的,一般来说,在交叉频率附近有一个精确的模型就足够了。对于仿真而言,只要在激励信号的频率范围内捕捉到基本的动态就足够了。这意味着通常可以找到高阶模型的低阶近似。鲁棒控制工具箱提供了各种模型缩减算法,以最适合您的要求和您的模型特性。
模型缩减任务通常包括以下步骤:
分析模型的重要特性,从其时域或频域响应得到步
或波德
例如
通过绘制原始模型的Hankel奇异值来确定适当的降阶(汉克尔斯夫
)来确定哪些模式(状态)可以在不牺牲关键特性的情况下丢弃。
选择一个约简算法。工具箱中可用的一些还原方法有:平衡
,bstmr
,舒尔姆
,hankelmr
,中心
我们可以很容易地通过顶级接口访问这些算法减少
。这些方法在原始模型和简化模型之间采用了不同的“贴近度”度量。选择取决于应用程序。让我们尝试每种方法,以研究它们的相对优点。
验证:我们通过比较简化模型和原始模型的动态来验证我们的结果。如果结果不令人满意,我们可能需要调整我们的约简参数(模型顺序的选择,算法,误差边界等)。
在本例中,我们将简化方法应用于洛杉矶大学医院大楼的模型。该模型取自SLICOT工作说明2002-2,“线性时不变动力系统模型简化的基准示例集合,”由Y.Chahlaoui和P.V.Dooren设计。它有八层,每层有三个自由度——两个位移和一个旋转。我们使用48状态模型表示这些位移中任何一个的输入-输出关系,其中每个状态表示位移或其变化率(速度)。
让我们为示例加载数据:
负载buildingData.mat
让我们从分析模型的频率响应开始:
波德(G)网格在
图1:波德图分析频率响应
从模型的频率响应可以看出,系统的本质动力学是在3 - 50弧度/秒的频率范围内。震级在极低和高频范围都下降。我们的目标是找到一个低阶模型,在这个频率范围内保持一个可接受的精度水平的信息内容。
要了解模型的哪些状态可以安全地丢弃,请查看模型的Hankel奇异值:
hsv_add=汉克尔斯夫(G);酒吧(hsv_add)标题(“模型(G)的Hankel奇异值”);包含(“国家数目”) ylabel (“奇异值(\ sigma_i)”)行([10.5 10.5],[0 1.5e-3],“颜色”,“r”,“线条样式”,“——”,“线宽”1)文本(6日,1.6 e - 3,“10占主导地位的国家。”)
图2:模型的Hankel奇异值(G)。
汉克尔奇异值图表明,该系统存在四种主导模态。然而,其余模式的贡献仍然是显著的。我们将在10个状态处画一条线,并丢弃剩下的状态,以找到一个10阶简化模型Gr
这最接近于原始系统G
.
这个函数减少
是工具箱中可用的所有模型简化例程的入口。我们将使用默认的平方根余额截断('balancmr')选项减少
作为第一步,该方法使用“加法”误差界进行缩减,这意味着它试图在频率范围内保持绝对近似误差均匀较小。
%计算10阶简化模型(reduce默认使用balancmr方法)[Gr_add, info_add] =减少(G, 10);现在比较原始模型G和简化后的模型Gr_add波德(G,“b”,Gr_add,“r”)网格在头衔('比较原始(G)和简化模型(Gr\_add)')传奇(“G - 48州原创”,` Gr\_add - 10-state reduced `,“位置”,“东北”)
图3:比较原始(G)和简化模型(Gr_add)
从图3的Bode图中可以看出,简化模型可以很好地捕获低于30 rad/s的共振,但在低频区域(<2 rad/s)的匹配很差。此外,简化模型没有充分捕捉30-50 rad/s频率范围内的动态。低频误差大的一个可能解释是,模型在这些频率上的增益相对较低。因此,即使在这些频率上有很大的误差,对总体误差的贡献也很小。
为了解决这个问题,我们可以尝试乘法误差法,例如bstmr
. 该算法强调相对误差而不是绝对误差。因为当增益接近零时,相对比较不起作用,所以我们需要添加一个最小增益阈值,例如添加一个馈通增益D
假设我们不担心增益低于-100 dB时的误差,我们可以将馈通设置为1e-5。
GG=G;GG.D=1e-5;
现在,让我们看看乘法(相对)错误的奇异值(使用的'mult'选项)汉克尔斯夫
)
hsv_mult=hankelsv(GG,“乘”);标题栏(hsv_mult) (“模型乘法误差奇异值(G)”);包含(“国家数目”) ylabel (“奇异值(\ sigma_i)”)
图4:模型乘法误差奇异值(G)
26阶模型看起来很有希望,但为了与之前的结果进行比较,我们还是坚持减少10阶。
%使用bstmr算法选项进行模型简化[Gr_mult, info_mult] =减少(GG 10“算法”,“英国”);%现在比较原始模型G和简化模型Gr_mult波德(G, Gr_add Gr_mult,{1飞行,1 e4}),网格在头衔(“将原始模型(G)与简化模型(Gr\\ U add和Gr\\ U mult)进行比较”)传奇(“G - 48州原创”,Gr \ _add (balancmr)”,“Gr\_mult(bstmr)”一词,“位置”,“东北”)
图5:比较原始(G)与简化模型(Gr_add和Gr_mult)
使用乘法误差法,原始模型和简化模型之间的拟合要好得多,即使在低频率下。我们可以通过比较阶跃响应来证实这一点:
步骤(G, Gr_add Gr_mult 15)%阶跃响应直到15秒传奇(“G:48州原文”,“Gr \ _add:十余个州(balancmr) ',“Gr \ _mult:十余个州(bstmr) ')
图6:三种模型的阶跃响应
所有的算法都提供近似误差的界限。对于加法错误方法平衡
时,近似误差由误差模型的峰值(最大)增益测量G-Greduced
在所有频率上。该峰值增益也称为误差模型的H无穷范数。加法误差算法的误差界如下所示:
其中,和等于G
(第11条至第48条)高铁加
).我们可以通过比较不等式的两边来验证这个界是满足的:
标准(G-Gr_添加,inf)%实际误差
ans = 6.0251 e-04
%理论边界(存储在“INFO”的“ErrorBound”字段中)%由| reduce |返回的结构信息添加错误绑定
ans = 0.0047
对于乘法误差方法,例如bstmr
,近似误差由相对误差模型跨频率的峰值增益来测量G\(G-减少)
. 错误界限如下所示
和在哪里乘法汉克尔奇异值的计算hankelsv (G,“乘”)
.同样,我们可以比较简化模型的这些边界Gr_mult
标准(GG\(GG-Gr_mult),inf)%实际误差
ans = 0.5949
%的理论束缚信息多个错误绑定
ans=546.1730
画出相对误差以作确认
bodemag (GG \ (GG-Gr_mult){1飞行,1 e3})网格在文本(0.1,-50,峰值增益:-4.6 dB (59%), 17.2 rad/s)头衔(“原始模型(G)和简化模型(Gr\\\ mult)之间的相对误差”)
图7:原始模型(G)与简化模型(Gr_mult)的相对误差
从上面的相对误差图来看,17.2 rad/s的相对误差高达59%,这可能超过了我们愿意接受的范围。
提高准确度Gr_mult
,我们需要增加阶数。为了达到至少5%的相对精度,我们能得到的最低阶数是多少?函数减少
可以自动选择符合我们所需精度水平的最低阶模型。
%指定最大5%的近似误差[gre,信息]=减少(GG,“ErrorType”,“乘”,“MaxError”,0.05);尺寸(灰色)
状态空间模型,包含1个输出,1个输入和35个状态。
该算法选择了一个34状态的简化模型格雷德
.将实际误差与理论界限进行比较:
标准(GG\(GG Gred),inf)
ans = 0.0068
info.ErrorBound
ans = 0.0342
看看相对误差大小作为频率的函数。更高的精度是以更大的模型顺序为代价的(从10到34)。注意,实际的最大误差是0.6%,远远低于5%的目标。这种差异是函数的结果bstmr
使用错误界限而不是实际错误来选择订单。
bodemag (GG \ (GG-Gred) {1 1 e3})网格在文本(-75,峰值增益:在73.8 rad/s时为-43.3 dB (0.6%))头衔(原始模型(G)与简化模型(Gred)的相对误差)
图8:原始模型(G)和简化模型(Gred)之间的相对误差
比较博德的响应
bode(G,Gred,{1e-2,1e4})格在传奇(“G-48国家原创”,“Gred-34州减少”)
图9:48态原始模型和34态简化模型的Bode图
最后比较了原始模型和简化模型的阶跃响应。它们实际上是无法区分的。
步骤(G),“b”,格雷德,“r——”,15)%阶跃响应直到15秒传奇(“G:48州原文”,'格雷德:34州(bstmr)')文本(5,-4e-4,“最大相对误差<0.05”)
图10:48状态原始模型和34状态简化模型的阶跃响应图