基于Matlab的广义最小方差自校正控制

目录

前言

一、广义最小方差自校正控制

二、控制理论

三、举例说明

四、Matlab代码

五、结果分析

总结


前言

上文中介绍了最小方差自校正控制,《基于Matlab的最小方差自校正控制》提到了主要的两个缺点,要求对象是最小相位系统以及无输入约束,为了解决这些缺陷,提出里广义最小方差自校正控制。

一、广义最小方差自校正控制

广义最小方差自校正控制(Generalized Minimum Variance Self-Tuning Control, GMVSTC)是在最小方差自校正控制(Minimum Variance Self-Tuning Control, MVSTC) 基础上的改进与扩展,核心优势在于解决了 MVSTC 在实际工业场景中存在的局限性,更贴合复杂系统的控制需求。

GMVSTC 通过引入加权目标函数广义误差项, 实现 "精度 - 能耗 - 可靠性" 的多目标优化。加权目标函数还能抑制了高频控制分量,减少了噪声放大效应。目标函数的广义化也使控制律更平滑,降低了对模型参数误差的敏感

GMVSTC 的优点使其在工业控制中更具实用性,尤其适合以下场景:

  1. 有执行器约束的系统:如电机(电流 / 转速限制)、阀门(开度范围限制)、机械臂(力矩限制);
  2. 非最小相位系统:如某些化工过程、电磁耦合系统、含延迟的传动系统;
  3. 对能耗和设备损耗敏感的系统:如新能源设备、长期运行的工业生产线;
  4. 需要多目标优化的复杂系统:如机器人控制、精密制造设备、自动驾驶中的执行器控制。

但GMVSTC也有一个明显缺点,那就是对噪声很敏感,相比MVSTC会放大噪声。所以实际中一般搭配噪声滤波使用。

而 MVSTC 仅适用于简单的最小相位系统(如实验室中的低阶线性系统),且对控制输入无严格要求的场景(如仿真验证、理论研究)。

二、控制理论

有大量公式同前文,这里就简单解释。对于一个随机模型如下:

在最小方差自校正控制中选取的性能指标函数为:

广义最小方差自校正控制有所不同,性能指标函数更改为:

式中y(k+d),yr(k+d)分别为(k+d)时刻的系统实际输出及期望输出,u(k)为k时刻的输入,P(z)、R(z)、Q(z)为加权多项式,作用分别是改善系统闭环性能、柔化期望输出和约束输入信号,定义为:

与最小方差自校正控制一样,有了性能指标函数,接下来解出使性能指标达到最优极小的表达式为最小控制律:

式中出现的G(z)、F(z)为丢番 (Diophantine) 方程的解,结合随机模型,得到广义最小方差自校正控制的结构框图为:

可以解的该系统的闭环特征方程为:

可以看出,即使B(z)为不稳定多项式,仍可通过选择合适的Q(z)和P(z)使系统稳定以及得到良好的闭环动态性能。如果Q(z) = 0,会发现性能指标函数不包含对u(k)的约束作用,而且特征方程变为B(z)P(z) = 0,B(z)的零点就是闭环极点,如果B(z)为非最小相位多项式此时系统不稳定,于是退化成最小方差自校正控制。

所以在进行系统设置中,一般可选P(z) = 1、R(z) = 1、Q(z) = q0。此时q0的大小要在稳定性和快速性之间权衡,若q0过小,接近于最小方差自校正控制,失去了作用。若q0过大,虽然稳定性能满足,但由于对u(k)的约束太强而使系统等效于开环状态,达不到最小方差控制的目的。当单独的q0难以达到理想状态,可以提高Q(z)的阶次。

另外,求得y(k)表达式(带入P(z) = 1、R(z) = 1、Q(z) = q0)为:

可知,q0会引入稳态误差,当q0 = 0时,y(k) = yr(k)、稳态误差为零,q0越大、稳态误差越大。但也不是绝对,当A(1) = 0时,q0就不会引入稳态误差。

另外,当q0越大,噪声所占比重就越大,当q0 = 0时,噪声比重达到最小。

三、举例说明

给定一个具体的系统模型如下:

系统离散化。选取采用周期为0.1s,将系统进行零阶保持器的 Z 变换得到:

为了测试效果,给系统一个幅值为0,方差为0.1的噪声扰动信号,求得差分方程为:

求得:

解的B(z)的极点为0,零点为0.1237和-1.5291,其中一个解位于单位圆外,为非最小相位系统,

