遗传算法

遗传算法是一种模拟生物进化过程的优化方法,通过初始化种群、选择、杂交、变异等步骤迭代寻找问题的最优解。本文详细介绍了遗传算法的基本思想、算法流程,包括二进制编码、轮盘赌选择、杂交和变异操作,并分析了不同评估函数对运行时间和空间的影响。最后,给出了遗传算法的代码实现。
摘要由CSDN通过智能技术生成

遗传算法

一、基本思想

遗传算法通过模拟自然界中生物的遗传进化过程,对优化问题的最优解进行搜索。从初始种群出发,采用优胜略汰的方式选择个体,经过选择保存下来的群体构成种群,通过杂交、变异产生新一代种群取代原来的群体,逐代进化,直至满足目标为止。

二、算法流程

  1. 初始化规模为N群体,随机生成染色体每个基因的值
  2. 采用评估函数对群体中所有染色体进行评价,分别计算每个染色体的适应值,保存适应值最大的染色体Best
  3. 采用轮盘赌选择算法对染色体进行选择操作,产生规模同样为N的种群
  4. 按照概率pc从种群中选择染色体进行交配。每两个进行交配的父代染色体,交换部分基因,产生新的子代染色体,子代染色体取代父代染色体进入新的种群,没有进行交配的染色体直接复制进入新种群。
  5. 按照概率pm对新种群中染色体的基因进行变异操作。变异后的染色体取代原有染色体进入新群体,未发生变异的染色体直接进入新群体。
  6. 重新计算群体中各个染色体的适应值。倘若群体中的最大适应值大于Best的适应值,则更新Best。
  7. 当前进化代数+1,如果进化代数超过最大进化代数或Best达到规定的误差要求,算法结束;否则返回步骤3

染色体编码方式:二进制编码

二进制编码方法产生的染色体是一个二进制符号序列。假设问题定义的有效解取值空间为[Umin,Umax] D ^D D,其中D是有效解的变量维数,使用L位二进制符号表示解的一维变量。其中Umin对应的实际取值为0000…0000,Umax对应的实际取值为1111…1111,XLXL-1…X2X1对应的实际取值是Umin+
( U m a x − U m i n ) ∑ j − 1 n X j 2 j − 1 / 2 L − 1 (U_{max}-U_{min})\sum_{j-1}^nX_j2^{j-1}/2^L-1 (UmaxUmin)j1nXj2j1/2L1

选择操作

种群的选择操作使用轮盘赌选择算法,先根据每个染色体的适应值得到种群中所有染色体的适应值总和,并分别计算每个染色体的适应值与群体适应值总和的比。每转动一次轮盘,轮盘停止时指针停留的区域对应的染色体即被选中进入种群。

杂交操作

在交配阶段,每个染色体能否进行交配由交配概率pc决定,其具体过程为:对于每个染色体,如果随机值小于pc,则表示可进行交配,否者染色体不进行交配直接复制到新种群中。

变异操作

染色体的变异作用于基因之上,与杂交类似,对于染色体中的每一位基因,能够变异的概率取决于变异概率pm,如果随机值小于pm,则改变基因,否则保持不变。

三、分析不同的评估函数

1.Rastrigin评估函数Rastrigin函数

function y = Rastrigin(x)
% Rastrigin函数
% 输入x,给出相应的y值,在x = ( 0 , 0 ,, 0 )处有全局极小点0.
[row,col] = size(x);
if  row > 1 
    error( ' 输入的参数错误 ' 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值