粒子群算法-函数寻优-算法程序.pdf
文本预览下载声明
粒子群函数寻优
案例:以下列非线性函数为例。
sin x 2 y 2 cos2x cos2y
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
显示全部