启发式算法(Heuristic)概述

TODO待补充

一个启发式的例子。

驾驶汽车到达某人的家,写成算法是这样的:沿167 号高速公路往南行至Puyallup;从South Hill Mall 出口出来后往山上开 4.5 英里;在一个杂物店旁边的红绿灯路口右转,接着在第一个路口左转;从左边褐色大房子的车道进去,就是North Cedar 路714 号。

用启发式方法来描述则可能是这样:找出上一次我们寄给你的信,照着信上面的寄出地址开车到这个镇;到了之后你问一下我们的房子在哪里。 这里每个人都认识我们——肯定有人会很愿意帮助你的;如果你找不到人,那就找个公共电话亭给我们打电话,我们会出来接你。

物理符号系统

在研究某个系统的时侯,我们可以建立一个简单而容易理解的模型来定性地描述这个系统的性质。就像生物学中的细胞学说,一切生物都是由细胞组成的,但任何一种生物的细胞都有极其复杂的种类、形态和功能。但我们可以建立一个标准的细胞模型:细胞由细胞核、细胞质和细胞膜组成,细胞核中有遗传物质,细胞质中有各种行使不同功能的细胞器,细胞膜包在细胞质外面,负责细胞核环境的物质交换和信息交流。在此基础上研究各种细胞的形态结构和功能就都显得比较简单了。同样的道理,“智能”是个相当抽象的、让人有点无从下手的研究对象,物理符号系统就是一个用以描述智能的,(相对来说)简单而容易理解的模型。

1 启发式搜索

启发式搜索会造成这样的结果:找到的解虽然是令人满意的,却不是最优的;或者说,虽不是最优的却能令人满意。实际上在认知心理学研究中也表明,动物在进行决策的时候采取的也是启发式策略,尤其是在资源(时间、食物等)不充足的情况下。这样做出的决策往往不是最优的,不过至少是有效的。

西蒙的“有限理性”正是基于此点。传统经济学一直以完全理性为前提,由于行为人可以得到所有资讯,因此可以在多种方案中,选择能使效用最大化的一种方案;但是于现实状况中,人们所获得的资讯、知识与能力都是有限的,所能够考虑的方案也是有限的,未必能作出使得效用最大化的决策。因此,西蒙认为必须考虑人的基本生理限制,以及由此而引起的认知限制、动机限制及其相互影响的限制。西蒙所提出的理论是,将不完全的资讯以及处理资讯的费用,和一些非传统的决策者目标函数引入经济分析。

在经济学和博弈论里,参与者有时会被认为是完全理性(英语:Perfect rationality)的;亦即,他们总是会以效用极大化的方式行动,以及总是能够对任意复杂的过程进行推论。他们总是能够思考所有可能的结果,并且选择对他们来说明显是最好可能的方式行动。完全理性和超级理性不同之处在于,完全理性的人总是会遵行优势策略,即玩家从不会在决策时考虑其他玩家对他们的决定会如何回应。完全理性的人是完全的个人主义者。

AI的两个定性结构定律:

  1. 智能存在于物理符号系统中;
  2. 符号系统是通过生成潜在可能的解,并对其进行检验,也就是通过搜索的方式来解题的。

符号系统是许多模式和过程的集合体,过程能够产生、破坏或修正模式。模式能指称对象、过程或其他模式,当它们指称过程的时候,它们就能得到解释,完成被指称的过程。在我们所了解的符号系统中有两类意义最为重大,就是人类和计算机。

符号系统的智能体现在它能够从问题空间中抽取信息,并通过搜索来解决问题。启发式搜索就是一种这样的搜索策略,通过估价函数来决定下一步搜索的起始点和方向,以有效率的解决问题。

通过认知心理学对人类及动物认知过程的研究,提出了很多关于智能的假设。以这些假设为依据,人们开发了一堆各种各样的智能程序,能完成很多看起来 很复杂的任务,比如语义理解,定律发现等。但是每一种程序都有它的局限性。相信随着认知科学研究的不断深入,会有更多更牛的程序诞生。

2 启发式算法的发展

2.1 发展历史

启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,取得了巨大的成就。

40年代:由于实际需要,人们已经提出了一些解决实际问题快速有效的启发式算法。

50年代:启发式算法的研究逐步繁荣起来。随后,人们将启发式算法的思想和人工智能领域中的各种有关问题的求解的收缩方法相结合,提出了许多启发式的搜索算法[]。其中贪婪算法和局部搜索等到人们的关注。

