matlab基于最小二乘、全局化算法、遗传算法的参数识别

上传人:woxinch****an2018 文档编号:39319537 上传时间:2018-05-14 格式:DOC 页数:7 大小:126.50KB
返回 下载 相关 举报
matlab基于最小二乘、全局化算法、遗传算法的参数识别_第1页
第1页 / 共7页
matlab基于最小二乘、全局化算法、遗传算法的参数识别_第2页
第2页 / 共7页
matlab基于最小二乘、全局化算法、遗传算法的参数识别_第3页
第3页 / 共7页
matlab基于最小二乘、全局化算法、遗传算法的参数识别_第4页
第4页 / 共7页
matlab基于最小二乘、全局化算法、遗传算法的参数识别_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《matlab基于最小二乘、全局化算法、遗传算法的参数识别》由会员分享,可在线阅读,更多相关《matlab基于最小二乘、全局化算法、遗传算法的参数识别(7页珍藏版)》请在金锄头文库上搜索。

1、最小二乘法:最小二乘法: %递推公式,更新 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;%计算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:包含算法控制参数的结构 LineSearch

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

4、阵(on ,off) MaxFunEvals 目标函数最大调用次数 LevenbergMarquardt 搜索方向选用 LM 法(on), GN 法(off,缺省值) LineSearchType 线搜索方法(cubicpoly,quadcubic(缺省值) LargeScale: on | off LevenbergMarquardt: on | off 例子1用matlab实现对 4 . 0, 4, sin122sinsin 22 kmmf 设1 首先编写首先编写m文件文件 function f =lsq(x,xdata)f=x(1)*sin(xdata)+0.5*x(2)*sin(2*x

5、data)./(1-x(2)2*sin(xdata).2).0.5 2 利用利用lsqcurvefit函数调用函数调用m文件文件 m=4;k=0.4 o=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-016 2 nlinfit m=4;k=0.4; o=0:0.005*pi:2*pi

6、; 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.11.1 用用 fminuncfminunc 函数;函数; 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(

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

8、E)/sqrt(n);%使用使用rms准则准则 例子例子1.31.3 利用利用multistartmultistart方法方法 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

9、(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.41.4 利用利用 globalsearchglobalsearch 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)

10、; 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.51.5 利用利用 multistartmultistart 和和 lsqcurvefitlsqcurvefit k1=13;k2=1.3;k

11、3=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,p

12、roblem,100) functionfunction y=myfun(x,xdata)y=myfun(x,xdata) y=x(1).*exp(x(2).*xdata)+x(3).*sin(xdata); 例子例子 1.61.6 利用利用 multistartmultistart 和和 lsqnonlin(8s)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)-yd

13、ata; 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;

14、 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,iterms=MultiStart(Display,iter,UseParallel,always);); opts=optimset(Algorithm, trust-region-reflective); matlabpool open 2 problem=createOptimProblem(lsqnonlin,x0,10,

15、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.0 ydata = 16.5 150.6 263.1 k0 = 0,0,0 x,resnorm=lsqcurvefit(parameter_identification,k0,xdata,ydata) 例子例子3 (带参数限制条件的)(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号