资源描述:
《matlab在科学计算中的应用数学问题的非传统解法选讲ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、9.1遗传算法9.1.1遗传算法及其在最优化问题中的应用遗传算法是基于进化论,在计算机上模拟生命进化机制而发展起来的一门新学科,它根据适者生存、优胜劣汰等自然进化规则搜索和计算问题的解。美国Michigen大学的JohnHolland于1975年提出的。遗传算法最优化工具箱MATLAB7.0的遗传算法与直接搜索工具箱遗传算法的基本思想从一个代表最优化问题解的一组初值开始进行搜索,这组解称为一个种群,这里种群由一定数量的、通过基因编码的个体组成,其中每一个个体称为染色体,不同个体通过染色体的复制、交叉或变异又生成新的个体,依照适者生存的规则,个体也在一代一代进化,通过若
2、干代的进化最终得出条件最优的个体。简单遗传算法的一般步骤选择n个个体构成初始种群,并求出种群内各个个体的函数值。设置代数为i=1,即设置其为第一代。计算选择函数的值,所谓选择即通过概率的形式从种群中选择若干个个体的方式。通过染色体个体基因的复制、交叉、变异等创造新的个体,构成新的种群。i=i+1,若终止条件不满足,则继续进化。遗传算法和传统优化算法比较不同于从一个点开始搜索最优解的传统的最优化算法,遗传算法从一个种群开始对问题的最优解进行并行搜索,所以更利于全局最优化解的搜索。遗传算法并不依赖于导数信息或其他辅助信息来进行最优解搜索。遗传算法采用的是概率型规则而不是确
3、定性规则,所以每次得出的结果不一定完全相同,有时甚至会有较大的差异。9.1.2遗传算法在求解最优化问题中的应用举例GAOT工具箱(目标求最大)bound=[xm,xM]为求解上下界构成的矩阵。a由最优解与目标构成,b为搜索的最终种群,c中间过程参数表。MATLAB7.0GA工具箱界面,gatool()例:绘制目标函数曲线:>>ezplot('x*sin(10*pi*x)+2',[-1,2])测试不同的初值:>>f=inline('-x.*sin(10*pi*x)-2','x');v=[];>>forx0=[-1:0.8:1.5,1.5:0.1:2]x1=fmincon
4、(f,x0,[],[],[],[],-1,2);v=[v;x0,x1,f(x1)];end>>vv=-1.0000-1.0000-2.0000-0.2000-0.6516-2.65080.60000.6516-2.65081.40001.4507-3.45031.50000.2540-2.25201.60001.6506-3.65031.70001.2508-3.25041.80001.8505-3.85031.90000.4522-2.45112.00002.0000-2.0000编写函数:function[sol,y]=c10mga1(sol,options)x=
5、sol(1);y=x.*sin(10*pi*x)+2;%调用gaopt()函数>>[a,b,c,d]=gaopt([-1,2],'c10mga1');a,ca=1.850547466068883.85027376676810c=1.0e+002*0.010000000000000.016449613855480.036243958181770.020000000000000.016524973539880.036474140281400.160000000000000.018504685969750.038502680839510.230000000000000.01
6、8505539610090.038502737282281.000000000000000.018505474660690.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
7、,20],'c10mga1');a,ca=19.4500520663286321.45002604650601c=1.0e+002*0.010000000000000.172432643584560.188586495324800.020000000000000.192535526393040.211337594879180.250000000000000.194500215305720.214500170811770.270000000000000.194500249617560.214500189812190.290000000000000.19