粒子群算法的matlab实现

来源:互联网 发布:淘宝购买叶罗丽娃娃 编辑:程序博客网 时间:2024/05/01 09:41
function [xm,fv]=PSO(fitness,N,c1,c2,w,M,D)% fitness:待优化的目标函数% N:粒子数目% c1,c2:学习因子1,学习因子2% w:惯性权重% M:最大迭代次数% D:问题的维数% xm:目标函数取最小值时的自变量值% fv:目标函数最小值format long;%---------初始化种群的个体-------------for i=1:N    for j=1:D        x(i,j)=randn;        v(i,j)=randn;    endend%---------先计算各个粒子的适应度,并初始化Pi和Pg----------for i=1:N    p(i)=fitness(x(i,:));    y(i,:)=x(i,:);endpg=x(N,:);          %pg为全局最优for i=1:(N-1);    if fitness(x(i,:))<fitness(pg)        pg=x(i,:);    endend%---------进入主循环,按照公式依次迭代----------for t=1:M    for i=1:N        v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));        x(i,:)=x(i,:)+v(i,:);        if fitness(x(i,:))<p(i)            p(i)=fitness(x(i,:));            y(i,:)=x(i,:);        end        if p(i)<fitness(pg)            pg=y(i,:);        end    end    pbest(t)=fitness(pg);endxm=pg';fv=fitness(pg);

0 0
原创粉丝点击