1.基于RBF网络逼近的自适应控制

1.1 问题描述

简单的运动系统动力学方程为:

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数       (1)

其中,【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_02:角度,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_03:控制输入。

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_04,【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_05,则状态方程形式为:

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_06                

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_07    (2)

其中,【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08为未知非线性函数。

假定位置指令:【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_09,则误差及其变化率:

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_10                    

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_11    

定义误差函数(形似滑模面):

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_12,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_13    (3)

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_14

       【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_15

 【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_16    (4)

由式(3)可知,如果【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_17,则有【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_18,且【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_19

若对滑模控制有了解的,可以发现上述误差函数 (3) 的形式与滑模控制中的滑模面类似,可以看一下文章【控制】滑模控制,滑模面的选择。这里还有滑模的解决方案,也就是趋近律的选择。

借助趋近律【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_20,其中【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_21,那么基于上式(4)可以得到:

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_22

                    【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_23                 (5)

式(5)包含了未知非线性函数【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08的系统控制器。

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08往往是未知的,没有一个具体的显式表达式,而这个控制器并不能让系统达到期望输入,根本原因就是【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08的存在影响了系统。

1.2 验证没有未知干扰项的控制器

为了方便理解,先验证一下没有未知项【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08干扰时的控制器。

也就是将模型式 (2) 简化为:

   【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_06

         【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_29                         (6)

将控制器式(5)简化为: 

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_30  (7)

系统初始状态:【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_31【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_32

期望状态:【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_33。参数假设为【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_34

虽然我们把未知干扰项【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08简化掉了,但在这里还是给出了一个【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_36。画画图看看效果。

  • 首先是没有未知干扰项【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08的仿真结果,如下图所示。

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_38

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_39

  • 紧接着给出有未知干扰项【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08的仿真结果。

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_41

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_42

  • 最后再把程序给出。

clear
clc

%%
% states初始状态
x_1(:,1) = 2;
x_2(:,1) = 0.2;

fx(:,1) = 10 * x_1(:,1) * x_2(:,1);

% Control inputs控制输入初态
u(:,1) = 0;

% Desired 期望
x_d(:,1) = sin(0);
ddot_x_d(:,1) = cos(0);
dot_x_d(:,1) = -sin(0);

% Parameters参数
c = 1;
eta = 0.5;

%% Time state时间t
t(1,1) = 0;
tBegin = 0;
tFinal = 20;
dT = 0.05;
times = (tFinal-tBegin)/dT;

% Iterations 迭代
for i=1:times
% Record time记录时间
t(:,i+1) = t(:,i) + dT;

% error误差
x_d(:,i+1) = sin(t(:,i+1));
e = x_1(:,i) - x_d(:,i+1);

dot_x_d(:,i+1) = cos(t(:,i+1));
dot_e = x_2(:,i) - dot_x_d(:,i+1);

s = c*e + dot_e;

% control input控制输入
ddot_x_d(:,i+1) = -sin(t(:,i+1));
u(:,i+1) = -c*dot_e + ddot_x_d(:,i+1) - eta * sign(s);

% update states更新状态
x_2(:,i+1) = x_2(:,i) + dT * ( 0*fx(:,i)+u(:,i+1) );
x_1(:,i+1) = x_1(:,i) + dT * x_2(:,i+1);

% update unknown更新未知非线性函数
fx(:,i+1) = 10 * x_1(:,i+1) * x_2(:,i+1);
end

%% Plot results 可视化结果
figure(1)
subplot(2,1,1)
plot(t,x_1, t,x_d, 'linewidth',1.5); %x_1实际输出与期望输出
hold on
legend('$x_{1}$', '$x_{d}$', 'interpreter','latex');
grid on

subplot(2,1,2)
plot(t,x_2, t,dot_x_d, 'linewidth',1.5); %x_2实际输出与期望输出
hold on
legend('$x_{2}$', '$\dot{x}_{d}$', 'interpreter', 'latex');
grid on

figure(2)
subplot(2,1,1)
plot(t,u, 'linewidth',1.5); %控制输入
hold on
legend('$u$', 'interpreter','latex');
grid on

subplot(2,1,2)
plot(t,fx, 'linewidth',1.5); %未知函数
hold on
legend('$f(x)$', 'interpreter','latex');
grid on

1.3 RBF网络原理

对比上述结果也可以看到,未知干扰项【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08对系统影响特别大。这时候就需要 RBF 来发挥作用了。

由于RBF网络具有万能逼近特性,采用RBF神经网络逼近【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08,网络算法为:

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_45        (8)

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_46           (9)

其中,【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_47为网络的输入,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_48为网络隐含层第【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_48个节点,【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_50为网络的高斯基函数输出,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_51为网络的理想权值,【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_52为网络的逼近误差,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_53

