1、functionbin_gen,bits=encoding(min_var,max_var,scale_var,popsize)bits=ceil(log2(max_var-min_var)./scale_var);bit_gen=randint(popsize,sum(bits);%编码并产生初始种群functionvar_gen,fitness=decoding (funname,bin_gen,bits,min,var,max_var)nun_var=length(bits);popsize=size(bin_gen,1);scale_dec=(max_var-min_var)./(2.
2、bits-1);bits=cumsum(bits);bits=0 bits;for i=1:num_var bin_vari=bin_gen(:,bits(i)+1:bits(i+1);vari=sum(ones(popsize,1)*2.(size(bin_vari,2)-1:-1:0).*bin_vari,2).*scale_dec(i)+min_var(i);endvar_gen=var1,:;for i=1:popsize fitness(i)=eval(funname,(var_gen(I,:);end%对函数解码functionevo_gen,best_indiv,max_fitn
3、ess=selection(old_gen,fit_ness) popsize=length(fitness);max_fitness,index1=max(fitness);min_fitness,index2=min(fitness);best_indiv=old_gen(indexl,:);index=1:popsize;index(indexl)=0;index(index2)=0;index=nonzeros(index);evo_gen=old_gen(index);evo_fitness=fitness(index,:);evo_popsize=popsize-2;ps=evo_
4、fitness/sum(evo_fitness);pscum=cumsum(ps);r=rand(1,evo_popsize);selscted=sum(pscum*ones(1,evo_popsize)ones(evo_popsize,1)*r)+1;evo_gen=evo_gen(selected,:);%选择Function new_gen=crossover(old_gen,pc)nouse,mating=sort(rand(size(old_gen,1),1);mat_gen=old_gen(mating,:);pairs=size(mat_gen,1)/2;bits=size(ma
5、t_gen,2);cpairs=rand(pairs,1) pc;cpoints=randint(pairs,1,1,bits);cpoints=cpairs.*cpoints;for i=1: pairsnew_gen(2*i-1 2*i,:)=mat_gen(2*i-1 2*i,1:cpoints(i) mat_gen(2*i 2*i-1,cpoints(i)+1:bits);function new_gen=mutation(old_gen,pm) mpoints=find(rand(size(old_gen)pm); new_gen=old_gen;new_gen(mpoints)=1-old_gen(mpoints);