60年代: 随着人们对数学模型和优化算法的研究越来越重视,发现以前提出的启发式算法速度很快,但是解得质量不能保证。虽然对优化算法的研究取得了很大的进展,但是较大规模的问题仍然无能为力(计算量还是太大)。

70年代:计算复杂性理论的提出。NP完全理论告诉我们,许多实际问题不可能在合理的时间范围内找到全局最优解。发现贪婪算法局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,得到的解不能保证全局最优性。由此必须引入新的搜索机制和策略,才能有效地解决这些困难问题,这就导致了**超启发式算法(meta-heuristic algorithms)**的产生。

Holland模拟地球上生物进化规律提出了遗传算法(Genetic Algorithm),它的与众不同的搜索机制引起了人们再次引发了人们研究启发式算法的兴趣,从而掀起了研究启发式算法的热潮。

80年代以后: 模拟退火算法(Simulated Annealing Algorithm)人工神经网络(Artificial Neural Network)禁忌搜索(Tabu Search)相继出现。最近,演化算法(Evolutionary Algorithm), 蚁群算法(Ant Algorithms), 拟人拟物算法,量子算法等油相继兴起,掀起了研究启发式算法的高潮。由于这些算法简单和有效,而且具有某种智能,因而成为科学计算和人类之间的桥梁。

优胜劣汰是大自然的普遍规律,它主要通过选择和变异来实现。选择是优化的基本思想,变异(多样化)是随机搜索或非确定搜索的基本思想。“优胜劣汰”是算法搜索的核心,根据“优胜劣汰”策略的不同,可以获得不同的超启发式算法。超启发式算法的主要思想来自于人类经过长期对物理、生物、社会的自然现象仔细的观察和实践,以及对这些自然现象的深刻理解,逐步向大自然学习,模仿其中的自然现象的运行机制而得到的。

进化算法:是借鉴生物界自然选择和自然遗产机制的随机搜索算法,包括:遗传算法(GA),遗传策略(GS),进化规划(EP),进化策略(ES)。进化算法的基本框架还是简单遗传算法所描述的框架,但在进化的方式上有较大的差异,选择、交叉、变异、种群控制等有很多变化。

模拟退火是模拟统计物理中固体物质的结晶过程。模拟退火来自冶金学的专有名詞退火。退火是将材料加热后再经特定速率冷却,目的是增大晶粒的体积,並且減少晶格中的缺陷。材料中的原子原来会停留在使内能有局部最小值的位置,加热使能量变大,原子会离开原来位置,而随机在其他位置中移动。退火冷却时速度较慢,使得原子有较多可能可以找到内能比原先更低的位置。

模拟退火的原理也和金属退火的原理近似:我们将热力学的理论套用到统计学上,将搜索空间内每一点想象成空气内的分子;分子的能量,就是它本身的动能;而搜索空间内的每一點,也像空气分子一样带有“能量”,以表示该点对命题的合適程度。算法先以搜索空间内一个任意点作起始:每一步先选择一个“邻居”,然后再计算从现有位置到达“邻居”的概率。在退火的过程中,如果搜索到好的解接受;否则,以一定的概率接受不好的解(即实现多样化或变异的思想),达到跳出局部最优解得目的。

神经网络:模拟大脑神经处理的过程,通过各个神经元的竞争和协作,实现选择和变异的过程。

禁忌搜索:模拟人的经验,通过禁忌表记忆最近搜索过程中的历史信息,禁忌某些解,以避免走回头路,达到跳出局部最优解的目的。

蚂蚁算法:模拟蚂蚁的行为,拟人拟物,向蚂蚁的协作方式学习。

2.2 总结

这几种超启发式算法都有一个共同的特点:从随机的可行初始解出发,才用迭代改进的策略,去逼近问题的最优解。他们的基本要素:

  1. 随机初始可行解;

  2. 给定一个评价函数(常常与目标函数值有关);

  3. 邻域,产生新的可行解;

  4. 选择和接受解得准则;

  5. 终止准则。

其中 (4) 集中反映了超启发式算法的克服局部最优的能力。

虽然人们研究对启发式算法的研究将近50年,但它还有很多不足

  1. 启发式算法目前缺乏统一、完整的理论体系。

  2. 由于NP理论,各种启发式算法都不可避免的遭遇到局部最优的问题,如何判断

  3. 各种启发式算法都有个自优点如何,完美结合。

  4. 启发式算法中的参数对算法的效果起着至关重要的作用,如何有效设置参数。

  5. 启发算法缺乏有效的迭代停止条件。

  6. 启发式算法收敛速度的研究等。