这里我们使用系统的状态【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_54作为神经网络的输入,那么输入节点就为2。隐含层节点暂定为 5。输出层因为是对未知函数【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08的估计,因此输出节点为1。

由式 (2),网络输入取状态变量【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_56,则网络输出为:

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_57          (10)

未知函数【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_08的误差为:

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_59=【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_60      (11)

接下来的任务就很清晰了,就是想办法让误差减少,这也等价于优化实际的权重【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_61,让其无限逼近理想权重值【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_62

1.4 RBF控制算法的设计与分析

更新 RBF 网络的权重值,这里介绍两种方法,分别是梯度下降法和稳定性理论设计法。

1.4.1 梯度下降法

由于使用梯度下降法来更新权重的资料很多,这里不再赘述。

1.4.2 稳定性理论设计法

介绍基于 Lyapunov 稳定性理论的设计法。

定义Lyapunov函数为:

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_63   (12)

其中,【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_64,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_65。则

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_66

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_67

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_68              (13)

设计控制律为:

                         【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_69                   (14)

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_70

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_71

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_72

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_73

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_74                         (15)

取自适应律为:

                        【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_75                      (16)

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_76

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_77

再令【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_78>【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_79,则有【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_80

1.4 验证含有未知干扰项和RBF的控制器

考虑如下被控对象:

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_06

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_07

其中,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_36

控制律采用式(14),自适应律采用式(16)。

RBF 网络采用2-5-1的神经网络结构。

参数取【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_84, 【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_85。根据网络的输入【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_86【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_87的实际范围,高斯基函数的参数【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_88【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_89的值分别为【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_90和0.3。网络权值矩阵中各个元素的初始值取【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_91

  • 仿真结果

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_92

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_93

注:谈一点自己再调试程序时的感受。 一开始各种振荡,而且效果特别不好。然后就是不停的调参数,但是一直不理想。

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_94

后来转变了一下思路,因为控制器振荡这个是滑模控制中趋近律的问题,这一点可以通过 3.2 控制器效果看出来,很振荡。

所以,我紧接着就回退了一步,想着要不先把控制器中的振荡问题解决掉吧,采用的解决方案就是修改符号函数【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_95 改成饱和函数【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_96,然后程序就好了结果很完美。于是,我就又想着再把饱和函数改回到符号函数,结果效果还是很好。现在想回去之前的振荡效果都回不去了,就很迷茫😂。这个疑惑🤔先留待着吧,把程序放出来。

  • 程序

%%主函数
clear
clc

%%初始状态
% states
x_1(:,1) = 2;
x_2(:,1) = 0.2;

fx(:,1) = 10 * x_1(:,1) * x_2(:,1);

% Control inputs控制输入初态
u(:,1) = 0;

% Desired
x_d(:,1) = sin(0);
ddot_x_d(:,1) = cos(0);
dot_x_d(:,1) = -sin(0);

% Parameters参数
c = 1;
eta = 0.5;

% RBF神经网络参数
InpLayNum = 2;
HidLayNum = 5;
OutLayNum = 1;
gamma = 500;
eta = 0.5;
c_i = [-2 -1 0 1 1
-2 -1 0 1 1];
b_i = 3;
hat_W = 0.1*ones(HidLayNum, OutLayNum);

%% Time state时间t
t(1,1) = 0;
tBegin = 0;
tFinal = 20;
dT = 0.01;
times = (tFinal-tBegin)/dT;

% Iterations迭代
for i=1:times
% Record time 记录时间
t(:,i+1) = t(:,i) + dT;

% error误差
x_d(:,i+1) = sin(t(:,i+1));
e = x_1(:,i) - x_d(:,i+1);

dot_x_d(:,i+1) = cos(t(:,i+1));
dot_e = x_2(:,i) - dot_x_d(:,i+1);

s = c*e + dot_e;

% RBF
% calculate Gaussian basis function 计算高斯基函数
for j = 1:HidLayNum
h(j,:) = exp( -norm([x_1(:,i); x_2(:,i)]-c_i(:,j))^2/(2*b_i^2) );
end

hat_fx(:,i+1) = hat_W' * h;

% adaptive law自适应律
hat_W = hat_W + dT * (gamma * s * h);

% control input控制输入
ddot_x_d(:,i+1) = -sin(t(:,i+1));
u(:,i+1) = -c*dot_e + ddot_x_d(:,i+1) - eta * sign(s) - hat_fx(:,i+1);

% update states更新状态
x_2(:,i+1) = x_2(:,i) + dT * ( fx(:,i)+u(:,i+1) );
x_1(:,i+1) = x_1(:,i) + dT * x_2(:,i+1);

% update unknown更新未知非线性函数
fx(:,i+1) = 10 * x_1(:,i+1) * x_2(:,i+1);
end

