文档详情

粒子群算法-函数寻优-算法程序.pdf

发布:2018-04-12约3.13千字共5页下载文档
文本预览下载声明
粒子群函数寻优 案例:以下列非线性函数为例。 sin x 2  y 2 cos2x cos2y f (x ) e 2 2.71289 2 2 x  y 函数图像如下: 程序:三维作图 运行环境:Matlab2011a clear,clc,close all; [x,y]=meshgrid(-1.2:0.01:1.2); %-1.2~1.2 为x ,y 自变量范围,0.01 为精度 z=sin( sqrt(x.^2+y.^2) )./sqrt(x.^2+y.^2)+exp((cos(2*pi*x)+cos(2*pi*y))/2)-2.71289; mesh(x,y,z) % mesh 作三维图 三维图 粒子群背景介绍: 算法流程 模型建立 程序实现 粒子群函数寻优,以最大值为例。一般只更改黄底纹的程序即可 程序:粒子群 运行环境:Matlab2011a %% 清空环境 clc clear %% 参数初始化 %粒子群算法中的参数设置,根据实际自行更改 c1 = 1.49445; %非负常数,加速度因子 c2 = 1.49445; %非负常数,加速度因子 maxgen=300; % 进化次数 sizepop=20; %种群规模 Vmax=0.5; %粒子最大更新速度 Vmin=-0.5; %粒子最小更新速度 popmax=2; % 自变量最大值 popmin=-2; % 自变量最小值 %%产生初始粒子和速度 for i=1:sizepop %随机产生一个种群 pop(i,:)=2*rands(1,2); %初始种群,意思是pop 的第i 行是两个-2 到2 之间的 随机数,即自变量范围,每次生成两个数,及对应的(x ,y ) V(i,:)=0.5*rands(1,2); %初始化速度,同上 %计算适应度 fitness(i)=fun(pop(i,:)); %染色体的适应度 end %%个体极值和群体极值 [bestfitness bestindex]=max(fitness); zbest=pop(bestindex,:); %全局最佳 gbest=pop; %个体最佳 fitnessgbest=fitness; %个体最佳适应度值 fitnesszbest=bestfitness; %全局最佳适应度值 %%迭代寻优 for i=1:maxgen for j=1:sizepop %速度更新公式 V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));% 式(13.1) V(j,find(V(j,:)Vmax))=Vmax;%检查速度是否超出规定的范围 V(j,find(V(j,:)Vmin))=Vmin; %种群更新公式 pop(j,:)=pop(j,:)+V(j,:);%式(13.1) pop(j,find(pop(j,:)popmax))=popmax;%检查自变量是否超出规定的范围 pop(j,find(pop(j,:)popmin))=popmin; %函数适应度值 fitness(j)=fun(pop(j,:)); end for j=1:sizepop
显示全部
相似文档