matlab基于最小二乘、全局化算法、遗传算法的参数识别.doc_第1页
matlab基于最小二乘、全局化算法、遗传算法的参数识别.doc_第2页
matlab基于最小二乘、全局化算法、遗传算法的参数识别.doc_第3页
matlab基于最小二乘、全局化算法、遗传算法的参数识别.doc_第4页
matlab基于最小二乘、全局化算法、遗传算法的参数识别.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最小二乘法:%递推公式,更新p0=p2;for n=2:N-1%递推最小二乘法 K0=p0*X(n,:)*inv(1+X(n,:)*p0*X(n,:);%计算 Theta_abs=Theta_abs+K0*(Y(n)-X(n,:)*Theta_abs);%计算估计值Theta; p3=p0-K0*X(n,:)*p0;%计算P p0=p3; %误差平方和最小 Y1=X(n,:)*Theta_abs;%递推值 J=(Y(n,:)-Y1)*(Y(n,:)-Y1) if (J0:收敛 0:函数调用次数或迭代次数达到最大值(该值在options中指定) 0:不收敛5) out: 包含以下数据的一个结构变量 funcCount 函数调用次数 iterations 实际迭代次数 cgiterations 实际PCG迭代次数(大规模计算用) algorithm 实际使用的算法 stepsize 最后迭代步长(中等规模计算用) firstorderopt 一阶最优条件满足的情况(大规模计算用)6) lam:上下界所对应的Lagrange乘子7) jac:结果(x点)处的雅可比矩阵输入参数其中输入变量的含义为: x0为初始解(缺省时程序自动取x0=0) t,y: 拟合数据 v1,v2: 参数待求x的上下界 options:包含算法控制参数的结构LineSearchType 线搜索方法(cubicpoly,quadcubic(缺省值)opt=optimset(oldopts,newopts)可以设定的参数比较多,对lsqnonlin和lsqcurvefit,常用的有以下一些参数:Diagnostics 是否显示诊断信息( on 或off)Display 显示信息的级别(off , iter , final,notify)LargeScale 是否采用大规模算法( on 或off)缺省值为onMaxIter 最大迭代次数TolFun 函数计算的误差限TolX 决策变量的误差限Jacobian 目标函数是否采用分析Jacobi矩阵(on ,off)MaxFunEvals 目标函数最大调用次数LevenbergMarquardt 搜索方向选用LM法(on), GN法(off,缺省值)LineSearchType 线搜索方法(cubicpoly,quadcubic(缺省值)LargeScale: on | off LevenbergMarquardt: on | off 例子1用matlab实现对1 首先编写m文件function f =lsq(x,xdata)f=x(1)*sin(xdata)+0.5*x(2)*sin(2*xdata)./(1-x(2)2*sin(xdata).2).0.52 利用lsqcurvefit函数调用m文件m=4;k=0.4o=0:0.01*pi:2*pi;xdata=o;ydata=m*sin(o)+0.5*k*sin(2*o)./(1-(k2*sin(o).2).0.5;x0 = 0; 0;x,resnorm = lsqcurvefit(lsq,x0,xdata,ydata)结果得到:x(1)= 4.0000;x(2)=0.4000;resnorm = 6.3377e-0162 nlinfitm=4;k=0.4;o=0:0.005*pi:2*pi;xdata=o;ydata=m*sin(o)+0.5*k*sin(2*o)./(1-(k2*sin(o).2).0.5;x0 = 0; 0;beta = nlinfit(xdata,ydata,lsq,x0)例子1.1 用fminunc函数;k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)norm(x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata);x,fr = fminunc(F,0 0 0)x,fr = fminsearch(F,1 1 1)例子1.2 用遗传算法的参数识别k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)norm(x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata);x,fval = ga(F,3,10;1;8, 20;10;15)%ee=norm(E);%使用差平方和最小原则;或者使用sum(abs(E);%ee=norm(E)/sqrt(n);%使用rms准则例子1.3 利用multistart方法k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)norm(x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata);ms=MultiStart;opts=optimset(Algorithm,interior-point, LargeScale,off);problem=createOptimProblem(fmincon,x0,10,1,8,objective,F,lb,1,0,1,ub,20,10,15,options,opts);xminm,fminm,flagm,outptm,manyminsm=run(ms,problem,200)例子1.4 利用globalsearchk1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)norm(x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata);gs = GlobalSearch(Display,iter);opts=optimset(Algorithm,interior-point);problem=createOptimProblem(fmincon,x0,10,1,8,objective,F,lb,1,0,1,ub,20,10,15,options,opts);xming,fming,flagg,outptg,manyminsg = run(gs,problem)例子1.5 利用multistart和lsqcurvefitk1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);ms=MultiStart;opts=optimset(Algorithm, trust-region-reflective);problem=createOptimProblem(lsqcurvefit,x0,10,1,8,xdata,xdata, ydata,ydata,objective,myfun,lb,1,0,1,ub,20,10,15,options,opts);xminm,fminm,flagm,outptm,manyminsm=run(ms,problem,100)function y=myfun(x,xdata)y=x(1).*exp(x(2).*xdata)+x(3).*sin(xdata);例子1.6利用multistart和lsqnonlin(8s)k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata;ms=MultiStart;opts=optimset(Algorithm, trust-region-reflective);problem=createOptimProblem(lsqnonlin,x0,10,1,8,xdata,xdata, ydata,ydata,objective,F,lb,1,0,1,ub,20,10,15,options,opts);xminm,fminm,flagm,outptm,manyminsm=run(ms,problem,100)1.7 利用matlabpool parallel加速tic;k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata;ms=MultiStart(Display,iter,UseParallel,always);opts=optimset(Algorithm, trust-region-reflective);matlabpool open 2problem=createOptimProblem(lsqnonlin,x0,10,1,8,xdata,xdata, ydata,ydata,objective,F,lb,1,0,1,ub,20,10,15,options,opts);xminm,fminm,flagm,outptm,manyminsm=run(ms,problem,100)time=toc;%47.3541s函数模型 function y=myfun(x,xdata)y=x(1)*exp(x(2).*xdata)+x(3)*sin(xdata);例子2(多输入变量)function F=myfun(k,xdata)F = k(1)*xdata(:,1)+k(2)*xdata(:,2)+k(3)*xdata(:,3);xdata = 3.6 7.7 9.3; 4.1 8.6 2.8; 1.3 7.9 10.0ydata = 16.5 150.6 263.1k0 = 0,0,0x,resnorm=lsqcurvefit(parameter_identification,k0,xdata,ydata)例子3 (带参数限制条件的)M函数:function F = myfun(k,xdata)F = k(1)*exp(k(2)*x)+k(3)*sin(x);Workspace 代码:k1=13;k2=1.3;k3=9.1;x=0:pi/100:pi;y = k1*exp(k2*x)+k3*sin(x);k0=-1,-1,-1k,resnorm=lsqcurvefit(myfun,k0,x,y,5,0.1,2,20,8,15)结果k = 13.0000 1.3000 9.1000例子3 lsqnonlin%编写M文件: function E = myfun

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论