MATLAB神经网络(6) PID神经元网络解耦控制算法——多变量系统控制

6.1 案例背景

6.1.1 PID神经元网络结构

PID神经元网络从结构上可以分为输入层、隐含层和输出层三层,$n$个控制量的PID神经元网络包含$n$个并列的相同子网络,各个子网络间既相互独立,又通过网络连接权值相互联系。每个子网络的输入层有两个神经元,分别接收控制量的目标值和当前值。每个子网络的隐含层由比例元、积分元和微分元构成,分别对应着PID控制器中的比例控制、积分控制和微分控制。PID神经元网络按被控系统控制量的个数可以分为控制单变量系统的单控制量神经元网络和控制多变量系统的多控制量神经元网络。其中单控制量神经元网络是PID神经元网络的基本形式,多控制量神经元网络可以看成是多个单控制量神经元网络的组合形式。

$X_{1}$是控制量的控制目标,$X_{2}$是控制量当前值,$Y$是神经元网络计算得到的控制律,${\omega _{ij}}$和${\omega _{jk}}$是网络权值,从中可以看到单控制量神经元网络是一个三层前向神经元网络,网络结构为2-3-1,隐含层包含比例元、积分元和微分元三个神经元。

多控制量神经元网络可以看成多个单控制量网络的并联连接,$X_{11},X_{21},...,X_{n1}$是控制量的控制目标,$X_{12},X_{22},...,X_{n2}$是控制量的当前值,$Y_{1},Y_{2},...,Y_{n}$是多控制量神经元网络计算得到的控制律,${\omega _{ij}}$和${\omega _{jk}}$是网络权值。

6.1.2 控制率

  • 输入层:输出数据$x_{si}$等于输入数据$X_{si}$:${x_{si}}(k) = {X_{si}}(k)$;
  • 隐含层:输入值\[ne{t_{sj}}(k) = \sum\limits_{i = 1}^2 {{\omega _{ij}}{x_{si}}(k)\;\;\;j = 1,2,3} \]比例神经元\[{u_{s1}} = ne{t_{s1}}(k)\]积分神经元\[{u_{s2}} = ne{t_{s2}}(k) + ne{t_{s2}}(k - 1)\]微分神经元\[{u_{s3}} = ne{t_{s3}}(k) - ne{t_{s3}}(k - 1)\]
  • 输出层:\[{y_k} = \sum\limits_{s = 1}^n {\sum\limits_{j = 1}^3 {{\omega _{jk}}{u_{sj}}(k)} } \]

6.1.3 权值修正

误差计算公式:\[J = \sum {E = \sum\limits_{k = 1}^n {{{[{y_h}(k) - r(k)]}^2}} } \]其中$n$为输出节点个数,$y_{h}(k)$为预测输出,$r(k)$为控制目标。

  • 输出层到隐含层:\[{\omega _{jk}}(k + 1) = {\omega _{jk}}(k) - \eta \frac{{\partial J}}{{\partial {\omega _{jk}}}}\]
  • 输入层到输出层:\[{\omega _{ij}}(k + 1) = {\omega _{ij}}(k) - \eta \frac{{\partial J}}{{\partial {\omega _{ij}}}}\]

其中$\eta$为学习速率。

6.1.4 控制对象

传递函数:

\[\left\{ \begin{array}{l}
{y_1}(k) = 0.4{y_1}(k - 1) + {u_1}(k - 1)/[1 + {u_1}{(k - 1)^2}] + 0.2{u_1}{(k - 1)^3} + 0.5{u_2}(k - 1) + 0.3{y_2}(k - 1)\\
{y_2}(k) = 0.2{y_2}(k - 1) + {u_2}(k - 1)/[1 + {u_2}{(k - 1)^2}] + 0.4{u_2}{(k - 1)^3} + 0.2{u_1}(k - 1) + 0.3{y_3}(k - 1)\\
{y_3}(k) = 0.3{y_3}(k - 1) + {u_3}(k - 1)/[1 + {u_3}{(k - 1)^2}] + 0.4{u_3}{(k - 1)^3} + 0.4{u_2}(k - 1) + 0.3{y_1}(k - 1)
\end{array} \right.\]

6.2 模型建立

猜你喜欢

转载自www.cnblogs.com/dingdangsunny/p/12335248.html