%标准遗传算法
%优化函数为f=-(x-1)^2+4,其中,0<=x<=3
%编码长度为10位,编码精度为0.0029
%种群规模设为40,遗传算子分别为比例选择,单点交叉和单点变异。交叉概率0.7,变异概率
0.1
%最大进化代数为300代,保优操作。
main.m
initial;
global G;
for G=1:200
crossover;
mutation;
adapting;
keepbest;
selection;
end
result;
%初始化函数,随机形成规模为40初始种群
initial.m
pop(40,10)=0;
best_individual(10)=0; %最优个体
adapt_ave(200)=0; %种群平均适应值
for i=1:40
for j=1:10
if rand>0.5
pop(i,j)=1;
else
pop(i,j)=0;
end
end
end
% pop
clear i;
clear j;
%交叉操作,概率为0.7,单点交叉
crossover.m
for i=1:2:39
cross_P=rand; %随机产生一个数,以比较交叉概率
if cross_P<0.9 %交叉概率为0.7
cross_pos=round(10*rand); %交叉位置为0~9,若位置为0或1,则不进行交叉操作
if or(cross_pos==0,cross_pos==1)
continue;
end
for j=cross_pos:10
temp=pop(i,j);