主要内容

Narendra-Li基准系统:非线性离散时间系统的灰箱建模

这个例子展示了如何识别一个复杂但人工非线性离散时间系统的参数和一个输入和一个输出。系统最初是由纳和李提出和讨论

k·s·兰德和S.-M。李。控制系统的“神经网络”。神经网络在数学角度(p . Smolensky m . c .莫泽尔和d e . Rumelhard eds),第11章,页347 - 394,劳伦斯Erlbaum Associates山谷,新泽西,美国,1996年。

并被认为是在许多离散时间标识的例子。

离散时间Narendra-Li基准系统

Narendra-Li系统的离散方程:

x1 (t + Ts) = (x1 (t) / (1 + x1 (t) ^ 2) + p(1)) *罪(x2 (t)) x2 (t + Ts) = x2 (t) * cos (x2 (t)) + x1 (t) * exp (- (x1 (t) ^ 2 + x2 (t) ^ 2) / p (2)) + u (t) ^ 3 / (1 + u (t) ^ 2 + p (3) * cos (x1 (t) + x2 (t))
y (t) = x1 (t) / (1 + p (4) * sin (x2 (t)) + p (5) * sin (x1 (t)))

x1 (t)和x2 (t)是美国,u (t)输入信号,y (t)的输出信号和p参数向量和5元素。

IDNLGREY离散Narendra-Li模型

从一个IDNLGREY模型文件的观点来看,没有连续和离散时间系统之间的区别。Narendra-Li模型文件必须返回状态更新矢量dx和输出y,和应该采取t(时间),x(状态向量),u(输入),p (s)(参数)和变长度输入宗量作为输入参数:

函数(dx, y) = narendrali_m (t, x, u, p,变长度输入宗量)% narendrali_m离散Narendra-Li基准系统。
%输出方程。y = x (1) / (1 + p (4) * sin (x (2))) + x (2) / (1 + p (5) * sin (x (1)));
%状态方程。dx = [(x (1) / (1 + x (1) ^ 2) + p (1)) * sin (x (2));…%状态1。x (2) * cos (x (2)) + x (1) * exp (- x (x (1) ^ 2 + (2) ^ 2) / p (2))…%状态2。+ u (1) ^ 3 / (1 + u (1) ^ 2 + p (3) * cos (x (1) + (2)))……];

注意,我们这里选择压缩所有5参数到一个参数向量,在哪里我:th元素是通常的MATLAB中引用的方式,即。,通过p (i)。

用这个模型文件为基础,我们下一个创建一个IDNLGREY对象反映了建模的情况。值得强调的是,模型的组件指定通过积极Ts(= 1秒)的价值。注意到参数只包含一个元素,5-by-1参数向量,SETPAR用于指定的所有组件这个向量是严格正的。

文件名=“narendrali_m”;%文件描述模型结构。订单= [1 1 2];%模型[纽约νnx]命令。参数= {(1.05;7.00;0.52;0.52;0.48)};%对初始参数(向量)。InitialStates = 0 (2, 1);%初始状态的初始值。Ts = 1;Ts = 1 s %的离散系统。nlgr = idnlgrey(文件名、秩序、参数、InitialStates Ts,“名字”,“离散Narendra-Li基准系统”,“TimeUnit”,“年代”);nlgr = setpar (nlgr,“最低”,{eps (0) * (5、1)});

摘要进入Narendra-Li模型的结构是通过当前命令:

礼物(nlgr);
nlgr =离散时间非线性灰色矩形模型定义为“narendrali_m”(MATLAB文件):x (t + Ts) = F (t, u (t) x (t) p1) y (t) = H (t, u (t) x (t) p1) + e (t)与1输入(s)、2 (s), 1个输出(s),自由参数(s)和5(5)。输入:u (1) (t)状态:初始值x (1) x1 (t) xinit@exp1 0(固定)(负无穷,正无穷)x (2) x2 (t) xinit@exp1 0(固定)[无穷,正]输出:y (1) (t)参数:值p1 (1) p1 1.05(估计)]0,正]p1(2) 7(估计)]0,正]p1(3) 0.52(估计)]0,正]p1(4) 0.52(估计)]0,正]p1(5) 0.48(估计)]0,正)名称:离散时间Narendra-Li基准体系样品时间:1秒状态:由直接建设或转换。不估计。在模型的“报告”属性的更多信息。< a href = " matlab:如果存在(“nlgr”、“var”),如果isa (nlgr idnlgrey”), disp (' ');disp (get (nlgr)),否则disp (' ');disp(“无法显示属性变量nlgr因为它不再是一个/一个idnlgrey对象。”);,,其他matlab.graphics.internal.getForDisplay (“nlgr”),结束" >模型属性< / >

输入输出数据

两个输入-输出数据记录300个样本,一个用于估计和一个用于验证的目的,是可用的。输入向量用于这些记录是相同的,并被选为两个正弦信号的总和:

u (t) =罪(2 *π* t / 10) +罪(2 *π* t / 25)

t = 0, 1,……,299秒。我们创建两个不同的IDDATA对象来控制两个数据记录,泽估算和验证的目的。

负载(fullfile (matlabroot“工具箱”,“识别”,“iddemos”,“数据”,“narendralidata”));泽= iddata (y1, u, Ts,“Tstart”0,“名字”,“Narendra-Li估计数据”,“ExperimentName”,“泽”);zv = iddata (y2, u, Ts,“Tstart”0,“名字”,“Narendra-Li验证数据”,“ExperimentName”,“zv”);

的输入-输出数据将用于评估图所示窗口。

图(“名字”,ze.Name);情节(泽);

图1:从一个Narendra-Li基准系统输入-输出数据。

初始的Narendra-Li模型的性能