%% Plot results可视化
figure(1)
subplot(2,1,1)
plot(t,x_1, t,x_d, 'linewidth',1.5);
legend('$x_{1}$', '$x_{d}$', 'interpreter','latex');
grid on

subplot(2,1,2)
plot(t,x_2, t,dot_x_d, 'linewidth',1.5);
legend('$x_{2}$', '$\dot{x}_{d}$', 'interpreter', 'latex');
grid on

figure(2)
subplot(2,1,1)
plot(t,u, 'linewidth',1.5);
legend('$u$', 'interpreter','latex');
grid on

subplot(2,1,2)
plot(t,fx, t,hat_fx,'k:', 'linewidth',1.5);
legend('$f(x)$', '$\hat{f}(x)$', 'interpreter','latex');
grid on

%%饱和函数_子函数
function out = sat(s)
out = sign(s) * min(10,abs(s));
end

2.RBF神经网络及其在控制中的应用简介

RBF神经网络在控制中的应用,可以按其隐含层与输出层连接权值的计算方式分为以下两类:梯度下降法计算权值和稳定性理论设计权值。

2.1 梯度下降法计算权值

暂不做分析。

2.2 稳定性理论设计权值

依据稳定性理论设计权值,即通过分析系统的Lyapunov稳定性,设计权值,从而保证系统的稳定性和收敛性。

考虑如下二阶非线性系统,以自适应RBF控制器的设计为例,对该权值设计方式进行简要介绍。

【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_97

其中,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_98为未知非线性函数;【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_99为已知非线性函数;【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_100【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_101分别为系统的控制输入和输出。

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_102,则上式可以改写为:

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_103

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_104

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_105

设理想跟踪指令为【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_106,则误差为:

【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_107,【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_108

设计【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_109,使得多项式【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_110的根都在左半平面。

将RBF神经网络的输出代替成二阶非线性系统中的未知函数,可设计控制律为:

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_111

其中【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_57【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_113为径向基函数,【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_61为理想权值【控制】基于RBF径向基神经网络的自适应控制(2)_自适应控制_115的估计。权值估计误差【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_65

通过分析系统的稳定性,可以设计权值(即自适应律)计算方法为:

【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_117

其中,【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_118,矩阵【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_119为对称正定的矩阵且满足如下Lyapunov方程:

【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_120

其中,【控制】基于RBF径向基神经网络的自适应控制(2)_误差函数_121,【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_122【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_64

则可通过设计RBF神经网络使逼近误差足够小,从而保证系统的稳定,证明见[1]。

在实际的控制系统设计中,为了保证网络的输人值处于高斯基函数的有效范围,应根据网络的输人值实际范围确定高斯基函数中心点坐标向量【控制】基于RBF径向基神经网络的自适应控制(2)_滑模面_124值,为了保证高斯基函数的有效映射,需要将高斯基函数的宽度【控制】基于RBF径向基神经网络的自适应控制(2)_RBF_125取适当的值。

依据稳定性理论设计的RBF神经网络,既可用于逼近未知参数或未知函数,又可直接作为控制器控制系统,进而又可以和鲁棒控制、滑模控制、反演控制等等理论相结合,进行控制器的设计。

目前,已经产生了基于RBF神经网络的直接鲁棒自适应控制[2]、基于RBF神经网络的滑模控制[3]、基于RBF网络的动态面自适应控制[4]、以及基于RBF观测器的自适应控制[5]等等方法,为非线性控制问题的解决提供了新的思路。

3.总结

这一小节简要介绍了RBF神经网络以及其在控制中的应用,由于RBF神经网络独特的结构,可以大大加快学习速度,并避免局部极小问题,可用于在线的辨识或控制,有着很大的发展潜力,可以进一步尝试应用于非线性系统的辨识与控制之中。

[1]刘金琨. RBF神经网络自适应控制MATLAB仿真[M]. 清华大学出版社, 2014.

[2] Ge S S , Hang C C , Zhang T . A direct method for robust adaptive nonlinear control with guaranteed transient performance[J]. Systems & Control Letters, 1999, 37(5):275-284.

[3] Guo Yi, Jinkun LIU,Neural Network Based Adaptive Dynamic Surface Control for Flight Path Angle[C],the 51th IEEE Conference on Decision and Control, December 10- 13,2012, 5374- 5379,Maui, Hawaii, USA, 2012.

[4] Sonfack L L , Kenné, Godpromesse, Fombu A M . An improved adaptive RBF neuro-sliding mode control strategy: Application to a static synchronous series compensator controlled system[J]. International Transactions on Electrical Energy Systems, 2019.

[5] Abdollahi F, Talebi H A, Patel R V (2006) A stable neural network based observer with application to flexible joint manipulators[J]. IEEE Trans Neural Netw 17(1):118~ 129.

________________END________________