matlab在科学计算中的应用9+-+数学问题的非传统解法选讲

上传人:xh****66 文档编号:61701875 上传时间:2018-12-10 格式:PPT 页数:53 大小:813KB
返回 下载 相关 举报
matlab在科学计算中的应用9+-+数学问题的非传统解法选讲_第1页
第1页 / 共53页
matlab在科学计算中的应用9+-+数学问题的非传统解法选讲_第2页
第2页 / 共53页
matlab在科学计算中的应用9+-+数学问题的非传统解法选讲_第3页
第3页 / 共53页
matlab在科学计算中的应用9+-+数学问题的非传统解法选讲_第4页
第4页 / 共53页
matlab在科学计算中的应用9+-+数学问题的非传统解法选讲_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《matlab在科学计算中的应用9+-+数学问题的非传统解法选讲》由会员分享,可在线阅读,更多相关《matlab在科学计算中的应用9+-+数学问题的非传统解法选讲(53页珍藏版)》请在金锄头文库上搜索。

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.0 GA工具箱界面, gatool(),例: 绘制目标函数曲线: ezplot(x*sin(10*pi*x)+2,-1,2),测试不同的初值: f=inline(-x.*sin(10*pi*x)-2,x); v=; for

4、 x0=-1:0.8:1.5,1.5:0.1:2 x1=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.6508 0.6000 0.6516 -2.6508 1.4000 1.4507 -3.4503 1.5000 0.2540 -2.2520 1.6000 1.6506 -3.6503 1.7000 1.2508 -3.2504 1.8000 1.8505 -3.8503 1.9000 0.4522 -2.4511 2.0000 2.0000 -2.0000,

5、编写函数: function sol,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.03624395818177 0.02000000000000 0.01652497353988 0.03647414028140 0.16000000000000 0.0185046

6、8596975 0.03850268083951 0.23000000000000 0.01850553961009 0.03850273728228 1.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) 改变求解

7、区间 a,b,c,d=gaopt(-1,20,c10mga1); a,c a = 19.45005206632863 21.45002604650601,c = 1.0e+002 * 0.01000000000000 0.17243264358456 0.18858649532480 0.02000000000000 0.19253552639304 0.21133759487918 0.25000000000000 0.19450021530572 0.21450017081177 0.27000000000000 0.19450024961756 0.21450018981219 0.29

8、000000000000 0.19450055493368 0.21450025935531 1.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.85002552164857 c = 1.0e+002 * 0.01000000000000 0.17647930304626 0.19610637643594 0.03000000000000 0.176480

9、91337382 0.19616374074697 0.05000000000000 0.18841858256128 0.20228859911541 0.21000000000000 0.19850064250944 0.21850023812862 0.23000000000000 0.19850055906254 0.21850025289993 1.00000000000000 0.19850051043344 0.21850025521649,例:求最小值 编写函数: function sol,f=c10mga3(sol,options) x=sol(1:4); f=-(x(1)+

10、x(2)2-5*(x(3)-x(4)2-(x(2)-2*x(3)4-10*(x(1)-x(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.1253 93.0000 -0.0666 0.0682 -0.0148 -0.0154 -0.0002 100.0000 -0.06

11、66 0.0681 -0.0148 -0.0154 -0.0002 求解区域太小,有误差,GAOT 的最优化函数,其中: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

12、 dd = 1.0e+009 * 0.0000 0.0000 -0.0000 -0.0000 0.0000 -5.9663 0.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,f=ga(c10mga3a,4) %四个自变量 Optimization terminated: maximum number of gene

13、rations exceeded. x = 0.06976151754582 -0.05491931584170 0.04952579333589 0.06130810339402 f = 0.00147647985822 ff=gaoptimset; ff.Generations=2000; ff.PopulationSize=80; ff.CrossoverFcn=crossoverheuristic; x=ga(c10mga3a,4,ff) Optimization terminated: maximum number of generations exceeded. x = -0.00

14、216363106525 0.00216366042770 -0.00039985387788 -0.00039996677375 f = 1.739330597649231e-010, 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,f1=fminsearch(f,10*ones(4,1),ff); toc; x,f1 Elapsed time is 0.595406

15、 seconds. ans = 1.0e-006 * 0.03039572499758 -0.03039585246164 -0.75343487601326 -0.75343518285272 f1 = 9.014052814563438e-024,例:求下面的最优化问题 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,options) 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

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

当前位置:首页 > 生活休闲 > 科普知识

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