基于matlab的GA遗传优化计算抛物线的最大值
2023-09-14 09:06:07 时间
目录
1.算法描述
遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。
其主要步骤如下:
1.初始化
选择一个群体,即选择一个串或个体的集合bi,i=1,2,...n。这个初始的群体也就是问题假设解的集合。一般取n=30-160。
通常以随机方法产生串或个体的集合bi,i=1,2,...n。问题的最优解将通过这些初始假设解进化而求出。
2.选择
根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。
给出目标函数f,则f(bi)称为个体bi的适应度。以
为选中bi为下一代个体的次数。
显然.从式(3—86)可知:
(1)适应度较高的个体,繁殖下一代的数目较多。
(2)适应度较小的个体,繁殖下一代的数目较少;甚至被淘汰。
这样,就产生了对环境适应能力较强的后代。对于问题求解角度来讲,就是选择出和最优解较接近的中间解。
3.交叉
对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
popsize=50; %群体大小
chromlength=10; %字符串长度(个体长度)
pc=0.6; %交叉概率,只有在随机数小于pc时,才会产生交叉
pm=0.001; %变异概率
pop=initpop(popsize,chromlength); %随机产生初始群体
for i=1:100 %20为遗传代数
[objvalue]=calobjvalue(pop); %计算目标函数
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
[newpop]=selection(pop,fitvalue);
%复制
[newpop1]=crossover(newpop,pc);
%交叉
[newpop2]=mutation(newpop1,pc);
%变异
[objvalue]=calobjvalue(newpop2);
%计算目标函数
fitvalue=calfitvalue(objvalue);
%计算群体中每个个体的适应度
[bestindividual,bestfit]=best(newpop2,fitvalue); %求出群体中适应值最大的个体及其适应值
y(i)=bestfit; %返回的 y 是自适应度值,而非函数值
x(i)=decodechrom(bestindividual,1,chromlength)*50/1023; %将自变量解码成十进制
pop=newpop2;
end
fplot('-x.*x+50.*x+12',[0,50])
hold on
plot(x,y,'r*')
hold on
[z index]=max(y); %计算最大值及其位置
xfm=x(index) %计算最大值对应的x值
ymax=z
A269
4.完整MATLAB
V
相关文章
- matlab模糊控制工具箱使用教程_模糊pid控制原理
- 随机振动 matlab,Matlab内建psd函数在工程随机振动谱分析中的修正方法「建议收藏」
- matlab 求矩阵秩,求Matlab中矩阵的秩和迹 | 学步园[通俗易懂]
- 如何用matlab编写分段函数_请教各位怎样用matlab定义一个分段函数MATLAB分段函数…[通俗易懂]
- MATLAB fmincon 的初值x0的选取问题[通俗易懂]
- matlab中如何求插值点,MATLAB插值「建议收藏」
- matlab 插值出错,MATLAB插值问题
- Matlab插值方法大全
- matlab插值计算
- matlab fir带通滤波,基于Matlab的FIR带通滤波器设计与实现
- matlab interp1db,matlab – Matlab interp1图出现数据偏移 – 堆栈内存溢出
- IEEE follow机器学习遥感图像处理课程讲义及Matlab代码分享
- 低通滤波器matlab代码_matlab设计fir低通滤波器
- unit在matlab中啥意思,unit8(matlab中uint8函数)
- matlab ga算法_基因算法和遗传算法
- zigzag扫描matlab,ZIGZAG扫描的MATLAB实现
- Matlab PLOT 颜色设置与符号
- matlab循环语句for_MATLAB以下选择语句错误的是
- Matlab函数定义_matlab子函数
- matlab 怎么使用function,Matlab中function函数使用操作方法
- Matlab期末大作业(代码醇香版) – 学金融的文史哲小生
- Matlab常用图像处理命令108例(三)
- 【MATLAB】矩阵操作 ( 矩阵下标 | 矩阵下标排列规则 )
- 【MATLAB】图像导出 ( 导出绘制的图像 | 图像设置 )
- 【MATLAB】进阶绘图 ( 双 y 轴图形 | plotyy 函数 | Histogram 统计图形 | hist 函数 )
- 【数字信号处理】卷积编程实现 ( 卷积计算原理 | 卷积公式计算 | 使用 matlab 计算卷积 | 使用 C 语言实现卷积计算 )
- 「数值计算、数据分析软件」MATLAB R2023a下载安装激活教程
- MATLAB三角函数汇总
- MATLAB冒号:运算符的用法