遗传算法(GA)

算法背景

遗传算法(Genetic Algorithm, GA)是模拟生物在自然环境中的遗传和进化的过程而形成的自适应

全局优化搜索算法。遗传算法借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种并行、

高效、全局搜索的方法,它能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制

搜索过程以求得最优解。遗传算法操作使用"适者生存”的原则,在潜在的解决方案种群中逐次产生

一个近似最优的方案。在遗传算法的每一代中,根据个体在问题域中的适应度值和从自然遗传学中

借鉴来的再造方法进行个体选择,产生一个新的近似解。这个过程导致种群中个体的进化,得到的

新个体比原个体更能适应环境,就像自然界中的改造一样。

基本原理

对每个个体进行进化,然后择优录取

编码

将问题的可行解,抽象编码为适用于遗传算法的形式

二进制编码:将数值转换为二进制串,用以求解问题

用一个二进制串表示十进制数值

给定数值解区间范围[1,10]

给定精度:1e-5,两个数值之间的间隔

进行编码:为每个数值解分配一个独一无二的二进制串,串所能表示的数值的个数大于等于解

的个数

一个长度n的串,表示2^{n}

区间范围为【1,10】长度2串提供精度\frac{10-1}{2^{n}-1}=3

数值区间长度L,精度E条件下,二进制串长度n,三者关系\frac{L}{2^{n}-1}\leqslant E

解码

二进制串的索引,当前串是第几个串,可以使用二进制转十进制得到

【1,0】为例,转化为十进制2,找对应数值1+2*3=7

一般,区间范围为【a,b】,区间长度L,L=b-a,串长n,当前串十进制T,对应实值解X=a+T*\frac{b-a}{2^{n}-1}

个体进行复制,以概率进行基因的交叉,复制交叉方式多种多样

复制

将个体适应度大小映射为概率进行复制:适应度高的个体有更大概率复制,且复制的份数越多轮盘赌法。
对适应度高的前N/4的个体进行复制,然后用这些个体把后N/4个体替换掉-精英产生精英。
一定是将当前个体的复制体将下一一个个体替换掉吗?随机可以吗? YES!
一 定只能把"坏解”替换掉吗?把随机某个适应度高5的解替换掉呢? YES!

交叉
按顺序,两两个体之间按概率交叉。如1和2,2和3等。或者1和2,2和4等,或者1和4这样。
必须两两交叉? 3个可以吗? YES!。 5个? YES!
对适应度高的前N/2个体、 甚至N/4的个体之间相互交叉? YES!
一定是按顺序交叉吗?对每个个体随机从前N/2中选一一个个体交叉? YES!
一定是只有一段交叉?多段呢? YES! 

变异

每个个体都进行变异。
只对适应度低的后N/4的,或者后N/2个个体变异? YES!
必须都变异吗?按适应度大小映射为概率变异? YES!
一 定是只有一个位点变异?多个位点呢? YES!

算法实现

复制:按适应度大小映射为概率,进行轮盘赌复制

交叉:1和2,3和4,以一定概率决定是否交叉,若交叉,则二者随机一个段进行交叉

变异:按照一定概率决定改个体是否变异,若变异,随机选择一个点进行变异,按位取反

轮盘赌基本思想:适应度越高的解,按道理越应该高概率的进行复制,且复制的份数应该越多

随机数落到不同区域,进行复制:如rand=0-0.2,则对X1复制,缺点需要一直进行比较,划分n个区域可能就需要n个判断

再具体实现时 ,先将小于0.2的都进行判断,再出现随机数只需要判断一端

优点

1)参数少,理论优势

2)变异机制赋予群体跳出局部极值的能力

缺点

容易陷入局部最优,算法实现较繁琐

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值