最优化 粒子群法

最优化 粒子群法,第1张

运行结果。

function [xm,fv] = zhidaoPSO(fitness,N,c1,c2,w,M,D)

%[xm,fv] = zhidaoPSO(@fitness,40,2,2,08,1000,2)

%

%         求解无约束优化问题

%         fitness         待优化目标函数

%         N         粒子数目,

%         cX         学习因子

%         W         惯性权重

%         M          最大迭代次数

%         D          自由变量的个数

%         xm          目标函数取最小值时的自由变量

%         fv          目标函数的最小值

%   Detailed explanation goes here

tic;

format long;

%------step1初始化种群的个体------------

x = zeros(N,D);

v = zeros(N,D);

for i=1:N

for j=1:D

x(i,j)=100rand - 50;  %随机初始化位置

v(i,j)=100rand - 50;  %随机初始化速度

end

end

%------step2先计算各个粒子的适应度,并初始化Pi和PgPg为全局最优-------------

p = zeros(N,1);

%y = zeros(N,D);

for i=1:N

p(i)=fitness(x(i,:));

%y(i,:)=x(i,:);

end

y = x;

pg = x(N,:);             %Pg为全局最优

for i=1:(N-1)

if fitness(x(i,:))<fitness(pg)

pg=x(i,:);

end

end

%------step3进入主要循环,按照公式依次迭代------------

%Pbest = zeros(M,1);

for t=1:M

for i=1:N

v(i,:)=wv(i,:)+c1rand(y(i,:)-x(i,:))+c2rand(pg-x(i,:));

for k=1:D

if v(i,k) > 10 %10=vmax

v(i,k) = 10;

end

end

x(i,:)=x(i,:)+v(i,:);

for k=1:D

if x(i,k) > 50 %50=xmax

x(i,k) = 31;

end

end

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);

end

xm = pg';

fv = fitness(pg);

toc;

同学,这种问题自己好好看看程序,不要上来问吧。

提示下,ParSwarm(k,2ParticleSize+1)=AdaptFunc(ParSwarm(k,1:ParticleSize)); 中给定的矩阵的行或列的编号有问题,代码应该没问题,逐步运行下,看看变量吧。

以上就是关于最优化 粒子群法全部的内容,包括:最优化 粒子群法、PSO粒子群算法问题,运行之后出现Subscript indices must either be real positive integers or logicals、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10218301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存