博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些算法的了解
阅读量:5361 次
发布时间:2019-06-15

本文共 1857 字,大约阅读时间需要 6 分钟。

启发式算法(heuristic algorithm)是相对于算法提出的。一个问题的最优算法求得该问题每个实例的。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个,该可行解与最优解的偏离程度一般不能被预计。现阶段,启发式算法以仿自然体算法为主,主要有、、等。 

蚁群算法:将蚁群算法应用于解决优化问题的基本思路为:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的。路径较短的蚂蚁释放的信息素量较多,随着时间的推进,较短的路径上累积的信息素浓度逐渐增高,选择该路径的蚂蚁个数也愈来愈多。最终,整个蚂蚁会在正反馈的作用下集中到最佳的路径上,此时对应的便是待优化问题的。 

模拟退火:是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的,模拟退火算法是解决问题的有效方法之一。模拟退火的原理也和金属退火的原理近似:将的理论套用到上,将搜寻空间内每一点想像成空气内的分子;的能量,就是它本身的动能;而搜寻空间内的每一点,也像空气分子一样带有“能量”,以表示该点对命题的合适程度。演算法先以搜寻空间内一个任意点作起始:每一步先选择一个“邻居”,然后再计算从现有位置到达“邻居”的。

模拟退火步骤:
第一步是由一个产生函数从当前解产生一个位于 的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的 结构,因而对冷却进度表的选取有一定的影响。
第二步是计算与新解所对应的 差。因为 差仅由变换部分产生,所以目标函数差的计算最好按增量计算。事实表明,对大多数应用而言,这是计算 差的最快方法。
第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是 准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′作为新的当前解S。
第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。
模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近 ,已在理论上被证明是一种以概率收敛于全局 的全局优化算法;模拟退火算法具有 。
 
粒子群算法:
PSO 算法属于进化算法的一种,和 算法相似,它也是从随机解出发,通过迭代寻找 ,它也是通过 来评价解的品质,但它比 规则更为简单,它没有遗传算法的“交叉”(Crossover) 和“变异”(Mutation) 操作,它通过追随当前搜索到的 来寻找全局最优。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。粒子群算法是一种并行算法
 
遗传算法:
遗传算法的 过程如下:
a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
b)个体评价:计算群体P(t)中各个个体的 。
c) :将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的 评估基础上的。
d)交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。
e) :将变异算子作用于群体。即是对群体中的个体串的某些 上的基因值作变动。群体P(t)经过选择、交叉、 之后得到下一代群体P(t+1)。
f)终止条件判断:若t=T,则以进化过程中所得到的具有最大 个体作为 输出,终止计算。
 
 
超启发式算法:
超启发式算法提供了某种高层策略(High-Level Strategy,HLS),通过操纵或管理一组低层启发式算法(Low-Level Heuristics, LLH),以获得新启发式算法。这些新启发式算法则被运用于求解各类NP-难解问题。
超启发式算法与启发式算法多视角对比
 
启发式算法
超启发式算法
处理对象
问题实例
问题实例
参数
可能有
可能有
搜索空间
由实例的解构成
由LLH串(启发式算法)构成
应用领域
广泛
有待拓展

 

转载于:https://www.cnblogs.com/lin-kid/p/10658954.html

你可能感兴趣的文章
win10下安装配置mysql-8.0.13--实战可用
查看>>
周记2018.8.27~9.2
查看>>
MySQL中 1305-FUNCTION liangshanhero2.getdate does not exit 问题解决
查看>>
Ctrl+Alt+Down/Up 按键冲突
查看>>
python序列化和json
查看>>
mongodb
查看>>
网格与无网格
查看>>
2018年3月份
查看>>
SSH-struts2的异常处理
查看>>
《30天自制操作系统》学习笔记--第14天
查看>>
LGPL协议的理解
查看>>
1、Python基础
查看>>
Unity The Tag Attribute Matching Rule
查看>>
试着理解下kvm
查看>>
WebService学习总结(二)--使用JDK开发WebService
查看>>
Tizen参考手机RD-210和RD-PQ
查看>>
竞价广告系统-位置拍卖理论
查看>>
策略模式 C#
查看>>
[模板]树状数组
查看>>
[HDU 6447][2018CCPC网络选拔赛 1010][YJJ's Salesman][离散化+线段树+DP]
查看>>