基本遗传算法(GA)的算法原理、步骤、及Matlab实现
来源:互联网 发布:java split 编辑:程序博客网 时间:2024/05/09 08:40
算法原理
遗传算法可以用来求函数的极值。
(1)用二进制编码来离散自变量,码长根据离散精度来确定。码长为
(2)交叉方法采用单点交叉
(3)变异是根据变异概率反转子代某个位的值
(4)选择策略采用轮盘赌策略,令
算法步骤
基本遗传算法的基本步骤是:
- 随机产生种群,
- 用轮盘赌策略确定个体的适应度,判断是否符合优化准则,若符合,输出最佳个体及其最优解,结束,否则,进行下一步
- 依据适应度选择再生个体,适应度高的个体被选中的概率高,适应度低的个体被淘汰
- 按照一定的交叉概率和交叉方法,生成新的个体
- 按照一定的变异概率和变异方法,生成新的个体
- 由交叉和变异产生新一代种群,返回步骤2
算法的实现
%基本遗传算法,一维无约束优化function [ xv,fv ] = mGA( fitness,a,b,NP,NG,Pc,Pm,eps )% 待优化的目标函数:fitness% 自变量下界:a% 自变量上界:b% 种群个体数:NP% 最大进化代数:NG% 杂交常数:Pc% 变异常数:Pm% 自变量离散精度:eps% 目标函数取最大值是的自变量值:xv% 目标函数的最小值:fvL=ceil(log2((b-a)/eps+1)); %码长x=zeros(NP,L);for i=1:NP x(i,:)=Initial(L); fx(i)=fitness(Dec(a,b,x(i,:),L));endfor k=1:NG sumfx=sun(fx); Px=fx/sumfx; PPx=0; PPx(1)=Px(1); for i=2:NP %根据轮盘赌确定父亲 PPx(i)=PPx(i-1)+PPx(i); end for i=1:NP sita=rand(); for n=1:NP if sita <= PPx(n) SelFather = n; break; end end Selmother=floor(rand()*(NP-1))+1; %随机选择母亲 posCut=floor(rand()*(L-2))+1; %随机确定交叉点 r1=rand(); if r1<=Pc nx(i,1:posCut)=x(SelFather,1:posCut); nx(I,(posCut+1):L)=x(Selmother,(posCut+1):L); r2=rand(); if r2<=Pm %变异 posMut=round(rand()*(L-1)+1); nx(i,posMut)=~nx(i,posMut); end else nx(i,:)=x(SelFather,:); end end x=nx; for i=1:NP fx(i)=fitness(Dec(a,b,x(i,:),L); endendfv=-inf;for i=1:NP fitx=fitness(Dec(a,b,x(i,:),L)); if fitx > fv fv=fitx; xv=Dec(a,b,x(i,:),L); endendendfunction result=Initial(length) %初始化函数 for i=1:length r=round(); result(i)=round(r); endendfunction y=Dec(a,b,x,L) %二进制转十进制 base=2.^((L-1):-1:0); y=dot(base,x); y=a+y*(b-1)/(2^L-1)'end
1 0
- 基本遗传算法(GA)的算法原理、步骤、及Matlab实现
- 遗传算法(GA)的matlab实现
- 多变异位自适应遗传算法(MMAdapGA)的算法原理、算法步骤和matlab实现
- 【GA算法】遗传算法原理及其Matlab代码
- MATLAB中自带遗传算法函数GA的用法
- GA遗传算法Matlab版本实例注释
- 初识Matlab遗传算法工具箱 ga
- 遗传算法的matlab实现
- 遗传算法的matlab实现
- 遗传算法的matlab实现
- 遗传算法的matlab实现
- 基本遗传算法(SGA)的MATLAB实现
- GA入门:遗传算法原理与应用
- Matlab实现遗传算法
- 遗传算法(GA)的C语言实现
- 遗传算法(GA)
- GA遗传算法解析
- 遗传算法(GA)
- springmvc 利用模板 下载excel
- Eclipse启动是报错:
- python中 __name__=="__main__"
- http协议学习系列
- C++多态性、虚函数
- 基本遗传算法(GA)的算法原理、步骤、及Matlab实现
- 【C程序设计语言】第三章-笔记
- 使用SQLite存储以及读取Drawable对象
- sqlldr: symbol lookup error: sqlldr: undefined symbol: sldext
- Android开发优化-界面UI(2)抽出公共模块
- $.ajax()方法详解
- xml解析
- SDWebImage缓存机制
- 设置不带空白页面的WebView展示