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

下载本文档

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

文档简介

1、实用标准文案最小二乘法:%递推公式,更新p0=p2;for n=2:N-1% 递推最小二乘法计算估计值 Theta ;K0=p0*X(n,:)*inv(1+X(n,:)*p0*X(n,:);% 计算Theta_abs=Theta_abs+K0*(Y(n)-X(n,:)*Theta_abs);%p3=p0-K0*X(n,:)*p0;% 计算 Pp0=p3;% 误差平方和最小Y1=X(n,:)*Theta_abs;% 递推值J=(Y(n,:)-Y1)*(Y(n,:)-Y1)if (J0 :收敛0:函数调用次数或迭代次数达到最大值(该值在 options 中指定)0 :不收敛5)out: 包含以下数

2、据的一个结构变量funcCount 函数调用次数iterations 实际迭代次数cgiterations 实际 PCG 迭代次数(大规模计算用)algorithm 实际使用的算法stepsize 最后迭代步长(中等规模计算用)firstorderopt 一阶最优条件满足的情况(大规模计算用)6)lam :上下界所对应的 Lagrange 乘子7)jac :结果( x 点)处的雅可比矩阵输入参数其中输入变量的含义为:x0 为初始解(缺省时程序自动取 x0=0 )t,y: 拟合数据v1,v2: 参数待求 x 的上下界options :包含算法控制参数的结构LineSearchType 线搜索方法

3、(cubicpoly ,quadcubic (缺省值 ) opt=optimset(oldopts,newopts)精彩文档实用标准文案可以设定的参数比较多,对 lsqnonlin 和 lsqcurvefit ,常用的有以下一些参数:Diagnostics 是否显示诊断信息( on 或off )Display 显示信息的级别( off , iter , final , notify )LargeScale 是否采用大规模算法( on 或 off )缺省值为 onMaxIter 最大迭代次数TolFun 函数计算的误差限TolX 决策变量的误差限Jacobian 目标函数是否采用分析 Jacob

4、i 矩阵( on ,off )MaxFunEvals 目标函数最大调用次数LevenbergMarquardt 搜索方向选用 LM 法( on ), GN 法(off ,缺省值)LineSearchType 线搜索方法 (cubicpoly ,quadcubic (缺省值 )LargeScale: on | off LevenbergMarquardt: on | off 例子 1用matlab 实现对msinsin21 2 2 ,设m2 12sin 24,k 0.4实用标准文案ydata=m*sin(o)+0.5*k*sin(2*o)./(1-(k2*sin(o).2).0.5;x0 = 0

5、; 0;x,resnorm = lsqcurvefit(lsq,x0,xdata,ydata)结果得到: x(1)= 4.0000;x(2)=0.4000;resnorm = 6.3377e-016 2 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

6、;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)

7、-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(Algor

8、ithm,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).*

9、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 和 lsqcurve

10、fit k1=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,manymi

11、nsm=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

12、-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)+

13、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,op

14、ts);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.0 ydata = 16.5 150.

15、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(k,x,y)F = k(1)*exp(k(2)*x)+k(3)*sin(x);E=F-y;k1=13;k2=1.3;k3=9.1;x=0:pi/100:pi;y = k1*exp(k2*x)+k3*sin(x);,displak0=-1,-1,-1 options=optimset(TolFun,1e-10,TolX,1e-10,MaxF

温馨提示

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

最新文档

评论

0/150

提交评论