《2022年遗传算法优化相关MATLAB算法实现 .pdf》由会员分享,可在线阅读,更多相关《2022年遗传算法优化相关MATLAB算法实现 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、遗传算法1、案例背景遗传算法( Genetic Algorithm ,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、 适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、 交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。在遗传算法中, 染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。基因组成的串就是染色体,或者叫基因型个体( Individuals) 。一定数量的个体组成了群体(Population)。群体中个体的数目称为群体大小(Population Size),也叫群体规模。而
2、各个个体对环境的适应程度叫做适应度( Fitness) 。2、遗传算法中常用函数1)创建种群函数crtbp2)适应度计算函数ranking3)选择函数 select4)交叉算子函数recombin5)变异算子函数mut6)选择函数 reins7)实用函数 bs2rv8)实用函数 rep3、主程序:1. 简单一元函数优化:clc clear all close all % 画出函数图figure(1); hold on; lb=1;ub=2; %函数自变量范围【1,2】ezplot(sin(10*pi*X)/X,lb,ub); %画出函数曲线xlabel(自变量 /X) ylabel(函数值 /
3、Y) % 定义遗传算法参数NIND=40; %个体数目MAXGEN=20; % 最大遗传代数PRECI=20; % 变量的二进制位数GGAP=0.95; % 代沟px=0.7; %交叉概率pm=0.01; %变异概率名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - trace=zeros(2,MAXGEN); %寻优结果的初始值FieldD=PRECI;lb;ub;1;0;1;1; %区域描述器Chrom=crtbp(NIND,P
4、RECI); % 初始种群% 优化gen=0; %代计数器X=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换ObjV=sin(10*pi*X)./X; % 计算目标函数值while genMAXGEN FitnV=ranking(ObjV); %分配适应度值SelCh=select(sus,Chrom,FitnV,GGAP); % 选择SelCh=recombin(xovsp,SelCh,px); %重组SelCh=mut(SelCh,pm); %变异X=bs2rv(SelCh,FieldD); % 子代个体的十进制转换ObjVSel=sin(10*pi*X)./X; %
5、 计算子代的目标函数值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*); % 画出最后一代的种群hol
6、d 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. 多元函数优化clc clear all close all % 画出函数图figure(1); lbx=-2;ubx=2; %函数自变量x范围【 -2,2】名师资料总结 - - -精品资料欢迎下载 - -
7、- - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - lby=-2;uby=2; %函数自变量y 范围【 -2,2】ezmesh(y*sin(2*pi*x)+x*cos(2*pi*y),lbx,ubx,lby,uby,50); %画出函数曲线hold on; % 定义遗传算法参数NIND=40; %个体数目MAXGEN=50; % 最大遗传代数PRECI=20; % 变量的二进制位数GGAP=0.95; % 代沟px=0.7; %交叉概率pm=0.01; %变异概率trace=zer
8、os(3,MAXGEN); %寻优结果的初始值FieldD=PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1; % 区域描述器Chrom=crtbp(NIND,PRECI*2); %初始种群% 优化gen=0; %代计数器XY=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换X=XY(:,1);Y=XY(:,2); ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); % 计算目标函数值while genMAXGEN FitnV=ranking(-ObjV); % 分配适应度值SelCh=select(sus,Chro
9、m,FitnV,GGAP); % 选择SelCh=recombin(xovsp,SelCh,px); %重组SelCh=mut(SelCh,pm); %变异XY=bs2rv(SelCh,FieldD); % 子代个体的十进制转换X=XY(:,1);Y=XY(:,2); ObjVSel=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); % 计算子代的目标函数值Chrom,ObjV=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群XY=bs2rv(Chrom,FieldD); gen=gen+1; %代计数器增加%获取每代的最优解
10、及其序号,Y为最优解 ,I 为个体的序号Y ,I=max(ObjV); trace(1:2,gen)=XY(I,:); %记下每代的最优值trace(3,gen)=Y; % 记下每代的最优值end plot3(trace(1,:),trace(2,:),trace(3,:),bo); % 画出每代的最优点grid on; plot3(XY(:,1),XY(:,2),ObjV,bo); %画出最后一代的种群hold off % 画进化图figure(2); plot(1:MAXGEN,trace(3,:); grid on xlabel(遗传代数 ) ylabel(解的变化 ) 名师资料总结 -
11、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - title( 进化过程 ) bestZ=trace(3,end); bestX=trace(1,end); bestY=trace(2,end); fprintf( 最优解 :nX=,num2str(bestX),nY=,num2str(bestY),nZ=,num2str(bestZ), n) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -