D=2;%维数 一般是自变量个数 此时速度与位置都用两个变量表示
w = 1;
NP=12;%种群规模 D 的五倍到十倍
%学习因子 c1 c2 范围在 0-4
c1 = 1.5;
c2 = 1.5;
gen_max=1000;%最大进化代数
bounds_p=ones(D,2);%定义位置的取值边界
bounds_p(:,1)=-100;%取值下界
bounds_p(:,2)=100;% 取值上界
bounds_v=ones(D,2);%定义速度的取值边界
bounds_v(:,1)=-100;%取值下界
bounds_v(:,2)=100;% 取值上界
x=ones(NP,1)*bounds_p(:,1)'+(ones(NP,1)*(bounds_p(:,2)'-bounds_p(:,1)')) .*(rand(NP,D));% 初
始种群位置信息,使位置都位于最大值与最小值间,最后形成 NP 行 2 列的矩阵
v=ones(NP,1)*bounds_v(:,1)'+(ones(NP,1)*(bounds_v(:,2)'-bounds_v(:,1)')) .*(rand(NP,D));%初始
种群速度信息,使位置都位于最大值与最小值间,最后形成 NP 行 2 列的矩阵
count=1;%进化代数
cost=zeros(NP,1);%存放个体的适应值,初始化为 NP 行一列的零矩阵
cost(1)=fitnessrevisemodel(x(1,:));%计算第一个个体适应值
fitness_zbest=cost(1);%存放全局最优值,假设第一个个体便是最优值
zbest=x(1,:);%存放全局对应最优值的解
for i2=2:NP %计算初始种群中的最优值和最优值对应的解
cost(i2)=fitnessrevisemodel(x(i2,:));
if(cost(i2)<= fitness_zbest)
fitness_zbest=cost(i2);
zbest=x(i2,:);
end
评论1