function [xv,fv]=myGA(fitness,a,b,NP,NG,Pc,Pm,eps)
% fitness:待优化的目标函数
% a:自变量的下界
% b:自变量的上界
% NP:种群个体数20-100
% NG:最大进化代数100-500
% Pc:杂交概率0.4-0.99
% Pm:变异概率0.0001-0.1
% 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 i=1:NG
sumfx=sum(fx); %所有个体适应值之和
Px=fx/sumfx; %所有个体适应值的平均值
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
end
Selmother=floor(rand()*(NP-1))+1; %随机选择母亲
posCut=floor(rand()*(L-2))+1; %随机确定交叉点
r1&#
遗传算法的matlab实现
最新推荐文章于 2023-06-10 13:02:34 发布