理解遗传算法及MATLAB代码实现

1.遗传算法

遗传算法(Genetic Algorithm, GA)是由美国密歇根(Michigan)大学心理教授、电子工程学和计算机科学教授John H.Holland首先提出的一种随机自适应的全局搜索算法。

2.算法基本原理及流程结构

2.1染色体编码

常用的较简单的两种编码方式:
(1)二进制编码方法:该方法产生的染色体是一个二进制符号序列,染色体的每个基因只能取值0或1;
(2)浮点数编码:染色体的长度等于问题定义的解得变量个数,染色体的每个基因等于解的每一维变量。

2.2群体的初始化

采用生成随机数的方法,初始化规模为N的群体,对染色体的每一维变量进行初始化赋值;

2.3适应值评价

采用评估函数对群体的染色体进行评价,(评估函数常根据问题的优化目标来定)分别计算每个染色体的适应值,保存适应值最大的染色体Best;

2.4选择算子

使用轮盘赌选择算法(其基本思想是基于概率的随机选择),求出种群中每个染色体的适应值得总合,再求出每个染色体适应值与总适应值的比值Pi,Pi比值越大被选中的概率就越大;

2.5交配算子

交配概率Pc(一般取值0.4~0.99),对于每个染色体,如果Random[0,1]小于Pc,该染色体可进行交配,其子代进入新种群,不参与交配的染色体直接进入新种群中

2.6变异算子

变异概率Pm(0.001~0.1之间),如果Random[0,1]小于Pm,改变基因的取值,否则基因保持不变。变异后的染色体取代原来的染色体进入新种群,不变异的直接进入新种群。

2.7更新适应值

变异后的新群体取代原有群体,重新计算群体中各个染色体的适应值,更新群体中的最大适应值Best.

2.8判断算法结束

如果进化代数超过了最大进化代数,或者最大适应值Best达到误差要求,算法就结束。

3.算法流程图

在这里插入图片描述

MATLAB代码实现

##计算函数f(x)=x+10sin(5x)+7cos(4x) x∈[0,10] 的最大值。

1.主函数

% 下面举例说明遗传算法 %
% 求下列函数的最大值 %
% f(x)=x+10*sin(5x)+7*cos(4x) x∈[0,10] %
% 将 x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为 (10-0)/(2^10-1)0.01 
% 将变量域 [0,10] 离散化为二值域 [0,1023], x=0+10*b/1023, 其中 b 是 [0,1023] 中的一个二值数。 %
% %

% 2.0 主程序
%遗传算法主程序
%Name:genmain05.m
%要求精度不大于0.01,
clear
clc

popsize=40;                         %群体大小
chromlength=10;                  %字符串长度(个体长度)
pc=0.5;                                %交叉概率,只有在随机数小于pc时,才会产生交叉
pm=0.006;                           %变异概率

pop=initpop(popsize,chromlength);               %随机产生初始群体
for i=1:20                                                       %20为遗传代数
        [objvalue]=calobjvalue(pop);                  %计算目标函数
        fitvalue=calfitvalue(objvalue);                 %计算群体中每个个体的适应度

        [newpop]=selection(pop,fitvalue);                 %复制
        [newpop1]=crossover(newpop,pc);               %交叉
        [newpop2]=mutation(newpop1,pm);               %变异
        
        [objvalue]=calobjvalue(newpop2);                 %计算目标函数
        fitvalue=calfitvalue(objvalue
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值