智能计算作业 遗传算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
clc clear all close all %%画出函数图 figure(1); hold on ; lb=1;ub=2;%函数自变量范围
ezplot('sin(10*pi*X)/X',[lb,ub]);%画出函数曲线 xlabel('自变量/X') ylabel('函数值/Y') %%定义遗传算法参数 NIND=40;%种群大小 MAXGEN=20;%最大遗传代数 PRECI=20;%个体长度 GGAP=0.95;%代沟 px=0.7;%交叉概率 pm=0.01;%变异概率 trace=zeros(2,MAXGEN);%寻优结果的初始值 FieldD=[PRECI;lb;ub;1;0;1;1];%区域描述器 Chrom=crtbp(NIND,PRECI);%创建任意离散随机种群 %%优化 gen=0;%代计数器 X=bs2rv(Chrom,FieldD);%初始种群二进制到十进制转换 ObjV=sin(10*pi*X)./X;%计算目标函数值 while gen<MAXGEN FitnV=ranking(ObjV);%分配适应度 SelCh=select('sus',Chrom,FitnV,GGAP);%选择 SelCh=recombin('xovsp',SelCh,px);%重组 SelCh=mut(SelCh,FieldD);%变异 X=bs2rv(SelCh,FieldD);%子代个体的目标函数值 ObjVSel=sin(10*pi*X)./X;%计算子代的目标函数值 [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代,得到新种群 X=bs2rv(Chrom,FieldD); gen=gen+1; %代数器增加
%获取每代的最优解及其序号,Y为最优解,I为个体序号 [Y,I]=min(ObjV); trace(1,gen)=X(I);%记下每代的最优值 trace(2,gen)=Y;%记下每代的最优值
end plot(trace(1,:),trace(2,:),'bo');%画出每代的最优点 grid on; plot(X,ObjV,'b*');%画出最后一代的种群 hold off %%画进化图 figure(2); plot(1:MAXGEN,trace(2,:)); grid on xlabel('遗传代数') ylabel('解的变化') title('进化过程') bestY=trace(2,end); bestX=trace(1,end); fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])
择的原则是适应性强的个体为下一代贡献一个或多个后代的概率大。 2.5 交叉 交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体, 新个体组合了父辈个体的特性。交叉体现了信息交换的思想。 2.6 变异 随机选择中间群体中的某个个体,以概率 p 大小改变个体某基因的值。变异为产 生新个体提供了机会。GA 中变异发生的概率很低,通常取值很小。
智能计算—遗传算法的应用
1、遗传算法的基本原理
遗传算法(genetic algorithm,GA)是一种新近发展起来的搜索最优解的方 法。其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算 法是把问题参数编码为染色体, 再利用迭代的方式进行选交叉以及变异等运算来 交换种群中染色体的信息, 最终生成符合优化目标的染色体,产生一群新的更适 应环境的个体,使群体进化到搜索空间中越来越好的区域。
3、遗传算法的 MATLAB 程序实现
3.1 采用遗传算法优化一元函数 f ( x)
sin(10x) , x [1,2] x
首先需下载并安装谢菲尔德遗传算法工具箱至 MATLAB 搜索路径中,程序中遗传 算法使用的函数格式如下: (1) 创建种群函数—crtbp (2) 适应度计算函数—ranking (3) 选择函数—select (4) 交叉算子函数—recombin (5) 变异算子函数—mut (6) 重插入函数—reins (7) 实用函数—bs2rv 其中种群大小为 40,最大遗传代数为 20,个体长度为 20,代沟为 0.95,交叉概 率为 0.7,变异概率为 0.01 3.2 程序运行结果
图1. 目标函数图、每代的最优解以及经过20代进化后的种群分布图
图 2. 最优解的进化过程
来自百度文库
3.3 结果分析 图1为目标函数图,其中○是每代的最优解,*是优化20代后的种群分布,可看出 他们都集中在一个点X=1.1491,Y=-0.8699,即为最优解。图2为种群优化20代的 进化图。 3.4 程序源代码:
2、遗传算法进行问题求解的基本步骤:
2.1 编码 GA 在进行搜索之前,先将问题求解空间的可行解表示成遗传空间的基因型结构 数据,串结构数据的不同组合构成了不同的可行解。 2.2 生成初始群体 随机产生 N 个初始串结构数据,每个串结构数据成为一个个体,N 个个体组成一 个群体,GA 以该群体作为该群体作为初始迭代点。 2.3 适应度评估检测 根据实际标准计算个体的适应度,评判个体的优劣,即该个体所代表的可行解的 优劣。适应度表明个体或解的优劣性,不同的问题,适应性函数的定义方式也不 同。 2.4 选择 从当前群体中选择优良的(适应度高的)个体,使他们有机会被选中进入下一次 迭代过程,舍弃适应度低的个体。遗传算法通过选择过程体现这一思想,进行选
ezplot('sin(10*pi*X)/X',[lb,ub]);%画出函数曲线 xlabel('自变量/X') ylabel('函数值/Y') %%定义遗传算法参数 NIND=40;%种群大小 MAXGEN=20;%最大遗传代数 PRECI=20;%个体长度 GGAP=0.95;%代沟 px=0.7;%交叉概率 pm=0.01;%变异概率 trace=zeros(2,MAXGEN);%寻优结果的初始值 FieldD=[PRECI;lb;ub;1;0;1;1];%区域描述器 Chrom=crtbp(NIND,PRECI);%创建任意离散随机种群 %%优化 gen=0;%代计数器 X=bs2rv(Chrom,FieldD);%初始种群二进制到十进制转换 ObjV=sin(10*pi*X)./X;%计算目标函数值 while gen<MAXGEN FitnV=ranking(ObjV);%分配适应度 SelCh=select('sus',Chrom,FitnV,GGAP);%选择 SelCh=recombin('xovsp',SelCh,px);%重组 SelCh=mut(SelCh,FieldD);%变异 X=bs2rv(SelCh,FieldD);%子代个体的目标函数值 ObjVSel=sin(10*pi*X)./X;%计算子代的目标函数值 [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代,得到新种群 X=bs2rv(Chrom,FieldD); gen=gen+1; %代数器增加
%获取每代的最优解及其序号,Y为最优解,I为个体序号 [Y,I]=min(ObjV); trace(1,gen)=X(I);%记下每代的最优值 trace(2,gen)=Y;%记下每代的最优值
end plot(trace(1,:),trace(2,:),'bo');%画出每代的最优点 grid on; plot(X,ObjV,'b*');%画出最后一代的种群 hold off %%画进化图 figure(2); plot(1:MAXGEN,trace(2,:)); grid on xlabel('遗传代数') ylabel('解的变化') title('进化过程') bestY=trace(2,end); bestX=trace(1,end); fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])
择的原则是适应性强的个体为下一代贡献一个或多个后代的概率大。 2.5 交叉 交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体, 新个体组合了父辈个体的特性。交叉体现了信息交换的思想。 2.6 变异 随机选择中间群体中的某个个体,以概率 p 大小改变个体某基因的值。变异为产 生新个体提供了机会。GA 中变异发生的概率很低,通常取值很小。
智能计算—遗传算法的应用
1、遗传算法的基本原理
遗传算法(genetic algorithm,GA)是一种新近发展起来的搜索最优解的方 法。其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算 法是把问题参数编码为染色体, 再利用迭代的方式进行选交叉以及变异等运算来 交换种群中染色体的信息, 最终生成符合优化目标的染色体,产生一群新的更适 应环境的个体,使群体进化到搜索空间中越来越好的区域。
3、遗传算法的 MATLAB 程序实现
3.1 采用遗传算法优化一元函数 f ( x)
sin(10x) , x [1,2] x
首先需下载并安装谢菲尔德遗传算法工具箱至 MATLAB 搜索路径中,程序中遗传 算法使用的函数格式如下: (1) 创建种群函数—crtbp (2) 适应度计算函数—ranking (3) 选择函数—select (4) 交叉算子函数—recombin (5) 变异算子函数—mut (6) 重插入函数—reins (7) 实用函数—bs2rv 其中种群大小为 40,最大遗传代数为 20,个体长度为 20,代沟为 0.95,交叉概 率为 0.7,变异概率为 0.01 3.2 程序运行结果
图1. 目标函数图、每代的最优解以及经过20代进化后的种群分布图
图 2. 最优解的进化过程
来自百度文库
3.3 结果分析 图1为目标函数图,其中○是每代的最优解,*是优化20代后的种群分布,可看出 他们都集中在一个点X=1.1491,Y=-0.8699,即为最优解。图2为种群优化20代的 进化图。 3.4 程序源代码:
2、遗传算法进行问题求解的基本步骤:
2.1 编码 GA 在进行搜索之前,先将问题求解空间的可行解表示成遗传空间的基因型结构 数据,串结构数据的不同组合构成了不同的可行解。 2.2 生成初始群体 随机产生 N 个初始串结构数据,每个串结构数据成为一个个体,N 个个体组成一 个群体,GA 以该群体作为该群体作为初始迭代点。 2.3 适应度评估检测 根据实际标准计算个体的适应度,评判个体的优劣,即该个体所代表的可行解的 优劣。适应度表明个体或解的优劣性,不同的问题,适应性函数的定义方式也不 同。 2.4 选择 从当前群体中选择优良的(适应度高的)个体,使他们有机会被选中进入下一次 迭代过程,舍弃适应度低的个体。遗传算法通过选择过程体现这一思想,进行选