在科学计算中的应用9非传统解法选讲.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《在科学计算中的应用9非传统解法选讲.ppt》由会员分享,可在线阅读,更多相关《在科学计算中的应用9非传统解法选讲.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在科学计算中的应用9非传统解法选讲 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望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=inl
4、ine(-x.*sin(10*pi*x)-2,x);v=;for x0=-1:0.8:1.5,1.5:0.1:2 x1=fmincon(f,x0,-1,2);v=v;x0,x1,f(x1);end vv=-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.4
5、511 2.0000 2.0000 -2.0000编写函数: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,ca=1.85054746606888 3.85027376676810c=1.0e+002*0.01000000000000 0.01644961385548 0.03624395818177 0.02000000000000 0.01652497353988 0.03647414028140 0.1600000000000
6、0 0.01850468596975 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)改变求解区间 a
7、,b,c,d=gaopt(-1,20,c10mga1);a,ca=19.45005206632863 21.45002604650601c=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.29000000000000
8、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,ca=19.85005104334383 21.85002552164857c=1.0e+002*0.01000000000000 0.17647930304626 0.19610637643594 0.03000000000000 0.17648091337382 0.1961637407469
9、7 0.05000000000000 0.18841858256128 0.202288599115410.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)+x(2)2-5*(x(3)-x(4)2-(x(2)-2*x(
10、3)4-10*(x(1)-x(4)4;a,b,c,d=gaopt(-1,1;-1 1;-1 1;-1 1,c10mga3);a,ca=-0.0666 0.0681 -0.0148 -0.0154 -0.0002c=1.0000 -0.3061 0.2075 -0.2235 -0.1206 -0.25805.0000 -0.2294 0.2076 0.0352 -0.1217 -0.125393.0000 -0.0666 0.0682 -0.0148 -0.0154 -0.0002100.0000 -0.0666 0.0681 -0.0148 -0.0154 -0.0002 求解区域太小,有误差
11、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,:),tocans=-0.0049 0.0049 -0.0081 -0.0081dd=1.0e+009*0.0000 0.0000 -0.0000 -0.0000 0.0000 -5.9663 0.
12、0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000elapsed_time=76.5200描述函数:matlab7.0function 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 generations exceeded.x=0.06976151754582 -0.05491931584170 0.04952579333589 0.0
13、6130810339402f=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.00216363106525 0.00216366042770 -0.00039985387788 -0.00039996677375f=1.739330597649231e-010
14、 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,f1Elapsed time is 0.595406 seconds.ans=1.0e-006*0.03039572499758 -0.03039585246164 -0.75343487601326 -0.75343518285272f1=9.0140528
15、14563438e-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,op
16、tions)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);aa=2.51604948433614 -3.00000000000000 9.00709500762913遗传算法优化中间结果(40代即可,无需500代,可用默认100)9.1.3 遗传算法在有约束最优化问题中的应用不能直接用于有约束最优化问题求解需通过变换处理划为无约束最优化问题对等式约束可通过等式求解将若干个自变量用其它自变量表示。不等式约束可用惩罚函数方法转移
17、到目标函数中。仍采用 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)a,b,c=gaopt(-1000 0;-1000 0,c10mga4,maxGenTerm,1000);c=c(1:15:end,:);c(end,:);a,ca=-6.99981015633155-10.99962347934527 28.99905078165773c=1.0e+003*0
18、.00100000000000 -0.32769544124065 -0.20423049398177 -0.10000000000000 0.05900000000000 -0.00146223175991 0 0.00131115879955 0.10200000000000 -0.00416116639726 -0.00666729713459 0.01480583198631 0.84900000000000 -0.00689401645967 -0.01080365682806 0.02847008229837 0.89200000000000 -0.00694511749224 -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 科学 计算 中的 应用 传统 解法
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内