我理解遗传算法。本文采用了这种算法。具体来说,你希望遗传算法做什么?优化什么的。我会给你一个标准的遗传算法程序供你参考:
本程序为遗传算法优化BP神经网络函数极值优化:
%%该代码是基于神经网络遗传算法的系统极值优化。
%%空环境变量
色度控制中心
清楚的
%%初始化遗传算法参数
%初始化参数
maxgen=100%进化代数,即迭代次数。
sizepop=20人口规模%
pcross=[0.4];%交叉概率选择,介于0和1之间
pm utation=[0.2];0和1之间的%变化概率选择
lenchrom=[1 1];%每个变量的字符串长度,如果是浮点变量,则为1。
界限=[-5 5;-5 5];%数据范围
个体=struct('fitness ',zeros,sizepop),' chrom ',[]);%将人口信息定义为一种结构。
avgfitness=[];每一代人口的平均适合度百分比
best fitness=[];%每一代人口的最佳适应度
best chrom=[];最适合的染色体百分比
%%初始化群体计算适应值。
%初始化人口
对于i=1:sizepop
%随机产生一个群体。
个体. chrom(i,)=Code(lenchrom,bound);
x=个体. chrom(i,);
%计算适合度
个人.健身(I)=娱乐(x);%染色体的适合度
目标
%找到最佳染色体
[best fitness best index]=min(personal . fitness);
bestchrom=个体. chrom(bestindex,);%的最佳染色体
avg fitness=sum(personal . fitness)/sizepop;%染色体的平均适合度
%记录每一代进化中的最佳适应度和平均适应度。
trace=[avg fitness best fitness];
%%迭代优化
%进化开始。
对于i=1:maxgen
我
% select
个体=选择(个体,大小);
avg fitness=sum(personal . fitness)/sizepop;
%交叉
personal . chrom=Cross(pcross,lenchrom,personal . chrom,sizepop,bound);
%变化
lenchrom=突变(pmutation,lenchrom,personal . chrom,sizepop,[i maxgen],bound);
%计算适合度
对于j=1:sizepop
x=个体. chrom(j,);%解码
个人.健身(j)=乐趣(x);
目标
%找出适应度最小和最大的染色体及其在群体中的位置。
[newbestfitness,new best index]=min(personal . fitness);
[worestfitness,worestindex]=max(personal . fitness);
%取代了上次进化中最好的染色体。
if bestfitnessnewbestfitness
bestfitness=newbestfitness
bestchrom=个体. chrom(newbestindex,);
目标
persist . chrom(worestindex,)=best chrom;
persist . fitness(worestindex)=best fitness;
avg fitness=sum(personal . fitness)/sizepop;
trace=[trace;avgfitness best fitness];%记录每一代进化中的最佳适应度和平均适应度。
目标
%进化结束。
%%结果分析
[r c]=大小(轨迹);
地块([1:r]',迹线(:2),' r-');
标题('健身曲线',' fontsize ',12);
Xlabel('进化代数',' fontsize ',12);Ylabel ('fitness ',' fontsize ',12);
轴([0,100,0,1])
disp(' fitness variable ');
x=bestchrom
%窗口显示
disp([best fitness x]);