收藏 分享(赏)

第9章+数学问题的非传统解法选讲.ppt

上传人:jmydc 文档编号:5320761 上传时间:2019-02-20 格式:PPT 页数:40 大小:797.50KB
下载 相关 举报
第9章+数学问题的非传统解法选讲.ppt_第1页
第1页 / 共40页
第9章+数学问题的非传统解法选讲.ppt_第2页
第2页 / 共40页
第9章+数学问题的非传统解法选讲.ppt_第3页
第3页 / 共40页
第9章+数学问题的非传统解法选讲.ppt_第4页
第4页 / 共40页
第9章+数学问题的非传统解法选讲.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、数学问题的非传统解法选讲,遗传算法及其在最优化问题中的应用神经网络及其在数据拟合中的应用,9.1遗传算法 9.1.1遗传算法及其在最优化问题中的应用,遗传算法是基于进化论,在计算机上模拟生命进化机制而发展起来的一门新学科,它根据适者生存、优胜劣汰等自然进化规则搜索和计算问题的解。 美国 Michigen 大学的 John Holland 于 1975 年提出的。 遗传算法最优化工具箱 MATLAB 7.0的遗传算法与直接搜索工具箱,遗传算法的基本思想,从一个代表最优化问题解的一组初值开始进行搜索,这组解称为一个种群,这里种群由一定数量的、通过基因编码的个体组成,其中每一个个体称为染色体,不同个

2、体通过染色体的复制、交叉或变异又生成新的个体,依照适者生存的规则,个体也在一代一代进化,通过若干代的进化最终得出条件最优的个体。,简单遗传算法的一般步骤,选择 n 个个体构成初始种群 ,并求出种群内各个个体的函数值。 设置代数为 i=1,即设置其为第一代。 计算选择函数的值,所谓选择即通过概率的形式从种群中选择若干个个体的方式。 通过染色体个体基因的复制、交叉、变异等创造新的个体,构成新的种群 。 i=i+1,若终止条件不满足,则继续进化。,遗传算法和传统优化算法比较,不同于从一个点开始搜索最优解的传统的最优化算法,遗传算法从一个种群开始对问题的最优解进行并行搜索,所以更利于全局最优化解的搜索

3、。 遗传算法并不依赖于导数信息或其他辅助信息来进行最优解搜索。 遗传算法采用的是概率型规则而不是确定性规则,所以每次得出的结果不一定完全相同,有时甚至会有较大的差异。,9.1.2 遗传算法在求解最优化问题中的应用举例,GAOT 工具箱(目标求最大)bound=xm,xM为求解上下界构成的矩阵。a由最优解与目标构成,b为搜索的最终种群,c中间过程参数表。MATLAB 7.0GA工具箱界面, gatool(),例:绘制目标函数曲线: ezplot(x*sin(10*pi*x)+2,-1,2),测试不同的初值: f=inline(-x.*sin(10*pi*x)-2,x); v=; for x0=-

4、1:0.8:1.5,1.5:0.1:2x1=fmincon(f,x0,-1,2); v=v; x0,x1,f(x1); end v v =-1.0000 -1.0000 -2.0000-0.2000 -0.6516 -2.65080.6000 0.6516 -2.65081.4000 1.4507 -3.45031.5000 0.2540 -2.25201.6000 1.6506 -3.65031.7000 1.2508 -3.25041.8000 1.8505 -3.85031.9000 0.4522 -2.45112.0000 2.0000 -2.0000,编写函数: function s

5、ol,y=c10mga1(sol,options)x=sol(1); y=x.*sin(10*pi*x)+2; 调用gaopt( )函数 a,b,c,d=gaopt(-1,2,c10mga1); a,c a =1.85054746606888 3.85027376676810 c =1.0e+002 *0.01000000000000 0.01644961385548 0.036243958181770.02000000000000 0.01652497353988 0.036474140281400.16000000000000 0.01850468596975 0.038502680839

