引用:
作者: ai_hinemon
function[xv,fv]=GA(fitness,a,b,NP,NG,pc,pm,eps)
%待优化的目标函数:fitness
%自变量下界:a
%自变量上界:b
%种群个体数:NP
%最大进化代数:NG
%杂交概率  c
%自变量概率  m
%自变量离散精度:eps
%目标函数取最小值时的自变量值:xm
%目标函数的最小值:fv
|
L=ceil(log2((b-a)/eps+1)); %根据离散精度,确定二进制编码需要的码长
x=zeros(NP,L);
for i=1:NP
x(i,

=Initial(L);%种群初始化
fx(i)=fitness(Dec(a,b,x(i,

,L)); %个体适应值
end
for k=1:NG
sumfx=sum(fx); %所有个体适应值之和
px=fx/sumfx; %所有个体适应值的平均值
ppx=0;
ppx(1)=px(1);
for i=2:NP %用于轮盘赌策略的累加
ppx(i)=ppx(i-1)+px(i);
end
for i=1:NP
sita=rand();
for n=1:NP
if sita<=ppx(n)
SelFather=n; %根据轮盘赌策略确定的父亲
break;
end