for irun=1:Run_no Ceq1=zeros(1,dim); Ceq1_fit=inf; Ceq2=zeros(1,dim); Ceq2_fit=inf; Ceq3=zeros(1,dim); Ceq3_fit=inf; Ceq4=zeros(1,dim); Ceq4_fit=inf; C=initialization(Particles_no,dim,ub,lb); Iter=0; V=1; a1=2; a2=1; GP=0.5; while Iter<Max_iter for i=1:size(C,1) Flag4ub=C(i,:)>ub; Flag4lb=C(i,:)<lb; C(i,:)=(C(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; fitness(i)=funfit(C(i,:),MM); if fitness(i)<Ceq1_fit Ceq1_fit=fitness(i); Ceq1=C(i,:); elseif fitness(i)>Ceq1_fit && fitness(i)<Ceq2_fit Ceq2_fit=fitness(i); Ceq2=C(i,:); elseif fitness(i)>Ceq1_fit && fitness(i)>Ceq2_fit && fitness(i)<Ceq3_fit Ceq3_fit=fitness(i); Ceq3=C(i,:); elseif fitness(i)>Ceq1_fit && fitness(i)>Ceq2_fit && fitness(i)>Ceq3_fit && fitness(i)<Ceq4_fit Ceq4_fit=fitness(i); Ceq4=C(i,:); end end
时间: 2023-10-21 21:05:34 浏览: 81
这段代码是粒子群算法的核心部分,使用while循环进行了最大迭代次数次的搜索。
首先使用一个for循环,循环次数为粒子数。在循环中,通过一些计算,将C(i,:)限制在搜索范围内。然后,计算C(i,:)对应的适应度值,并根据适应度值的大小,将C(i,:)分别归入四个不同的等式约束中。
接着,使用while循环进行粒子群算法的迭代。在每次迭代中,分别计算每个粒子的速度和位置,并更新粒子的最优位置和全局最优位置。其中,a1、a2和GP分别为粒子群算法中的一些参数。
最后,将迭代次数加1,继续进行下一次循环。当迭代次数达到最大值时,退出while循环。
阅读全文