遗传算法总结

遗传算法总结

遗传算法是一种最优化算法,或者说遗传算法可以应用于求解搜索问题或者最优化问题。百度对遗传算法的定义为:遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法遗传算法在工业界有着比较广泛的应用。我也是实习的时候才真正用到遗传算法,下面是我的一些总结。

1:传统优化算法

遗传算法可以用于求解最优化问题,那么和传统的优化算法相比,遗传算法有什么不一样呢?https://blog.csdn.net/m0_37622530/article/details/81951597比较详细的介绍了一些最优化算法。

传统的最优化算法可以分为calculus-methods(精确计算方法):

1:对于一些无约束的最优化问题,可以直接根据求偏导等于0,然后求得最优点的坐标,但是这类算法只能对于凸函数和凹函数能够得到全局最优解。

2:对于带有约束的最优化问题,如果只有等值约束的话,使用拉格朗日乘子法可以求解,拉格朗日乘子法可以查看https://www.jiqizhixin.com/articles/2019-02-12-10,对于一般的约束(既有等值约束,也有不等式约束)的问题,使用拉格朗日乘子法以及KKT条件可以求解。例如SVM就是使用KKT条件加上拉格朗日乘子法使用对偶优化方法进行求解的。

上面的最优化算法属于calculus-methods(精确计算方法),除此之外,该方法还有一种enumerative scheme(迭代形式),比如说最速下降算法(梯度下降算法),牛顿法,共轭梯度法,动态规划等等。其中梯度下降算法衍生出了很多变种,如Adagrad,Adam,Momentum等等,都是为了解决陷入局部最优问题而产生的改进。

2:随机优化算法

传统算法有着很多限制,比如说都需要求偏导,连续(还有可能陷入局部最优的问题),因此不是很鲁棒(robust)。随机优化算法不需要这些限制(连续可求导),缺点就是找到的是一个近似的最优解。

随机优化算法包含simulated anealing(模拟退火算法),详情查看https://blog.csdn.net/google19890102/article/details/45395257,模拟退火算法的算法流程图如下:

模拟退火算法通过随机接受不产生下降的解的形式,有可能跳出局部最优解到达全局最优。

除了模拟退火算法外,遗传算法也在算法中使用随机的方法,如交叉,变异,继承等操作。遗传算法的一个应用实例可以查看https://blog.csdn.net/saltriver/article/details/63679701,具体就是求解一个简单的函数在给定区间的最大值: 

求解上面函数在[-10,10]之间的最大值,实际上,上面的函数可以使用数值计算的方法进行求解,因为该函数是连续可微的,求得函数的增区间,就能求[-10,10]的最大值。

如果使用遗传算法求解这个问题的话,最重要的一步就是如何code我们需要求解的值x,为什么需要对x进行编码,因为我们在遗传,变异,交叉的时候,是对编码进行操作,如果x=2如何进行这些操作?因此我们需要对x进行编码,例如,如果我们假设x精确度为小数点后面4位的话,那么1可以分成10000个数,-10到10之间存在20个数,因此我们需要20*10000种编码,也就是200000,如果我们使用二进制(0,1)编码的话,我们需要18位进行编码,因此2的18次方是262144,而2的17次方是131072,因此只有使用18位才能最小编码200000个数。https://www.jianshu.com/p/971c5f76f88e里面包含一个例子。

上面是遗传算法最简单的例子,遗传算法包含很多有意思的应用,如罗比清扫机器人https://blog.csdn.net/lynn0085/article/details/79016012,可以看到,进化很多代之后,罗比机器人对于任意出现的垃圾,都能很好的清理。

除此之外,遗传算法还可以对图像进行拟合,如https://songshuhui.net/archives/10462,得到的结果大概如下:

其中,每个个体就是一系列三角形的组合,每个三角形又包含位置,颜色,透明度等等属性,最后使用MSE(mean square error)用组成的图像和原始图像进行对比,使用mse衡量fitness ,最后得到的结果已经非常相像。

遗传算法除了这些应用外,在工业界也有很多应用,比如说论文"sapienz: multi-objective automated testing for android applications"使用GA(遗传算法)解决多目标(code coverage,sequence length,crash)优化问题,facebook现在使用的自动测试系统就是基于Sapienz开发的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值