首页 > 编程知识 正文

基于matlab的遗传算法机电(二元函数遗传算法matlab)

时间:2023-05-05 01:58:51 阅读:1782 作者:2975

我理解遗传算法。本文采用了这种算法。具体来说,你希望遗传算法做什么?优化什么的。我会给你一个标准的遗传算法程序供你参考:

本程序为遗传算法优化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]);

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。