启发式算法(heuristic)
WHY:
1.有时候最优解是难以找到,甚至是无法找到的,此时我们希望去找一个逼近最优解的解。
2.有时非最优解也可接受。
WHAT:
我认为启发式算法称为「探索式算法」or「经验学习法」更加合适。
有一些不错的说法:
- 启发式一般又称人工智能算法或全局优化算法。
- 启发式算法是指具有自学习功能,可利用部分信息对计算产生推理的算法。
- …
ps:这部分可见:什么是启发式算法(heuristic algorithm)
朗文对heuristic的解释是:The use of experience and practical efforts to find answers to questions or to improve performance.
翻译过来就是:依赖于过去的经验来找到问题的解决方式或者提高表现。
维基百科词条heuristic,将其定义为基于经验的技巧(technique),用于解决问题、学习和探索。
我们可以将heuristic等同于经验工作法(rule of thumb)、有依据的猜测(educated guess, a guess beased on a certain amount of information, and therefore likely to be right)和常识**(由经验得来的判断力而非准确测量)**。
启发式算法(Heuristic Algorithm)定义(我赞同的):相对于最优化算法。启发式算法是基于直觉或已有经验的算法,能够在可接受的计算成本(计算时间、占用空间等)内去搜寻最好的解,但是不保证能够找到可行解或最优解,在多数情况下无法阐述所得解用最优解的近似程度。
其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案(指算法)。相对于一般的算法把各种可能性都一一进行尝试,最终能找到问题的答案,启发式算法(启发式方法)则是在有限的搜索空间内,大大减少尝试的数量,能迅速地达到问题的解决。但由于这种方法具有尝试错误的特点,所以也有失败的可能性。 —[[算法 x 模型]]
ps:像极了爱情有没有?你可以选择TA,但TA不保证任何事情。
为了更好地理解,下面举个例子。
驾驶汽车到朋友家,写成算法是这样的:沿167号高速公路往南行至Puyallup;从South Hill Mall出口出来后往山上开4.5英里; 在一个杂物店旁边的红绿灯路口右转,接着在第一个路口左转;从左边褐色大房子的车道进去,就是North Cedar路714号。
用启发式方法来描述则可能是这样:找出上一次我们寄给你的信,照着信上面的寄出地址开车到这个镇;到了之后你问一下我们的房子在哪里。 这里每个人都认识我们——肯定有人会很愿意帮助你的;如果你找不到人,那就找个公共电话亭给我们打电话,我们会出来接你。
启发式算法的发展历程
40年代:由于实际需要,人们已经提出了一些解决实际问题快速有效的启发式算法。
50年代:启发式算法的研究逐步繁荣起来。随后,人们将启发式算法的思想和人工智能领域中的各种有关问题的求解的收缩方法相结合,提出了许多启发式的搜索算法。其中贪婪算法和局部搜索等到人们的关注。
60年代: 随着人们对数学模型和优化算法的研究越来越重视,发现以前提出的启发式算法速度很快,但是解得质量不能保证。虽然对优化算法的研究取得了很大的进展,但是较大规模的问题仍然无能为力==(计算量还是太大)。td==
70年代:==计算复杂性理论的提出。NP完全理论告诉我们,许多实际问题不可能在合理的时间范围内找到全局最优解。发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,得到的解不能保证全局最优性。==由此必须引入新的搜索机制和策略,才能有效地解决这些困难问题,这就导致了超启发式算法(meta-heuristic algorithms)的产生。
Holland模拟地球上生物进化规律提出了遗传算法(Genetic Algorithm),它的与众不同的搜索机制引起了人们再次引发了人们研究启发式算法的兴趣,从而掀起了研究启发式算法的热潮。
80年代以后:模拟退火算法(Simulated Annealing Algorithm),人工神经网络(Artificial Neural Network),禁忌搜索(Tabu Search)相继出现。最近,演化算法(Evolutionary Algorithm), 蚁群算法(Ant Algorithms),拟人拟物算法,量子算法等又相继兴起,掀起了研究启发式算法的高潮。由于这些算法简单和有效,而且具有某种智能,因而成为科学计算和人类之间的桥梁。
hook:[[一些启发式算法的解释]]
超启发式算法
共同特点:从随机的可行初始解出发,才用迭代改进的策略,去逼近问题的最优解。— CNN
- 随机初始可行解;
- 给定一个评价函数(常常与目标函数值有关,比如loss function);
- 邻域,产生新的可行解;
- 选择和接受解得准则;
- 终止准则(比如自己定的epoch)
其中(4)集中反映了超启发式算法的克服局部最优的能力。
不足及待解决问题:
- 启发式算法目前缺乏统一、完整的理论体系。因此只能称为是一种技术。
- 由于NP理论,各种启发式算法都不可避免的遭遇到局部最优的问题。该如何平衡局部搜索与全局搜索,有效逃离局部最优解?
cm local minimum和global minimum - 各种启发式算法都有个自优点如何,如何完美结合。
- 启发式算法中的参数对算法的效果起着至关重要的作用,如何有效设置参数。
cm 比如CNN中的学习速率lr、batchsize、shuffle - 启发算法缺乏有效的迭代停止条件。
- 启发式算法收敛速度的研究等。
参考:启发式算法
启发式算法(heuristic)相关推荐
- 启发式与元启发式算法
启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间.计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般 ...
- 启发式算法与元启发式算法的区别
启发式算法 启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间.计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的 ...
- 启发式算法求解混合整数线性优化问题—— 生产计划安排和资源分配
问题描述和范围限定: 生产计划安排分为两种:静态和动态计划. 静态计划生成的时间距离实际生产时间较长,以假设所有预设条件都满足为前提,在给定优化目标下(比如最小延迟,最低库存金额,etc.)寻找最优计 ...
- matlab启发式算法
启发式算法 (Heuristic Algorithm) 是一种基于直观或经验的局部优化算法.. 启发式算法的定义: 人们常常把从大自然的运行规律或者面向具体问题的经验和规则中启发出来的方法称之为启发式 ...
- 启发式算法的简要总结
学生一枚,在网上学习的过程中发现CSDN.博客园.知乎上的一些文章被一些人抄来抄去,个人觉得很没意思:有些代码对初学者很不友好,因为门槛很高,例如,我本意是要学习某个库的接口函数A,结果搜到的代码给我 ...
- 启发式算法和元启发式算法
启发式算法(Heuristic Algorigthm): 是一种基于直观或经验构造的算法,在可接受的花费(指计算时间.计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度 ...
- 启发式算法 元启发式算法 超启发式算法 区别 是什么
启发式算法 (Heuristic Algorithms) 是基于直观或经验构造的算法,在可接受的花费 (指计算时间.占用空间等) 下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离 ...
- AI算法领域常用的39个术语(上)
2019-12-10 15:05:02 算法是人工智能(AI)核心领域之一. 本文整理了算法领域常用的39个术语,希望可以帮助大家更好地理解这门学科. 1. Attention 机制 Attentio ...
- 反向非归零编码_(宏)基因组编码基因预测
基因预测是指通过对组装的基因组序列进行分析,根据已知生物的基因结构知识或数据库序列来识别其所包含的基因等功能区域.编码基因预测,就是识别基因组序列上所包含的蛋白质编码区域(Coding sequenc ...
- 割平面法只能求解纯整数规划吗_离散规划 解法
有限离散规划 可列离散规划 枚举法 Hahaha 图搜索枚举 2color 树搜索枚举 深度优先 广度优先 最大最小 蒙特卡洛 分支定界 剪枝 (混合)整数线性规划 MILP 三维整数规划 MILP ...
最新文章
- 使用镀锌铁皮制作负阻器件
- 都是虚拟串口软件惹的祸
- 维护win10注册表
- SQL Server 2008 R2 数据库安装
- Bootstrap HTML编码语法规范
- [UIKit学习]00.关于前置知识(storyboard,UIViewController,类扩展,项目属性)
- ASP.NET 使用Session,避免用户F5刷新时重复提交(转)
- manacher最长回文序列c++
- 微软向学生征集Windows 8发行版建议
- python 随机选择数字
- 左程云 Java 笔记--图
- 图片压缩工具ImageOptim
- ppt压缩文件怎么压缩?
- python SMTP发送带图片的邮件时,报TypeError: Could not guess image MIME subtype错误的解决办法
- php后缀名隐藏,php怎样隐藏后缀名
- 快速搞懂Oracle 19c安全新特性 (二) Privilege Analysis(权限分析)
- 购买古筝琴弦常见10个问题
- python计算矩阵对角线之和_Python练习实例38 | 求3*3矩阵主对角线元素之和
- Platform机制
- 一名叫谙忆的程序员在2021年的具体安排《打工人的那些事》