启发式算法

一、什么是启发式算法

相对于最优化算法提出的,一个问题的最优算法求得该问题每个实例的最优解

启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计

一般用于解决NP-hard问题,其中NP是指非确定性多项式

常用的算法有:模拟退火算法(SA)、遗传算法(GA)、蚁群算法(ACO)、人工神经网络(ANN)

对于NP Hard问题,可行时间内在各空间中找到全局最优解的可能性很小,需要使用近似算法(Approximate Method)在有限时间内寻找一个近似最优解

近似方法分成:近似算法 和 启发式算法 近似算法,可以得到一个有质量保证的解,而启发式算法可以在可行时间内找到一个相对比较好的解,但对解的质量没有保证

二、遗传算法

通过模拟自然进化过程(达尔文生物进化论)搜索最优解的方法,

遗传操作包括:选择、交叉和变异

算法核心:参数编码、初始群体的设定、适应度函数、遗传操作设计、控制参数设定 以一种群体中的所有个体为对象,利用随机化技术指导对一个被编码的参数空间进行高效搜索

遗传算法特点: 直接对结构对象进行操作,不存在求导和函数连续性的限定 具有内在的隐并行性和更好的全局寻优能力 采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向

三、开发步骤

遗传算法: 在既定的区间内找出函数的最大值 相当于袋鼠蹦跳的过程,需要设计一种编码方式,二进制编码法1110001010111

Step1,随机初始化一个种群,即第一批袋鼠 、

Step2,通过解码过程,得到袋鼠的位置,用适应性函数对每一个基因个体作评估(适应度越高越好)

Step3,用选择函数按照某个规则择优选择(每隔一段时间,kill适应度差的袋鼠,保证总体数目持平)

Step4,让个体基因变异,产生子代

 

 

三、核心概念

染色体交叉(crossover): 两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体 单点交叉

对应的二进制交换

两点交叉与多点交叉

均匀交叉

算术交叉

基因突变(Mutation): 基本位变异,对个体编码串中以变异概率、随机指定的某一位或某几位仅因座上的值做变异运算。 101101001011001 101101011011000

均匀变异,用符合某一范围内均匀分布的随机数,以某一较小的概率替换个体编码串中各个基因位上的原有基因值

边界变异,随机的取基因座上的两个对应边界基因值之一去替代原有基因值 非均匀变异:对原有的基因值做一随机扰动,以扰动后的结果作为变异后的新基因值

高斯近似变异:进行变异操作时用符号均值为P的平均值,方差为P平方的正态分布的一个随机数来替换原有的基因值

四、遗传算法与神经网络:

遗传算法是一种最优化的算法,可以参与网络参数的学习,网络结构的设计等

网络参数学习: 假设神经网络有100个随机权重集合,评估对应每个权重集合的神经网络。

基于评估,只保留最佳的20个权重集合,然后从这20个集合中进行随机选择,取代剩余的80个权重集合(应用简单的交叉和突变)

网络结构学习: 增强拓扑神经演化(Neuroevolution of Augmenting Topologies,NEAT)是一种基于遗传算法演化新型神经网络的方法

http://www.cs.ucf.edu/~kstanley/neat.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值