现在让我们使用比较研究初始的Narendra-Li模型的性能。模拟和测量输出zv生成,适合默认显示。使用上下文菜单切换数据实验的阴谋zv。适合不,不利于数据集(约74%)。在这里我们应该指出,默认情况下估计初始状态向量进行比较,在这种情况下一个初始状态向量和另一个zv

比较(合并(泽zv) nlgr);

图2:比较真实的输出和模拟输出的初始Narendra-Li模型。

% % 4%通过体育通过观察获得的预测错误,我们意识到%初始Narendra-Li模型显示了一些系统性和阶段性差异%比真正的输出。体育(合并(泽zv), nlgr);

图3:获得与初始Narendra-Li模型预测错误。使用上下文菜单之间切换试验。

参数估计

为了减少系统的差异我们估计所有5参数使用NLGREYEST Narendra-Li模型的结构。估计是基于估计的数据集进行泽。

选择= nlgreyestOptions (“显示”,“上”);nlgr = nlgreyest(泽、nlgr选择);

估计Narendra-Li模型的性能

比较再次雇佣调查估计模型的性能,但这一次我们使用模型的内部存储初始状态向量([0;0]两个实验)没有任何初始状态向量的估计。

clf选择= compareOptions (“InitialCondition”,“米”);比较(合并(泽zv) nlgr,选择);

图4:比较的真实输出和模拟输出估计Narendra-Li模型。

改进后的评估很重要,也许是最能说明通过情节的预测错误:

图;体育(合并(泽zv), nlgr);

图5:预测与估计Narendra-Li模型获得的错误。

估计Narendra-Li模型的建模能力也是通过渣油确认提供的相关分析:

图(“名字”,(nlgr.Name:估计模型的残差的]);渣油(zv nlgr);

图6:残差与估计Narendra-Li模型获得的。

事实上,获得模型参数也非常接近那些被用来生成真正的模型输出:

disp (“真正的估计参数向量”);ptrue = [1;8;0.5;0.5;0.5);流(“% 1.4 f % 1.4 f \ n”[ptrue ';getpvec (nlgr) '));
真正的估计参数向量1.0000 1.0000 8.0000 8.0082 0.5000 0.5003 0.5000 0.4988 0.5000 0.5018

一些额外的模型质量的结果(损失函数,Akaike消防工程,估计模型参数的标准差)通过目前的命令下提供:

礼物(nlgr);
nlgr =离散时间非线性灰色矩形模型定义为“narendrali_m”(MATLAB文件):x (t + Ts) = F (t, u (t) x (t) p1) y (t) = H (t, u (t) x (t) p1) + e (t)与1输入(s)、2 (s), 1个输出(s),自由参数(s)和5(5)。输入:u (1) u1 (t)状态:初始值x (1) x1 (t) xinit@exp1 0(固定)(负无穷,正无穷)x (2) x2 (t) xinit@exp1 0(固定)[无穷,正]输出:y(1)日元(t)参数:标准差值p1 (1) p1 0.999993 - 0.0117615(估计)]0,正]p1(2) 8.00821 - 0.885988(估计)]0,正]p1(3) 0.500319 - 0.0313092(估计)]0,正]p1(4) 0.498842 - 0.264806(估计)]0,正]p1(5) 0.501761 - 0.30998(估计)]0,正)名称:离散时间Narendra-Li基准体系样品时间:1秒状态:终止条件:改变参数小于指定的公差。迭代次数:16、功能评估:17估计使用解算器:FixedStepDiscrete;搜索:lsqnonlin时域数据“Narendra-Li估计数据”。适合估算数据:99.44%消防工程:9.23 e-05, MSE: 8.927 e-05模型的“报告”属性的更多信息。< a href = " matlab:如果存在(“nlgr”、“var”),如果isa (nlgr idnlgrey”), disp (' ');disp (get (nlgr)),否则disp (' ');disp(“无法显示属性变量nlgr因为它不再是一个/一个idnlgrey对象。”);,,其他matlab.graphics.internal.getForDisplay (“nlgr”),结束" >模型属性< / >

至于连续投入产出系统,也可以使用离散输入输出系统的步骤。让我们做两个不同步骤的水平,1和2:

图(“名字”,(nlgr.Name“估计模型:一步反应”]);t = (25)”;步骤(nlgr,“b”t stepDataOptions (“StepAmplitude”1));行(t)步骤(nlgr t stepDataOptions (“StepAmplitude”2)),“颜色”,‘g’);网格;传奇(“0 - > 1”,“0 - > 2”,“位置”,“西北”);

图7:一步反应得到的估计Narendra-Li模型。

我们结束这个例子通过比较的性能估计IDNLGREY Narendra-Li模型与一些基本的线性模型。对于后者获得的适合模型是远远低于返回什么估计IDNLGREY模型。

nk =延迟(泽);arx22 = arx(泽(2 2 nk));%二阶线性ARX模型。arx33 = arx(泽,3 nk [3]);%三阶线性ARX模型。arx44 = arx(泽(4 4 nk));%四阶线性ARX模型。oe22 = oe(泽(2 2 nk));%二阶线性OE模型。oe33 = oe(泽,3 nk [3]);%三阶线性OE模型。oe44 = oe(泽(4 4 nk));%四阶线性OE模型。clf无花果= gcf;Pos = fig.Position;fig.Position = [Pos (1:2) * 0.7, Pos (3) * 1.3, Pos (4) * 1.3);比较(zv nlgr,“b”arx22,“m -”arx33,”男:“arx44,“m——”,oe22,“g -”oe33,“旅客:”oe44,“g——”);

图8:比较真实的输出和模拟输出的数量估计Narendra-Li模型。

结论

在这个示例中,我们使用了一个虚构的离散时间Narendra-Li基准体系来说明执行离散IDNLGREY建模的基础。