用C语言实现BP神经网络pid算法
#include<stdio.h>
#include<math.h>
#define N 3 //输入层神经元个数,即输入变量个数
#define M 2 //隐含层神经元个数
#define K 1 //输出层神经元个数,即输出变量个数
/***************************定义BP神经网络的参数****************************/
double p[N+1]={0,0.15,0.2};//输入层的权重w[i][j],i表示上一层的序号,j表示本层的序号
double q[M+1]={0,0.25,0.3};//隐含层的权重w[i][j],i表示上一层的序号,j表示本层的序号
double r[K+1]={0,0.4};//输出层的权重w[i][j],i表示上一层的序号,j表示本极大化或极小化目标函数时用到。例如极大化目标函数f(x)时尽量使得f(x)尽量大。而在PID中常常会用到这样 的思想。例如在PID中控制误差e=y-y*尽量接近于零。因此这是一个最优化问题。 其核心思想是通过不断修正权重使得误差e=y-y*尽 力去实 现最优化目标。 其整体流 程是通过不断修正权 重使得误差e=y-y* 逐 渐靠 近于零从而实 现对 PID 性能 的优 化。
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。