%初始染色体个数
chromosome = repmat(my_chromosome,model.NP,1);
%子代染色体
next_chromosome = repmat(my_chromosome,model.NP,1);
%种群的适应度值
seeds_fitness=zeros(1,model.NP);
%全局最优
p_global.cost=inf;
%适应度最优值保留
best=zeros(model.MaxIt+1,1);
best(1)=model.globel.cost;
%种群初始化
for i=1:model.NP
chromosome(i).pos=model.chromosome(i).pos;
chromosome(i).alpha=model.chromosome(i).alpha;
chromosome(i).beta=model.chromosome(i).beta;
chromosome(i).atkalpha=model.chromosome(i).atkalpha;
chromosome(i).atkbeta=model.chromosome(i).atkbeta;
chromosome(i).T=model.chromosome(i).T;
chromosome(i).sol=model.chromosome(i).sol;
chromosome(i).cost=model.chromosome(i).cost;
chromosome(i).IsFeasible=model.chromosome(i).IsFeasible;
seeds_fitness(i)=model.seeds_fitness(i);
for d=1:3
chromosome(i).vel(d,:)= zeros(1,model.dim);
end
%更新历史最优粒子
chromosome(i).best.pos =chromosome(i).pos;
chromosome(i).best.alpha =chromosome(i).alpha;
chromosome(i).best.beta =chromosome(i).beta;
chromosome(i).best.T =chromosome(i).T;
chromosome(i).best.sol =chromosome(i).sol;
chromosome(i).best.cost =chromosome(i).cost;
%更新全局最优例子
if p_global.cost > chromosome(i).best.cost
p_global = chromosome(i).best;
end
end
for it=1:model.MaxIt
%得到最大和平均适应度值
model.f_max =max(seeds_fitness);
model.f_avg =mean(seeds_fitness);
%按照适应度对染色体排序
sort_array =zeros(model.NP,2);
for i=1:model.NP
sort_array(i,:)= [i,chromosome(i).cost];
end
%以cost从小到大进行排序
sort_array =sortrows(sort_array,2);
model.p_global =p_global;
%只保留前一半的染色体,后一般抛弃