6、510.23000000000000 0.01850553961009 0.038502737282281.00000000000000 0.01850547466069 0.03850273766768,比较: ff=optimset; ff.Display=iter; x0=1.8; x1=fmincon(f,x0,-1,2,ff); f(x1) ans =-3.85027376676808 f(a(1) % 遗传算法结果 ans =-3.85027376676810 ezplot(x*sin(10*pi*x)+2,-1,20) 改变求解区间 a,b,c,d=gaopt(-1,20,c10

7、mga1); a,c a =19.45005206632863 21.45002604650601,c =1.0e+002 *0.01000000000000 0.17243264358456 0.188586495324800.02000000000000 0.19253552639304 0.211337594879180.25000000000000 0.19450021530572 0.214500170811770.27000000000000 0.19450024961756 0.214500189812190.29000000000000 0.19450055493368 0.2

8、14500259355311.00000000000000 0.19450052066329 0.21450026046506, ezplot(x*sin(10*pi*x)+2,12,20) 放大区间 a,b,c,d=gaopt(12,20,c10mga1); a,c a =19.85005104334383 21.85002552164857c =1.0e+002 *0.01000000000000 0.17647930304626 0.196106376435940.03000000000000 0.17648091337382 0.196163740746970.050000000000

9、00 0.18841858256128 0.20228859911541 0.21000000000000 0.19850064250944 0.218500238128620.23000000000000 0.19850055906254 0.218500252899931.00000000000000 0.19850051043344 0.21850025521649,例:求最小值编写函数: function sol,f=c10mga3(sol,options)x=sol(1:4);f=-(x(1)+x(2)2-5*(x(3)-x(4)2-(x(2)-2*x(3)4-10*(x(1)-x(

10、4)4; a,b,c,d=gaopt(-1,1; -1 1; -1 1; -1 1,c10mga3); a,c a =-0.0666 0.0681 -0.0148 -0.0154 -0.0002 c = 1.0000 -0.3061 0.2075 -0.2235 -0.1206 -0.2580 5.0000 -0.2294 0.2076 0.0352 -0.1217 -0.125393.0000 -0.0666 0.0682 -0.0148 -0.0154 -0.0002 100.0000 -0.0666 0.0681 -0.0148 -0.0154 -0.0002 求解区域太小,有误差,GA

11、OT 的最优化函数,其中:p可给目标函数增加附加参数, v为精度及显示控制向量,P0为初始种群,fun1为终止函数的名称,默认值maxGenTerm, n为最大的允许代数。,例:求最小值 tic, xmM=-ones(4,1),ones(4,1)*1000; a,b,c,d=gaopt(xmM,c10mga3,maxGenTerm,2000); a(1:4), dd=c(1:100:end,:); c(end,:), toc ans =-0.0049 0.0049 -0.0081 -0.0081 dd =1.0e+009 *0.0000 0.0000 -0.0000 -0.0000 0.000

12、0 -5.96630.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 elapsed_time =76.5200,描述函数:matlab7.0 function f=c10mga3a(x)f=(x(1)+x(2)2+5*(x(3)-x(4)2+(x(2)-2*x(3)4+10*(x(1)-x(4)4; x=ga(c10mga3a,4) %四个自变量ff=gaoptimset; ff.Generations=2000; ff.PopulationSize=80; ff.CrossoverFcn=crossoverheuristic; x=ga(c10mga

13、3a,4,ff) f=inline. % 目标函数描述 (x(1)+x(2)2+5*(x(3)-x(4)2+(x(2)-2*x(3)4+10*(x(1)-x(4)4,x) ff=optimset; ff.MaxIter=10000; ff.TolX=1e-7; tic, x=fminsearch(f,10*ones(4,1),ff); toc; x 时间少,精度高 elapsed_time =0.94200000000000 ans =1.0e-006 *0.03039572499758 -0.03039585246164 -0.75343487601326 -0.75343518285272

14、,例:求下面的最优化问题 x,y=meshgrid(-1:0.1:3,-3:0.1:3); z=sin(3*x.*y+2)+x.*y+x+y; surf(x,y,z); shading interp % 用光滑曲面表示 目标函数,函数描述:传统方法function y=c10mga5(x)y=sin(3*x(1)*x(2)+2)+x(1)*x(2)+x(1)+x(2); x0=1,3; x=fmincon(c10mga5,x0,-1;-3,3;3) x =-1.00000000000000 1.19031291227215函数描述: function sol,y=c10mga6(sol,opt

15、ions)x=sol(1:2); y=-sin(3*x(1)*x(2)+2)-x(1)*x(2)-x(1)-x(2); xmM=-1 3; -3 3; a,b,c,d=gaopt(xmM,c10mga6,maxGenTerm,500); a a =2.51604948433614 -3.00000000000000 9.00709500762913,遗传算法优化中间结果 (40代即可,无需500代,可用默认100),9.1.3 遗传算法在有约束 最优化问题中的应用,不能直接用于有约束最优化问题求解 需通过变换处理划为无约束最优化问题 对等式约束可通过等式求解将若干个自变量用其它自变量表示。 不

16、等式约束可用惩罚函数方法转移到目标函数中。 仍采用 gaopt() 或 ga() 函数求解,例:描述函数: function sol,y=c10mga4(sol,options)x=sol(1:2); x=x(:); x(3)=(6+4*x(1)-2*x(2)/3;y1=-2 1 1*x; y2=-1 1 0*x;if (y19 | y2-4 | x(3)0), y=-100; else, y=-1 2 3*x; end, a,b,c=gaopt(-1000 0; -1000 0,c10mga4,maxGenTerm,1000); c=c(1:15:end,:); c(end,:); a,c

17、a =-6.99981015633155 -10.99962347934527 28.99905078165773 c =1.0e+003 *0.00100000000000 -0.32769544124065 -0.20423049398177 -0.100000000000000.05900000000000 -0.00146223175991 0 0.001311158799550.10200000000000 -0.00416116639726 -0.00666729713459 0.014805831986310.84900000000000 -0.00689401645967 -0

18、.01080365682806 0.028470082298370.89200000000000 -0.00694511749224 -0.01089232545085 0.028725587461180.93200000000000 -0.00698531391213 -0.01097813084259 0.028926569560640.96800000000000 -0.00699692906988 -0.01099399300138 0.028984645349401.00000000000000 -0.00699981015633 -0.01099962347935 0.028999

19、05078166,可用线性规划得出更精确的结果 f=1 2 3; A=-2 1 1; 1 -1 0; B=9; 4; Aeq=4 -2 -3; Beq=-6; x=linprog(f,A,B,Aeq,Beq,-inf;-inf;0,0;0;inf); x Optimization terminated successfully. ans =-6.99999999999967 -10.99999999999935 0.00000000000000 f*x ans =-28.99999999999836建议求解方法:用 GA 找出全局最优解的大致位置,以其为初值调用最优化函数求精确解。,9.2神经

20、网络及其在数据拟合中的应用 9.2.1神经网络基础知识,单个人工神经元的数学表示形式,BP 神经网络结构示意图,其中:xm,xM分别为列向量,为各样本数据的最大最小值。 hi为一行向量,各隐层节点数。fi每层传输函数,同一层应使用相同的传输函数。,例:考虑一个前馈网络,2个隐层,第一个有8各节点,采用Sigmoid传输函数,第二层节点个数应该等于输出信号的路数,故节点数为1,传输函数为对数Sigmoid函数。 net=newff(0,1; -1,5,8,1,tansig,logsig);3个隐层,1层4个点,线性函数;2层6个点, Sigmoid函数;3层1个点, logsig函数。 net=

21、newff(0,1; -1,5,4 6 1,purelin,tansig,logsig);可用下面的语句格式设定其它参数。 net.trainParam.epochs=300; net.trainFcn=trainlm;,9.2.2 神经网络的训练与泛化,神经网络训练函数X为n*M,n为输入变量的路数,M为样本的组数,Y为m*M,m为输出变量的路数。tr为结构体数据,返回训练的相关跟踪信息。Y1和E为输出和误差矩阵。可多次训练,原加权矩阵为初值。目标值曲线函数神经网络泛化,例:由前面最小拟合的例子中的数据进行曲线拟合,2个隐层,隐层节点选择为5。 x=0:.5:10; y=0.12*exp(-

22、0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x); x0=0:0.1:10; y0=0.12*exp(-0.213*x0)+0.54*exp(-0.17*x0).*sin(1.23*x0); net=newff(0,10,5,1,tansig,tansig); net.trainParam.epochs=1000; % 设置最大步数 net=train(net,x,y); % 训练神经网络, net.IW1 net.LW2,1 % 隐层权值和输出层权值 ans =0.4765 -1.90760.5784 0.9450-0.2888 -2.79160.3052 -2

23、.93880.9780 1.1814 可改变求解算法 net=newff(0,10,5,1,tansig,tansig); net.trainParam.epochs=100; net.trainFcn=trainlm; net,b1=train(net,x,y); net=newff(0,10,5,1,tansig,tansig); net.trainParam.epochs=100; net.trainFcn=traincgf; net,b2=train(net,x,y); net=newff(0,10,5,1,tansig,tansig); net.trainParam.epochs=1

24、00; net.trainFcn=traingdx; net,b3=train(net,x,y);,可改变各层传输函数 net=newff(0,10,5,1,tansig,logsig); net.trainParam.epochs=100; net.trainFcn=trainlm; net,b2=train(net,x,y); net=newff(0,10,5,1,logsig,tansig); net,b3=train(net,x,y); net=newff(0,10,5,1,logsig,logsig); net,b4=train(net,x,y); 可改变结构,选择隐层15个节点 n

25、et=newff(0,10,15,1,tansig,tansig); net.trainParam.epochs=100; net.trainFcn=trainlm; net,b2=train(net,x,y); figure; y1=sim(net,x0); plot(x0,y0,x0,y1,x,y,o),例:二元函数的拟合 x,y=meshgrid(-3:.6:3, -2:.4:2); x=x(:); y=y(:); z=(x.2-2*x).*exp(-x.2-y.2-x.*y); % 这三个变量均应为行向量 net=newff(-3 3; -2 2,10,10,1,tansig,tans

26、ig,tansig); net.trainParam.epochs=1000; net.trainFcn=trainlm; net,b=train(net,x; y,z); % 训练神经网络 x2,y2=meshgrid(-3:.1:3, -2:.1:2); x1=x2(:); y1=y2(:); figure; z1=sim(net,x1; y1); z2=reshape(z1,size(x2); surf(x2,y2,z2),改变第二层节点数 net=newff(-3 3; -2 2,10,20,1,tansig,tansig,tansig); net,b=train(net,x; y,z

27、); % 训练神经网络 z1=sim(net,x1; y1); z2=reshape(z1,size(x2); surf(x2,y2,z2) 效果不好,给出密集一点的的样本点 x,y=meshgrid(-3:.2:3, -2:.2:2); x=x(:); y=y(:); z=(x.2-2*x).*exp(-x.2-y.2-x.*y); net=newff(-3 3; -2 2,10,10,1,tansig,tansig,tansig); net.trainParam.epochs=100; net.trainFcn=trainlm; net=train(net,x; y,z); x1,y1=m

28、eshgrid(-3:.1:3, -2:.1:2); a=x1; x1=x2(:); y1=y2(:); x1,y1=meshgrid(-3:.1:3, -2:.1:2); a=x1; x1=x2(:); y1=y2(:); z1=sim(net,x1; y1); z2=reshape(z1,size(a); surf(x2,y2,z2), net=newff(-3 3; -2 2,10,20,1, tansig,tansig,tansig); net=train(net,x; y,z); % 修改节点个数后的泛化效果 figure; z1=sim(net,x1; y1); z2=reshape(z1,size(a); surf(x2,y2,z2),9.2.3 神经网络界面,启动神经网络界面 nntool,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报