MATLAB遗传算法例子一
来源:互联网 发布:如何整理mac里的照片 编辑:程序博客网 时间:2024/05/19 17:50
本文代码基于谢菲尔德大学遗传算法工具箱。
问题:求在0~4范围内的最大值
figure(1);% fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲线fplot('-variable.*(variable - 4)',[0,5]); %画出函数曲线%定义遗传算法参数NIND=40; %个体数目(Number of individuals)MAXGEN=25; %最大遗传代数(Maximum number of generations)PRECI=20; %变量的二进制位数(Precision of variables)GGAP=0.9; %代沟(Generation gap)trace=zeros(2, MAXGEN); %寻优结果的初始值FieldD=[20;0;5;1;0;1;1]; %区域描述器(Build field descriptor)表示染色体个体到实际的数字的映射关系Chrom=crtbp(NIND, PRECI); %初始种群gen=0; %代计数器variable=bs2rv(Chrom, FieldD); %计算初始种群的十进制转换ObjV=-variable.*(variable - 4); %计算目标函数值while gen<MAXGEN FitnV=ranking(-ObjV); %分配适应度值(Assign fitness values) SelCh=select('sus', Chrom, FitnV, GGAP); %选择 SelCh=recombin('xovsp', SelCh, 0.7); %重组 SelCh=mut(SelCh); %变异 variable=bs2rv(SelCh, FieldD); %子代个体的十进制转换 ObjVSel=-variable.*(variable - 4);%计算子代的目标函数值 [Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新种群 variable=bs2rv(Chrom, FieldD); gen=gen+1; %代计数器增加 %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号 [Y, I]=max(ObjV);hold on; plot(variable(I), Y, 'bo'); trace(1, gen)=max(ObjV); %遗传算法性能跟踪 trace(2, gen)=sum(ObjV)/length(ObjV);endvariable=bs2rv(Chrom, FieldD); %最优个体的十进制转换hold on, grid;plot(variable,ObjV,'b*');figure(2);plot(trace(1,:));hold on;plot(trace(2,:),'-.');gridlegend('解的变化','种群均值的变化')
步骤:
- 初始化种群
- 分配适应度值FitnV
- 选择、重组、变异
- 子代插入父代形成新种群
- 回到2,循环直至最大代数
- 得到最优种群,即最优解
本文代码大部分来自《MATLAB_遗传算法工具箱与应用》雷英杰 一书
0 0
- MATLAB遗传算法例子一
- Matlab遗传算法(一)
- MATLAB遗传算法例子二:求多元函数最小值
- matlab遗传算法
- MATLAB-遗传算法
- Matlab实现遗传算法
- MATLAB遗传算法实例
- 遗传算法MATLAB
- 遗传算法MATLAB
- 遗传算法MATLAB
- 遗传算法的例子
- 遗传算法C++例子
- 通俗易懂遗传算法例子
- 遗传算法的例子
- 遗传算法C++例子
- 遗传算法的例子
- 遗传算法(一)基本遗传算法(SGA)及MATLAB源码
- 通俗解释matlab之遗传算法求最优值(一)
- Bitmap毛边问题
- 动态规划 16 (踩方格)
- 图像反亮
- bzoj2330: [SCOI2011]糖果
- 算法分析与设计第九周:45. Jump Game II
- MATLAB遗传算法例子一
- new delete
- mysqli_connect() 2005错误
- 暗黑破坏神(DIABLOII 1.11B)BOT制作(一)
- 第一天作业
- 【DOM】2.改变新闻字体大小
- CCFCSP201612-1中间数
- ZOJ3769-Diablo III(分组背包)
- 第三章 3-1 windows主函数以及窗口处理过程函数