Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2013-02-07, 15:10   #1
qihailong0602
初级会员
 
注册日期: 2013-02-07
帖子: 1
声望力: 0
qihailong0602 正向着好的方向发展
问题 非线性神经网络模型的模型预测控制 程序问题

算法描述:
1、线性化神经网络模型,计算得到动态矩阵G(k);(采用的方法是在x(k)点泰勒展开,一阶导数作为线性化模型的系数a、b,系统是二阶的,利用到了神经网络模型y(k)=w0+权值求和...);
2、利用神经网络模型计算非线性自由轨迹y0,(方法是将y0表示成y0=w0+权值求和zi0+d(k)即偏差);
3、解决二次规划问题,求的du;
4、u(k)=du+u(k-1);
5、循环

问题:1、线性化的时候用到的神经网络函数为tanh,直接将一次偏导近似为1-tanh2(zi(x(k))),但是zi((x(k)))是没法计算的,只能计算zi(k),也就是各个node的输入和,可以直接用zi(k)代替zi(x(k))吗?
2、第三步用到的二次规划是标准形式,即 min{0.5x'*H*x+f'x}, A*x<=b,我可以直接在matlab用quadprog函数吗?
opts=optimset('Algorithm','active-set','Display','off');
[x,fval,exitflag,output,lambda]=quadprog(H,f,A,b,[],[],[],[],[],opts);

这么设置对吗?

3、
我写的程序的步骤:
1、检测实际输出,计算误差dk ----------计算偏差,设初始预测值为y(1) (实际输出其实还没得到,因为没实际模型.. 这也是个问题,没法求偏差?)
2、计算G(k)(用于预测模型y=y0+G*du) ----------用到神经网络
3、求预测初值y0 ----------用到神经网络
4、求控制增量du ----------解二次规划问题
5、计算控制量 ----------取控制序列第一个元素
6、计算输出预测 ----------使用预测模型G
返回循环

请教各位!不胜感激!(遇到瓶颈了,出不来正确的图,又不知道错在哪,资料差了很多没相关内容,步骤倒是和DMC差不多...)
qihailong0602 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 12:27


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.