您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 基于PSO的寻优计算
第十三章MATLAB优化算法案例分析与应用第13章基于PSO的寻优计算第十三章MATLAB优化算法案例分析与应用•13.1基本粒子群算法粒子群算法(PSO)是一种基于群体的随机优化技术。与其它基于群体的进化算法相比,它们均初始化为一组随机解,通过迭代搜寻最优解。不同的是:进化计算遵循适者生存原则,而PSO模拟社会。将每个可能产生的解表述为群中的一个微粒,每个微粒都具有自己的位置向量和速度向量,以及一个由目标函数决定的适应度。所有微粒在搜索空间中以一定速度飞行,通过追随当前搜索到的最优值来寻找全局最优值。PSO模拟社会采用了以下三条简单规则对粒子个体进行操作:①飞离最近的个体,以避免碰撞。②飞向目标。③飞向群体的中心。这是粒子群算法的基本概念之一。粒子群算法其基本思想是受许多鸟类的群体行为进行建模与仿真研究结果的启发。第十三章MATLAB优化算法案例分析与应用•13.1基本粒子群算法FrankHeppner的鸟类模型在反映群体行为方面与其它类模型有许多相同之处。由于鸟类用简单的规则确定自己的飞行方向与飞行速度(实质上,每只鸟都试图停在鸟群中而又不相互碰撞),当一只鸟飞离鸟群而飞向栖息地时,将导致它周围的其他鸟也飞向栖息地。这些鸟一旦发现栖息地,将降落在此,驱使更多的鸟落在栖息地,直到整个鸟群都落在栖息地。粒子群算法与其它的进化类算法类似,也采用“群体”和“进化”的概念,同样也根据个体的适应值大小进行操作。不同的是,PSO中没有进化算子,而是将每个个体看作搜索空间中没有重量和体积的微粒,并在搜索空间中以一定的速度飞行,该飞行速度由个体飞行经验和群体的飞行经验进行动态调整。第十三章MATLAB优化算法案例分析与应用•13.1基本粒子群算法PSO算法步骤如下:Step1:初始化一个规模为m的粒子群,设定初始位置和速度。Step2:计算每个粒子的适应值。初始化过程如下:(1)设定群体规模m;(2)对任意的i,s,在内服从均匀分布产生;(3)对任意的i,s,在内服从均匀分布产生;(4)对任意的i,设。maxmax,xxisxmaxmax,vvisviiyxStep3:对每个粒子将其适应值和其经历过的最好位置的适应值进行比较,若较好,则将其作为当前的最好位置。Step4:对每个粒子将其适应值和全局经历过的最好位置的适应值进行比较,若较好,则将其作为当前的全局最好位置。Step5:分别对粒子的速度和位置进行更新。Step6:如果满足终止条件,则输出解;否则返回Step2。ispgsp第十三章MATLAB优化算法案例分析与应用•13.3粒子群算法函数极值求解PSO算法流程如图13-1所示。第十三章MATLAB优化算法案例分析与应用•13.3.1一维函数全局最优sin/cosfxxxxx采用fmincon进行有约束的非线性最小化求解%fmincon:求多个变量的目标函数的最小值%fmincon(FUN,X,A,B,Aeq,Beq,LB,UB,NONLCON,options,varargin)x(i)=fmincon(f,x0(i),[],[],[],[],lb,ub,[],...optimset('Algorithm','SQP','Disp','none'));012345678910-40-30-20-10010203040xSolutionusingglobalSearch.xsin(x)+x/cos(x)0510-2002040xStartingat0xsin(x)+xcos(2x)0510-2002040xStartingat10510-2002040xStartingat30510-2002040xStartingat6xsin(x)+xcos(2x)0510-2002040xStartingat80510-2002040xStartingat10搜索起始点位置全局搜索最小值结果第十三章MATLAB优化算法案例分析与应用•13.3.2经典测试函数Griewank函数图形Rastrigin函数图形第十三章MATLAB优化算法案例分析与应用•13.3.2经典测试函数Schaffer函数Ackley函数图形第十三章MATLAB优化算法案例分析与应用•13.3.2经典测试函数Rosenbrock函数第十三章MATLAB优化算法案例分析与应用•13.3.3无约束函数极值寻优待求解极值函数图形第十三章MATLAB优化算法案例分析与应用•13.3.3无约束函数极值寻优%速度更新V(j,:)=V(j,:)+c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:));V(j,find(V(j,:)Vmax))=Vmax;V(j,find(V(j,:)Vmin))=Vmin;%种群更新pop(j,:)=pop(j,:)+0.5*V(j,:);pop(j,find(pop(j,:)popmax))=popmax;pop(j,find(pop(j,:)popmin))=popmin;%自适应变异ifrand0.8k=ceil(2*rand);pop(j,k)=rand;end%适应度值fitness(j)=fun(pop(j,:));第十三章MATLAB优化算法案例分析与应用•13.3.3无约束函数极值寻优%个体最优更新iffitness(j)fitnessgbest(j)gbest(j,:)=pop(j,:);fitnessgbest(j)=fitness(j);end%群体最优更新iffitness(j)fitnesszbestzbest=pop(j,:);fitnesszbest=fitness(j);end待寻优的目标函数如下:functiony=fun(x)y=-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289;%Ackley函数第十三章MATLAB优化算法案例分析与应用•13.3.3无约束函数极值寻优020406080100120140160180200-0.200.20.40.60.811.21.41.61.8适应度曲线终止代数=200进化代数适应度适应度曲线第十三章MATLAB优化算法案例分析与应用•13.3.4有约束函数极值寻优选取如下所示的目标函数(最小值):123546xxx对于该目标函数,相应的约束为:20xxx32142x4x2x332130x2x321321x0,x0,x0待寻优的目标函数为:functiony=fun2(x)y=-5*x(1)-4*x(2)-6*x(3);end第十三章MATLAB优化算法案例分析与应用•13.3.4有约束函数极值寻优020406080100120140160180200-80-75-70-65-60-55-50-45-40-35-30适应度曲线终止代数=200进化代数适应度适应度曲线第十三章MATLAB优化算法案例分析与应用•13.3.5有约束函数极值APSO寻优目标函数:2112234214fxaxxaxxx约束条件:2300084000kx1230002xx1222213222131243226xxxkxxxxx22212222132136004xxxx24350400030000xx第十三章MATLAB优化算法案例分析与应用•13.3.5有约束函数极值APSO寻优目标函数:2112234214fxaxxaxxx约束条件:3430.252.1952xx2663436.14231010.0282600036xxx140.125xx21123421145.0axaxxx11.10471a20.04811a10.12.0x20.110.0x30.110.0x40.12.0x第十三章MATLAB优化算法案例分析与应用•13.3.5有约束函数极值APSO寻优Lb=[0.10.10.10.1];%下边界Ub=[2.010.010.02.0];%上边界%默认参数para=[251500.95];%[粒子数,迭代次数,gama参数]%APSO优化求解函数[gbest,fmin]=pso_mincon(@cost,@constraint,Lb,Ub,para);%输出结果Bestsolution=gbest%全局最优个体fmin%%目标函数functionf=cost(x)f=1.10471*x(1)^2*x(2)+0.04811*x(3)*x(4)*(14.0+x(2));第十三章MATLAB优化算法案例分析与应用•13.3.5有约束函数极值APSO寻优%非线性约束function[g,geq]=constraint(x)%不等式限制条件Q=6000*(14+x(2)/2);D=sqrt(x(2)^2/4+(x(1)+x(3))^2/4);J=2*(x(1)*x(2)*sqrt(2)*(x(2)^2/12+(x(1)+x(3))^2/4));alpha=6000/(sqrt(2)*x(1)*x(2));%αbeta=Q*D/J;%βtau=sqrt(alpha^2+2*alpha*beta*x(2)/(2*D)+beta^2);%τsigma=504000/(x(4)*x(3)^2);%ξdelta=65856000/(30*10^6*x(4)*x(3)^3);%δF=4.013*(30*10^6)/196*sqrt(x(3)^2*x(4)^6/36)*(1-x(3)*sqrt(30/48)/28);g(1)=tau-13600;g(2)=sigma-30000;g(3)=x(1)-x(4);g(4)=0.10471*x(1)^2+0.04811*x(3)*x(4)*(14+x(2))-5.0;g(5)=0.125-x(1);g(6)=delta-0.25;g(7)=6000-F;%如果没有等式约束,则置geq=[];geq=[];第十三章MATLAB优化算法案例分析与应用•13.3.5有约束函数极值APSO寻优050100150051015x1013适应度适应度曲线
本文标题:基于PSO的寻优计算
链接地址:https://www.777doc.com/doc-2535001 .html