启发式算法(Heuristic)概述相关推荐

  1. 启发式与元启发式算法

    启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间.计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般 ...

  2. 启发式算法与元启发式算法的区别

    启发式算法 启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间.计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的 ...

  3. 启发式算法求解混合整数线性优化问题—— 生产计划安排和资源分配

    问题描述和范围限定: 生产计划安排分为两种:静态和动态计划. 静态计划生成的时间距离实际生产时间较长,以假设所有预设条件都满足为前提,在给定优化目标下(比如最小延迟,最低库存金额,etc.)寻找最优计 ...

  4. matlab启发式算法

    启发式算法 (Heuristic Algorithm) 是一种基于直观或经验的局部优化算法.. 启发式算法的定义: 人们常常把从大自然的运行规律或者面向具体问题的经验和规则中启发出来的方法称之为启发式 ...

  5. 启发式算法的简要总结

    学生一枚,在网上学习的过程中发现CSDN.博客园.知乎上的一些文章被一些人抄来抄去,个人觉得很没意思:有些代码对初学者很不友好,因为门槛很高,例如,我本意是要学习某个库的接口函数A,结果搜到的代码给我 ...

  6. 启发式算法和元启发式算法

    启发式算法(Heuristic Algorigthm): 是一种基于直观或经验构造的算法,在可接受的花费(指计算时间.计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度 ...

  7. 启发式算法 元启发式算法 超启发式算法 区别 是什么

    启发式算法 (Heuristic Algorithms) 是基于直观或经验构造的算法,在可接受的花费 (指计算时间.占用空间等) 下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离 ...

  8. 数学建模:模拟退火和遗传算法

    目录 启发式算法 (Heuristic Algorithm) 智能算法概述 模拟退火算法 遗传算法 启发式算法 (Heuristic Algorithm) 启发式算法 (Heuristic Algor ...

  9. AI算法领域常用的39个术语(上)

    2019-12-10 15:05:02 算法是人工智能(AI)核心领域之一. 本文整理了算法领域常用的39个术语,希望可以帮助大家更好地理解这门学科. 1. Attention 机制 Attentio ...

  10. 反向非归零编码_(宏)基因组编码基因预测

    基因预测是指通过对组装的基因组序列进行分析,根据已知生物的基因结构知识或数据库序列来识别其所包含的基因等功能区域.编码基因预测,就是识别基因组序列上所包含的蛋白质编码区域(Coding sequenc ...

最新文章

  1. 如何使用工具包 (NLTK) 开发NLP 项目?(附教程)
  2. java 发送邮件_老板要实现SpringBoot发送邮件?大神发了这篇文章后,今晚准点下班...
  3. Google Play应用描述格式
  4. 全局变量用常量初始化----C和C++的不同
  5. MongoDB数据库基本操作笔记
  6. 【emWin】例程六:设置颜色
  7. Go语言开发设置代理Goproxy,提高Go安装模块速度
  8. python的装饰器很有用吗_你真的了解python装饰器么
  9. DirectDraw 学习:
  10. python3 numpy教程_Python Numpy 教程
  11. 取消参考文献自动编号_毕业论文给尾注加[ ]及删除自动编号
  12. 网页嵌入谷歌翻译js插件
  13. 如何高效读懂一本书(附10种读书方法)
  14. Qt5.9.6 vs2015 SQlite 数据库增删改查
  15. [精彩泄漏截图] 2006最值得期待的游戏
  16. SSH整合,非常详细的SSH整合
  17. 节日EDM系列:圣诞节如何进行EDM数据营销
  18. Every-SG游戏
  19. Avro RPC的两种实现方法:静态实现和动态实现
  20. Swift MonkeyKing分享工具

热门文章

  1. 以太坊分片Sharding FAQ
  2. 计算机重装后如何连接无线网络,电脑重装系统后无线网络连接不上怎么办
  3. MySQL服务器的超级管理员名称是_mysql服务器忘记了超级管理员root密码
  4. 开启nexus出现If you insist running as root, then set the environment variable RUN_AS_USER=root
  5. apple tv 开发_如何将蓝牙耳机连接到Apple TV
  6. Java学习笔记 第一天
  7. 微信公众平台开发问答
  8. FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDA
  9. Drupal7 数据库查询
  10. Win10家庭版将中文用户名修改为英文用户名