web browser http://www.ilovematlab.cn/thread-61659-1-1.html
%% 清空环境变量
clc
clear
%% 初始化遗传算法参数
%初始化参数
maxgen=100; %进化代数,即迭代次数
sizepop=20; %种群规模
pcross=[0.4]; %交叉概率选择,0和1之间
pmutation=[0.2]; %变异概率选择,0和1之间
lenchrom=[1 1]; %每个变量的字串长度,如果是浮点变量,则长度都为1
bound=[-5 5;-5 5]; %数据范围
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness=[]; %每一代种群的平均适应度
bestfitness=[]; %每一代种群的最佳适应度
bestchrom=[]; %适应度最好的染色体
%% 初始化种群计算适应度值
% 初始化种群
for i=1:sizepop
%随机产生一个种群
individuals.chrom(i,:)=Code(lenchrom,bound);
x=individuals.chrom(i,:);
%计算适应度
individuals.fitness(i)=fun(x); %染色体的适应度
end
%找最好的染色体
[bestfitness bestindex]=min(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); %最好的染色体
avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
trace=[avgfitness bestfitness];
%% 迭代寻优
% 进化开始
for i=1:maxgen
i
% 选择
individuals=Select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/sizepop;
%交叉
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 变异
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:); %解码
individuals.fitness(j)=fun(x);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
individuals.chrom(worestindex,:)=bestchrom;
individuals.fitness(worestindex)=bestfitness;
avgfitness=sum(individuals.fitness)/sizepop;
trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
end
%进化结束
%% 结果分析
[r c]=size(trace);
plot([1:r]',trace(:,2),'r-');
title('适应度曲线','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
axis([0,100,0,1])
disp('适应度 变量');
x=bestchrom;
% 窗口显示
disp([bestfitness x]);
web browser http://www.ilovematlab.cn/thread-61659-1-1.html
CrMylive.
- 粉丝: 1w+
- 资源: 4万+
最新资源
- 基于Vue框架的学生交流互助平台源码(java毕业设计完整源码).zip
- 基于web的篮球视频网站设计与实现.doc
- 基于javaweb的KTV点歌管理系统论文.doc
- 谷歌浏览器开发版GoogleChromeDev for Mac v112.0.5615.12
- 谷歌浏览器金丝雀版GoogleChromeCanary for Mac v113.0.5638.0
- 谷歌浏览器测试版GoogleChromeBeta for Mac v111.0.5563.64
- 电池管理 coconutBattery for Mac v4.0.1.130
- 网页设计软件 EverWeb for Mac v4.3.0
- python数据的读取与处理
- Unity游戏开发之基于C#的玩家控制与碰撞检测机制实现
- 谷歌浏览器正式版GoogleChrome for Mac v111.0.5563.64
- RAID设置流程解析 - SAS9460-8i 阵列卡的BIOS配置步骤
- Markdown写作 Ulysses for Mac v36.2
- 基于web的汽车零件销售管理系统的设计与实现毕业设计论文.doc
- Unity游戏开发教程:实现“吃金币”游戏的基本功能
- 基于javaweb的汽车租赁网站设计与实现.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