您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 第7讲matlab部分智能优化算法
铜陵学院本章主要学习matlab中三个智能优化算法及其实现.一、遗传算法1、算法的相关知识2、ga及gatool二、人工神经网络1、算法的相关知识2、newff,newlvq,train,sim及nntool三、粒子群算法铜陵学院一、遗传算法1、算法简介遗传算法是一种通过模拟自然进化过程搜索最优解的方法。在解决复杂优化问题方面效果显著。算法原理如下:第一步,产生染色体:随机产生一定数目的初始染色体(它们组成一个种群),种群中染色体的数目称为种群的大小或规模;第二步,评价染色体:用评价函数来评价每一个染色体的优劣,即用染色体对环境的适应铜陵学院程度(简称为适应度)来作为以后遗传操作的依据;第三步,进行选择操作:选择的目的是为了从当前种群中选出优良的染色体,判断染色体优良与否的准则是各自的适应度,即染色体的适应度越高,其被选择的机会就越多;第四步,进行交叉操作:对选择出来的新种群进行交叉操作;第五步,进行变异操作:变异操作的目的是为了挖掘种群中个体的多样性,克服有可能陷入局部解的弊病。铜陵学院进行了上述三个操作所产生的染色体称为后代。对后代重复进行选择、交叉、变异操作,经过给定次数的迭代处理以后,把最好的染色体作为优化问题的最优解。2matlab指令与计算举例格式一:x=ga(@fitnessfun,nvars)求解:优化问题minf(x),其中nvar为优化问题中变量的个数.fitnessfun写成如下的m函数形式(fitnessfit.m):铜陵学院functionf=fitnessfun(x)f=f(x);当求解有约束优化问题时,可将约束条件用逻辑语句写进上述fitnessfun函数。如functionf=fitnessfun(x)if(x=0|x4),f=inf;else,f=f(x);end%即上述优化问题有约束x0和x=4.铜陵学院格式二:[x,f,reason]=ga(@fitnessfun,nvars)%同时返回解x处的函数值f和算法终止原因.matlab还提供了遗传算法运算工具命令gatool.例1分别用优化工具箱中的fminunc函数和遗传算法计算非线性规划:maxf(x)=xsin(10pix)+2,x\in[-1,2].首先用遗传算法求解,编写程序如下:functionf=ga_exam1(x)if(x=-1|x2),f=100;else,f=-x.*sin(10*pi*x)-2;end铜陵学院如果用fminunc求解的话,由于对初值的高度敏感性而难以得到全局最优解,而遗传算法的整体优化搜索则可以得到或逼近整体最优值.例2运用遗传算法计算约束非线性规划:minf(x)=e^x1*(4x1^2+2x2^2+4x1x2+2x2+1).s.t.1.5+x1x2-x1-x2=0,-x1x2=10.首先编写程序如下:functionf=ga_exam2(x)if(1.5+x(1)*x(2)-x(1)-x(2)0|-x(1)*x(2)10),f=100;铜陵学院elsef=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);end例3运用遗传算法计算下列函数最大值:maxf(x,y)=0.5-(sin^2(sqrt(x^2+y^2))-0.5)/(1+0.01(x^2+y^2))^2.函数f(x,y)的复杂度较高,它有无限个局部极大值点,其中只有一个(0,0)为全局最大值点,最大值为1。铜陵学院functionf=ga_exam3(x)f=0.5-((sin(sqrt(x(1)^2+x(2)^2)))^2-0.5)/(1+0.01*(x(1)^2+x(2)^2))^2通过对比,遗传算法在整体最优化方面强于matlab其他优化命令,但明显弱于1stopt.铜陵学院二、人工神经网络1、预备知识:人工神经网络基本知识(1)生物神经元—大脑的一个重要成分是神经网络,神经网络由相互关联的神经元组成.铜陵学院(2)人工神经元与神经网络1943年美国心理学家W.McCulloch和数学家W.Pitts提出了一个简单的神经元模型—MP模型,如下图.铜陵学院人工神经网络是由若干个人工神经元相互连接组成的广泛并行互联的网络,见下图。因联结方式的不同,有“前馈神经网络”(简称BP网络)和“反馈神经网络”。下图是BP网络拓扑结构图。铜陵学院2、matlab命令与计算举例(1)net=newff(PR,[S1,…,Sn],{TF1,…,TFn})%生成一个BP网络,其中:PR是由R个输入中各样本值的最小和最大构成的R*2矩阵;Si表示第i层的节点数,共有n层;TFi表示第i层的传输函数字符串,默认为’tansig’.(2)net=newlvq(PR,N,PC)%生成一个学习向量量化(lvq)神经网络,其中:PR含义同上;N表示隐层数目;PC表示各类别所占的百分比.(3)[net,tr,Y,E]=train(net,P,T)铜陵学院%对上面生成的神经网络net的参数进行训练.其中:P为n*N样本输入矩阵,n为输入变量维数,N为样本组数;T为m*N输出矩阵,m为输出变量维数;net返回训练后得到的神经网络;tr为结构体数据,返回训练的相关跟踪信息,tr.epoch为训练步数,tr.perf为各步目标函数值.(4)Y=sim(net,P)%应用第(3)步训练后得到的神经网络net,计算新的输入数据的值Y,即是仿真(或称泛化).另:nntool神经网络工具命令.铜陵学院例1用人工神经网络拟合函数y=0.12e^(-0.23x)+0.54e^(-0.17x)sin(1.23x).首先生成样本数据:x=0:0.25:10;y=0.12*exp(-0.23*x)+0.54*exp(-0.17*x).*sin(1.23*x);其次,生成BP网络:net=newff(minmax(x),[20,1],{‘tansig’,’purelin’})然后利用样本数据训练网络:[net,tr]=train(net,x,y)铜陵学院最后,应用经过训练的net仿真:y1=sim(net,x)对比仿真效果:E=y-y1;MSE=mse(E)%计算仿真误差holdonplot(x,y,’r*’,x,y1,’b’)holdoff从结果可以看出,仿真效果很好:在图形上,红色’*’是原数据,蓝色实线’—’是仿真结果.铜陵学院012345678910-0.3-0.2-0.100.10.20.30.40.50.6应用人工神经网络拟合函数:y=0.12e^(-0.23x)+0.54e^(-0.17x)sin(1.23x).红色’*’是原数据,蓝色实线’—’是仿真结果.铜陵学院例2蠓虫分类(美国1989年建模赛题)两种蠓虫Apf和Af已由生物学家Grogan和Wirth于1981年根据他们的触角长度和翅长加以区分.现测得6只Apf蠓虫和9只Af蠓虫的触长、翅长的数据如下:Apf:(1.14,1.78),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96);Af:(1.24,1.72),(1.36,1.74),(1.38,1.64),(1.38,1.82),(1.38,1.90),(1.40,1.70),(1.48,1.82),(1.54,1.82),(1.56,2.08).请用恰当的方法对3只触长、翅长分别为铜陵学院(1.24,1.80),(1.28,1.84),(1.40,2.04)的蠓虫进行识别。设计一个lvq神经网络进行分类.程序如下:clearApf=[1.14,1.78;1.18,1.96;1.20,1.86;1.26,2.00;1.28,2.00;1.30,1.96];Af=[1.24,1.72;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08];x=[Apf;Af]’;%输入向量铜陵学院y0=[ones(1,6)2*ones(1,9)];%类1表示Apf,类2表示Af;y=ind2vec(y0);%将下标向量转换为单值向量作为目标向量net=newlvq(minmax(x),8,[0.60.4]);%建立lvq网络net.trainParam.show=100;net.trainParam.epoch=1000;%设置参数net=train(net,x,y);ytmp=sim(net,x);铜陵学院y1=vec2ind(ytmp;xt=[1.241.281.40;1.801.842.04];yttmp=sim(net,xt)yt=vce2ind(yttmp)figureplot(Apf(1,:),Apf(2,:),'+',Af(1,:),Af(2,:),'o',xt(1,:),xt(2,:),'*')legend('Apf','Af','samples')运行上述程序,得结果图形如后。铜陵学院1.11.151.21.251.31.351.41.451.51.551.61.61.651.71.751.81.851.91.9522.052.1ApfAfsamples铜陵学院三、粒子群算法粒子群算法是模仿生物社会系统,更确切地说,是由简单个体组成的群体与环境以及个体之间的互动行为,是一种基于群智能方法的进化计算技术,也是一种基于群体迭代的优化工具.1995年源于Eberhart与Kennedy对鸟群捕食行为的研究。此处粗略讲解其算法原理、操作步骤及应用。假设在一个D维的目标搜索空间中,有m铜陵学院个粒子组成的一个群体,其中第i个粒子表示为Xi=(xi1,xi2,…,xiD),即其位置为Xi,换言之,每个粒子的位置就是一个潜在的解,将Xi代入目标函数,就可以计算出其适应值,根据适应值的大小衡量其优劣,它经历过的最好位置记为Pi=(pi1,pi2,…,piD),整个群体所有粒子经历过的最好位置记为Pg=(pg1,pg2,…,pgD).粒子i的速度表示为Vi=(vi1,vi2,…,viD).铜陵学院粒子群算法采用下列公式对粒子进行操作:vij=wvij+c1r1(pij-xij)+c2r2(pgj-xij)xij=xij+avij,其中i=1,2,…,m;j=1,2,…,D;w为非负数,称为惯性因子;c1,c2为非负数,称为学习因子;r1,r2为[0,1]内变化的随机数;a称为约束因子,目的是控制速度的权重(其意义是时间).此外,vi\in[-vmax,vmax],即粒子的速度被一个最大速度所限制.若当前时刻粒子的某维速度vij更新后超过该维的最大速度vmax,j,则当前时刻该维的速度被限制为vmax,j.vmax,j为常铜陵学院数,可以根据不同的优化问题设定。算法终止条件根据具体问题设定,一般选为预定最大迭代次数或粒子群目前为止搜索到的最优位置满足预定最小适应阀值.上述粒子群算法被称为全局版粒子群算法。例用粒子群算法计算下述函数的最大值:求解程序链接。22222201.015.0sin5.0,yxyxyxf铜陵学院精品课件!铜陵学院精品课件!铜陵学院THANKYOUFORYOURPRESENCE
本文标题:第7讲matlab部分智能优化算法
链接地址:https://www.777doc.com/doc-1937009 .html