接下来步骤同上文一样,直接看代码。

四、Matlab代码

Matlab 复制代码
s = tf('s');%定义符号变量 s
%定义连续系统传递函数
G_continue = (s + 20) / (s*(s^2 + 4*s + 4)) * exp(-0.3*s);
T = 0.1; %采样周期 (单位:秒)
method = 'zoh'; %离散化方法:零阶保持器
G_discrete = c2d(G_continue, T, method); %连续系统离散化
[GB,GA] = tfdata(G_discrete);  %提取分子、分母系数
GA = GA{1}; GB = GB{1}(2:numel(GB{1}));
GC = [1 0.2]; d = 4;%其他参数
GP = 1; GR = 1; GQ = 0.3;%P(z) = 1、R(z) = 1、Q(z) = q0;
%计算各多项式的阶次
nA = length(GA)-1;
nB = length(GB)-1;
nC = length(GC)-1;
nE = d-1;
nG = nA-1;
nF = nB+d-1;

L = 4000;%计算步长
yr = 100*[ones(1,L/4) -ones(1,L/4) ones(1,L/4) -ones(1,L/4)];%期望输出
u_noise = sqrt(0.01) * randn(1,L);%噪声信号
%u_noise = zeros(1,L);
[Ge,Gf,Gg] = sindiophantine(GA,GB,GC,d); %丢番方程计算

% T(z)u(k) = C(z)yr(k+d) - Gy(k)
GT = zeros(1,nF+1);
GT(1:nC+1) = GQ^2 * GC/GB(1) + Gf(1:nC+1)*GR;
GT(nC+2:nF+1) = Gf(nC+2:nF+1);
%空间分配
time = zeros(1,L);
y = zeros(1,L);
u = zeros(1,L);
%让t=10设为0时刻,则之前的时刻方便表达
t = 10;
for k=t:L-t
    time(k) = k-t+1;
    y(k) = -GA(2:nA+1)*[y(k-1);y(k-2);y(k-3)]+GB*[u(k-4);u(k-5);u(k-6)]+GC*[u_noise(k);u_noise(k-1)];
    u(k) = (-GT(2:nF+1)*[u(k-1);u(k-2);u(k-3);u(k-4);u(k-5)]+GC*GR*[yr(k+4);yr(k+3)]-Gg*GP*[y(k);y(k-1);y(k-2)])/GT(1);
end
figure(1);
subplot(2,1,1);
plot(time(t:L-t),yr(t:L-t),'r',time(t:L-t),y(t:L-t),'b--');
xlabel('k');ylabel('yr(k)、y(k)');
legend('期望输出yr(k)','实际输出y(k)');
grid on;
subplot(2,1,2);
plot(time(t:L-t),u(t:L-t));
xlabel('k');ylabel('u(k)');
legend('输入u(k)');
grid on;

五、结果分析

阶跃信号幅值为10,q0为0.3,无噪声:

阶跃信号幅值为10,q0为1,无噪声:

可以看出,增大q0会加大u(k)的约束,但同时上升缓慢,动态性能减弱。

阶跃信号幅值为10,q0为0.3,引入方差为0.1的噪声:

阶跃信号幅值为100,q0为0.3,引入方差为0.1的噪声:

可以看出幅值越大,噪声的影响约小。

阶跃信号幅值为100,q0为0.3,引入方差为0.1的噪声,步长增加到4000:


总结

广义最小方差自校正控制相比最小方差自校正控制会扩大噪声,实际中光靠广义最小方差自校正控制本身很难控制下来。

增加q0:稳态误差增大(非常不明显),动态性能减弱(非常明显),对u(k)的约束增强

相关推荐
aini_lovee17 小时前
MATLAB基于小波技术的图像融合实现
开发语言·人工智能·matlab
3GPP仿真实验室18 小时前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
rit84324991 天前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab
我找到地球的支点啦1 天前
通信扩展——扩频技术(超级详细,附带Matlab代码)
开发语言·matlab
Dev7z1 天前
基于 MATLAB 的铣削切削力建模与仿真
开发语言·matlab
fengfuyao9852 天前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
机器学习之心2 天前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab
rit84324992 天前
基于MATLAB的环境障碍模型构建与蚁群算法路径规划实现
开发语言·算法·matlab
hoiii1872 天前
MATLAB SGM(半全局匹配)算法实现
前端·算法·matlab
yong99902 天前
MATLAB面波频散曲线反演程序
开发语言·算法·matlab