复杂系统的辨识线性逼近
这个例子展示了如何通过线性模型辨识的方法获得复杂非线性系统的线性逼近。该方法基于对激励系统的输入信号的选择。通过将线性模型与所选输入信号的非线性模型的模拟响应拟合得到线性近似。
本例使用了Simulink®、控制系统工具箱™和Simulink控制设计™。
简介
在许多情况下,线性模型是通过在一定的局部条件下对更复杂的非线性系统进行简化得到的。例如,飞机动力学的高保真模型可以用一个详细的Simulink模型来描述。加速这类系统的模拟、研究它们在某个操作点的局部行为或设计补偿器的常用方法是线性化它们。如果我们对原始模型进行关于一个操作点的解析线性化,这通常会产生一个与原始模型中状态数相同或接近的模型。对于用于分析或控制系统设计的输入类来说,这个顺序可能是不必要的高。因此,我们可以考虑一种替代方法,以从系统模拟中收集输入输出数据为中心,并使用它导出一个刚好正确顺序的线性模型。
F14模型的解析线性化
以F14为例。这已经是一个线性模型,但包含衍生块和干扰源,可能会影响其输出的性质。我们可以在它的一个输入端口和两个输出端口之间“线性化”它,如下:
open_system (“idF14Model”) IO = getlinio(“idF14Model”syslin =线性化(“idF14Model”IO)
3 x1向量的线性化IOs : -------------------------- 1。线性化输入扰动位于以下信号:-块:idf14模型/先导-端口:1 -信号名称:棒输入2。线性化输出测量位于以下信号:-块:idF14Model/Gain5 -端口:1 -信号名称:攻角3。线性化输出测量位于以下信号:-块:idf14模型/导频G力-端口:1 -信号名称:飞行员G力syslin = =转移Fcn导数转移Fcn Derivative1转移Fcn -0.6385 0 689.4 0导数1 1 e + 5 0 0转移Fcn -0.00592 0 -0.6571 0 Derivative1 0 0 1 1 e + 05驱动器Mod 0 0 1.424 0 Alpha-sensor 0.001451 0 0 0贴Prefil 0 0 0 0螺距-0.8156 L 0 0 1 0比例0 0 0驱动器Mod Alpha-sensor棒Prefil俯仰速率L转移Fcn -1280 0 0 0导数0 0 0 0转移Fcn -137.7 0 0 0 Derivative1 0 0 0 0驱动器国防部-20 2.986 -39.32 -1.67Alpha-sensor 0 -2.526 0 0坚持Prefil 0 0 -22.52 0节率L 0 0 0 -4.144比例导数为0 0 -1.71 22.52 0.9567比例转移Fcn 0转移Fcn Derivative1 0驱动器国防部-3.864 Alpha-sensor贴Prefil 0节率L 0比例0 B =棒输入转移Fcn 0导数0转移Fcn Derivative1 0驱动器Mod Alpha-sensor 0棒Prefil 1节率L 0比例0 C =转移Fcn导数转移Fcn Derivative1 Att角0.001451 0 0 0 G试点force c -3106 3.106e+08 7.083e+04 -7.081e+09致动器Mod Alpha-sensor Stick Prefil Pitch Rate L Att 0 0 0 0 0 Pilot G force c 0 0 0 0 0 Att 0 Pilot G force 0比例角D = Stick Att 0 Pilot G force 0连续时间状态空间模型的输入角。
Syslin是一个具有2个输出、1个输入和9个状态的模型。这是因为从“Stick Input”输入到两个输出的线性化路径在原始系统中有9个状态。我们可以用operpoint
:
operpoint (“idF14Model”)
ans =型号idf14的工作点。(t=0时刻的时变分量)---------- x _ (1) idF14Model /致动器模型0 (2)idF14Model /飞机动力学模型/转移Fcn.1 0 (3) idF14Model /飞机动力学模型/转移Fcn.2 0 (4) idF14Model /控制器/ Alpha-sensor低通滤波器0 (5)idF14Model /控制器/俯仰速率导致过滤器0 (6)idF14Model /控制器/ 0比例积分补偿器(7)idF14Model /控制器/棒预滤器0 (8)idF14Model /德莱顿风速模型/ Q-gust模型0 (9)idF14Model /德莱顿风速模型/ W-gust模型0 0输入:没有 ----------
这个顺序是否可以降低,同时仍然保持对所选方波(“棒输入”)输入的响应的保真度?
准备识别数据
模拟模型,记录0:30秒时间跨度的输入方波(u)和输出“迎角”(y1)和“先导G力”(y2)。在插值到一个均匀间隔的时间向量(采样时间为0.0444秒)之后,该数据存储在“idF14SimData. xml”中。垫”文件。
负载idF14SimDataZ = iddata([y1, y2],u,Ts,“Tstart”, 0);Z.InputName =把输入的;Z.InputUnit =“rad / s”;Z.OutputName = {“攻角”,“飞行员G力”};Z.OutputUnit = {rad的,‘g’};t = Z.SamplingInstants;次要情节(311)情节(t, Z.y (: 1)), ylabel (“迎角(弧度)”)标题(记录输入输出数据的图(t,Z.y(:,2)), ylabel(“飞行员G部队(G)”) subplot(313) plot(t,Z.u), ylabel(“把输入(rad / s)”([0 30 -1.2 1.2]) xlabel(的时间(秒))
状态空间模型的估计
函数估计2到4阶的状态空间模型党卫军
命令。我们将估计配置为使用“仿真”焦点,并选择不估计模型的扰动分量。
选择= ssestOptions (“焦点”,“模拟”);syslin2 = ssest(Z, 2,)“DisturbanceModel”,“没有”、选择);syslin3 = ssest(Z, 3,)“DisturbanceModel”,“没有”、选择);syslin4 = ssest(Z, 4,)“DisturbanceModel”,“没有”、选择);
比较线性化模型的性能syslin
并对三种模型进行了数据识别。注意,syslin是一个SS模型,而syslin2
,syslin3
而且syslin4
是IDSS模型。
syslin。InputName = Z.InputName;syslin。OutputName = Z.OutputName;调和名称以方便比较。clf compare(Z, syslin2, syslin3, syslin4)
由图可知,三阶模型(syslin3
)可以很好地作为飞机动力学的默认(t=0)运行条件的线性近似。拟合效果略好于分析线性化(syslin
).如果原始的idf14模型是线性的,为什么它的线性化结果不是,syslin
,产生与数据100%的吻合?原因有二:
测量的输出受到阵风的影响,这意味着记录的输出不是简单的Stick输入的函数。有干扰影响着它。
“先导G力”块使用导数块,其线性化取决于时间常数“c”的值。“c”应该很小(我们使用1e-5),但不是零。c的非零值在线性化过程中引入了近似误差。
让我们看看模型的参数syslin3
这似乎很好地捕捉到了人们的反应:
syslin3
syslin3 =连续时间状态空间模型发现:dx / dt = x (t) + B u e (t) + K (t) y (t) = C x (t) + D u (t) + e (t) = (x1, x2) x3 (x1, x2 -1.006 2.029 0.5842 -8.284 -19.39 5.611 2.784 12.63 -6.956 x3 B =棒输入x1 0.2614 x2 -5.512 x3 3.606 C = (x1, x2) x3角att试点G不得已伸出-8.841 0.5347 1.402 -86.42 15.85 66.12 D =棒输入角att飞行员G不得已伸出0 K =角att飞行员G不得已伸出x1 0 0 x2 0 0 x3 0 0参数化:自由形式(所有系数A、B、C免费)。参数及其不确定性用"idssdata"、"getpvec"、"getcov"表示。状态:在时域数据Z上使用sest进行估计。拟合估计数据:[98.4;97.02]% FPE: 2.367e-05, MSE: 0.1103
用约简和估计简化模型
我们也可以采取降低线性化模型阶数的方法syslin
并细化约简模型的参数,使其最适合数据z。为了找出一个好的约简阶值,我们使用hsvd
:
[S, BalData] = hsvd(syslin);clf;栏(年代)
柱状图显示,状态4及以上的奇异值非常小。因此,三阶可能是最优的还原方式。
sysr = balred(syslin,3,BalData) opt2 = bodeoptions;opt2。PhaseMatching =“上”;clf;bodeplot (sysr syslin opt2)
sysr = A = x1 x2 x3 x1 -2.854 -7.61 -54.04 x2 -0.9714 2.341 9.123 x3 0.6979 -7.203 -24.08 B = Stick输入x1 -137.7 x2 -869 x3 -506.7 C = x1 x2 x3 att的角度-0.0005063 -0.0008826 -0.001016 Pilot G force C -0.005926 -0.04692 -0.1646 D = att的Stick输入角度-0.03784 Pilot G force C -1.617连续时间状态空间模型。
波德图显示良好的保真度高达10 rad/s。sysr
能够像原始的9状态模型一样很好地模拟响应,如比较
剧情:
比较(Z, sysr syslin)
的参数sysr
以提高其对数据的拟合性。对于这个估计,我们选择“Levenberg-Marquardt”搜索方法,并将允许的最大迭代次数更改为10。这些选择是基于一些尝试和错误做出的。我们还打开了估计进度的显示。
opt.Display =“上”;opt.SearchMethod =“lm”;opt.SearchOptions.MaxIterations = 10;sysr2 = ssest(Z, sysr, opt) compare(Z, sysr2)
sysr2 =连续时间状态空间模型发现:dx / dt = x (t) + B u e (t) + K (t) y (t) = C x (t) + D u (t) + e (t) = (x1, x2) x3 (x1, x2 -4.048 -7.681 -54.01 -0.4844 1.549 8.895 -0.2398 -6.777 -25.78 x3 B =棒输入x1 -137.7 x2 -869 x3 -506.7 C = (x1, x2) x3角att试点G不得已伸出-0.0003361 -0.0004964 0.00215 -0.01191 -0.03599 -0.1434 D =棒输入角att 0.003022飞行员G不得已伸出0.6438 K =角att飞行员G不得已伸出x1 0 0 x2 0 0 x3 0 0参数化:自由形式(A, B, C中的所有系数都是自由的)。参数及其不确定性使用"idssdata", "getpvec", "getcov"状态:在时域数据Z上使用sest进行估计。拟合估计数据:[98.78;97.03]% FPE: 1.434e-05, MSE: 0.1097
精致的模型sysr2
非常适合F14模型的响应(第一次输出约99%,第二次约97%)。
结论
我们展示了一种获得复杂系统线性逼近的解析线性化的替代方法。结果是由一个特定的输入信号推导出来的,严格地说,只适用于那个输入。为了提高结果对各种输入配置文件的适用性,我们可以使用各种类型的输入执行几个模拟。然后,我们可以将得到的数据集合并为一个多实验数据集iddata /合并
)并使用它进行估计。在本例中,为了方便起见,我们使用了一个复杂的线性系统。这种方法的真正好处可以在非线性系统中看到。
我们还展示了一种降低线性系统阶数的方法,同时保持简化模型忠实于原始Simulink模型的模拟响应。简化模型的作用sysr
是为估计的模型提供一个初始的猜测吗sysr2
.该方法还强调了一个事实,即任何线性系统,包括不同类的线性系统,都可以用作估计的初始模型。
bdclose (“idF14Model”)