经典PID计算:可以使用增量式的公式:y(n)=y(n-1)+Kp*[e(n)-e(n-1)]+Ki*e(n)+Kd*[e(n)+e(n-2)-2*e(n-1)]
需要说明广义预测控制和PID控制输出都需要设置输出值限幅。
工业实现:可以用c语言编写程序作为控制软件的控制代码,硬件平台可以是一台工控机或者PLC,另外也有这方面的软件包,不过很贵。
我没有自己看你的程序,不过通过图可以看得清楚啊,实际输出用‘o’表示,预测的用‘+’表示。第一个图估计是初始化,也就是第一步,预测还没有开始,还是相等的点。而下图表示,已经预测结束,与实际基本吻合。%由于数据比较大,我又懒得用归一化,所以直接把数据降了3个数量级,%不过我觉得应该没问题,但用归一化结果应该更准确些。。
%由于初始权值和阀值均是随机给的,所以每次仿真都有点点不同,这是正常的。
p=[1183 1303 12781303 1278 12841278 1284 1187 ...
1284 1187 11541187 1154 12671154 1267 1241...
1267 1241 13021241 1302 11951302 1195 1256]'*0.001
t=[ 1284 1187 1154 1267 1241 1302 1195 1256 1348]*0.001
net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingda')
net.trainParam.goal=0.001
net.trainParam.show=20
net.trainParam.epochs=1000
net.trainParam.min_grad=1e-10
net.trainParam.mc=0.95
[net,tr]=train(net,p,t)
t1=sim(net,[1302 1195 1256]'*0.001)
t2013=t1*1000%2013 的 预测 数据
运行结果:
t2013 =
1301.9
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)