基于规则的启发式算法

2024-06-17

基于规则的启发式算法(精选8篇)

篇1:基于规则的启发式算法

一种基于启发式算法的等高线局部内插方法

在基于启发式内插等高线算法的`基础上提出了一种局部内插方法.首先利用Douglas-Peucker算法提取等高线的特征点,根据特征点判断等高线之间的相似性程度,找出导致等高线出现异常的特征点;然后将相似性程度很低的两条等高线自动分解为若干简单等高线再进行内插.有效地解决了局部弯曲很大、马鞍型地貌等复杂等高线的内插问题.算法已经在以Microstation为平台的数字制图系统中实现并逐渐实用化.

作 者:安晓亚 孙群 肖强 赵国成 AN Xiao-ya SUN Qun XIAO Qiang ZHAO Guo-cheng 作者单位:信息工程大学,测绘学院,河南,郑州,450052刊 名:测绘科学技术学报 PKU英文刊名:JOURNAL OF GEOMATICS SCIENCE AND TECHNOLOGY年,卷(期):25(1)分类号:P208关键词:先验知识 等高线 局部内插 自动分解

篇2:基于规则的启发式算法

本文基于可辨识矩阵和信息熵理论,提出了震害预测影响因子的启发式属性约简算法,并通过实例验证了方法的有效性和可行性.算例表明,该法可在不影响震害预测结果的前提下,使得由建筑物及其属性构成的二维决策系统的信息量大为简化,从而大大降低了震害预测前期数据采集和后期数据处理的工作量.本文所做的工作,对进行抗震防灾并制定相应的规划具有较好的.参考和借鉴价值.同时,在理论上为从事震害预测方面的研究提供了一条新的思路.

作 者:乔亚玲 李莉华 闫维明 何浩祥 Qiao Ya-ling Li Li-hua Yan Wei-ming He Hao-xiang 作者单位:乔亚玲,Qiao Ya-ling(中冶集团建筑研究总院,北京,100088)

李莉华,Li Li-hua(华北水利水电学院,河南,郑州,450001)

闫维明,何浩祥,Yan Wei-ming,He Hao-xiang(北京工业大学工程抗震与结构诊治北京市重点实验室,北京,100022)

篇3:基于规则的启发式算法

在互联网上, 用户一般通过浏览网页和传统的基于关键词的检索去获取信息, 这种获取信息的方法具有很大的主观性, 同时也有很大的局限性。有些研究希望通过数据库技术来解决这些局限性, 但数据库只能存储结构化的信息, 而大多数的网页是非结构化的, 不能用传统的查询语句查询。

本文通过对5种启发式规则来发现多个记录边界候选分隔符, 然后根据斯坦福确定理论选出一个概率最高的候选分隔符作为记录分割符。实验证明, 应用这种方法发现记录分隔符能够达到很好的准确性。

1 基于启发式规则的记录分隔符发现方法

1.1 定位记录集, 找出候选分割符

记录分隔符一定是出现在记录与记录之间, 在网页中记录集出现的地方查找分隔符, 能够大大减少该方法的时间复杂性和空间复杂性, 同时也能提高准确性, 因此我们要定位出一个页面中记录集的位置。

将Web文档转换成一棵DOM树, 称为标记树T, 然后在T中定位出包含用户感兴趣的记录集的子树。这里假设T的最大扇出子树就是包含记录集的子树, 不考虑那些不满足该假设的Web文档。在图1中, 根节点为td的子树是最大扇出子树, 则子树td即为包含记录集的子树, 找到最大扇出子树后, 统计出最大扇出子树根节点第一层子节点中标记的出现次数, 根据其出现次数将标记分为无关标记和候选分隔符。无关标记就是标记出现频率较低的标记。根据实验, 认为出现次数小于最大扇出子树中标记数量10%的标记为无关标记, 其它的标记则为记录分隔符的候选分隔符。

如果最大扇出子树中只有一个候选分隔符, 则认为该标记就是记录分隔符。否则采用以下的5种启发式规则确定哪个是正确的记录分隔符。

1.2 五种启发式规则

规则1:HT (Highest-Count Tags) , 即将最大扇出子树中的候选分割符根据其出现次数逆序排列, 构成一个有序标记列表。

规则2:IT (Identifiable Separator Tags) , 通过观察发现不管是自动生成的还是人工手写的Web文档, 对于多记录的页面, 往往分隔记录的标记都是常用的几个。分析两个不同的领域, 发现标记列表对候选分隔符中出现的常用分隔符进行简单排序, 对于没有在以上标记列表中出现的标记则忽略不计。

规则3:SD (Standard Deviation) , 计算每个候选分隔符之间的距离, 即两个标记之间包含的字符的数量。

规则4:RP (Repeating-Tag Pattern) , 通过观察我们发现记录边界往往有统一的标记模式, 由两个或者更多的相邻标记组成。在一个页面中, 有些标记始终出现记录分隔符的前面或者后面。

如果标记对在记录边界中出现且标记是记录分隔符, 那么标记对在最大扇出子树出现的次数和标记在最大扇出子树中出现的次数应该是大致相同的。

规则5:OM (Ontology-Matching) , 在一个记录中通常会有一个或者多个属性会出现一次且只出现一次, 称这种字段为记录识别属性。对于这些属性, 如果能够定位它的值或者能够知道它有值存在, 那么就能够知道它出现了多少次。

1.3 五种启发式规则结果的整合

以上介绍的5种启发式规则是相互独立的, 每种启发式规则只对部分类型的网页起作用。因此需要将这5个相互独立的启发式规则结合起来, 从而增大从Web文档中找到正确的记录分隔符的几率。为了能够确定5种启发式规则的最好结合, 采用斯坦福确定理论给出一个可信度因子来帮助我们做出结论。

选取房产、书籍和求职3个不同应用领域, 每个领域选取了5个网站, 每个网站选取了5个页面, 一共75个页面进行试验。试验结果如表1所示:

试验证明虽然5种启发式规则各自的准确性不是很好, 但将五种启发式规则结合起来时,

我们就能够很好地找到多记录页面中的记录分隔符。

1.4 记录分隔符发现算法描述

记录分隔符算法可以描述如下:

输入:一个Web文档D

输出:一个D的记录分隔符

(1) 利用标记树生成算法得到D所对应的标记树T; (2) 计算T中每个节点的孩子节点, 从而找到T中的最大扇出子树HF; (3) 从HF中得到一个候选分隔符集CT; (4) 针对CT分别应用5个独立的启发式规则OM, SD, IT, HT和RP, 得到5个新的候选标记排序列表; (5) 对于候选分隔符集CT中的每个分隔符c, 采用5个启发式规则 (ORSIH) , 得到5个结果, 运用斯坦福可信度理论验证结果; (6) 选择步骤5中复合可信度因子最高的候选分隔符作为文档D的记录分隔符

2 结束语

Web上的数据抽取技术是目前研究的热点方向, 虽然国内外的研究在一些技术上较为成熟和完善, 但仍没有一个产品或系统能完全符合人们对信息抽取的要求。随着新技术和新思想的介入, 信息抽取技术处于不断的更新和发展中。本文提出的基于启发式规则的记录分隔符发现方法能够较好地解决分割多记录Web文档中每一条记录的问题。试验证明, 该方法具有很好的通用性和准确性, 下一步工作将本体的相关知识结合进来, 进一步提高Web本体信息抽取的准确性。

参考文献

[1]于满泉, 陈铁睿, 许洪波.基于分块的网页信息解析器的研究与设计[J].计算机应用, 2005 (4) .

[2]王放, 顾宁, 吴国文.基于本体的Web表格信息抽取[J].小型微型计算机系统, 2003 (12) .

篇4:基于规则的启发式算法

【关键词】路径优化;C-W节约启发式算法

一、引言

物流作为“第三利润的源泉”,一直是企业和社会关注的热点问题。物流配送是物流活动的重要环节,降低配送成本,提高客户服务水平,对于促进企业物流的发展具有重要的意义。物流配送运输调度即是在满足客户需求的条件下,为客户配送合理的数量,派遣最少的车辆数量并为配送车辆指派运输时间和运输费用最省的路线,即车辆路径优化问题。

二、数据获取

配送中心有3辆载重为350kg的车,车辆行驶的固定费用为305元;单位里程运输费用为1元。

各客户需求量:苏果超市汉中门大街店:33迈皋桥苏果平价店 55;苏果超市集庆路店 41;苏果奥体庐山路购物中心 33;华润苏果文靖路平价店 48;苏果超市银都店38;苏果超市银都店46;苏果超市瞻园路店 35;苏果超市(和燕路店)53;苏果社区超市(月苑社区店) 45;苏果社区超市尧林仙居店 61;苏果超市大方巷店 33;苏果锁金东路社区店 56 ;苏果超市(马标店) 36;苏果超市(后宰门店) 29

三、数学模型

公式(3-2)说明配送车辆数不能超出所拥有的车辆数;公式(3-3)该配送车辆的运量不能超过最大载重量;;公式(3-4)每个点有且只有一辆车来进行配送;公式(3-5)若点i由车辆k送货,则车辆k送完该点的货后必到达另一点j;公式(3-6)若点j由车辆k送货,则车辆k必由某点i到达点j。

四、问题求解

1.算法步骤

连接原点和其他各点,得到15条线路;根据配送中心与各客户点的距离计算节约值s(i,j);将所有s(i,j)按其值由大到小排列;按顺序逐个考察端点i和j,若满足:点i和点j不在一条线路上;点i和点j均与基点相邻,则插入线路中。

2.节约值及结果

求解结果得到两条路径分别是:路线一:0-13-11-10-2-9-12-1-0,长度57.1km;路线二:0-4-7-3-8-14-6-15-5-0,长度62.8km。该配送中心需要2辆载重为350kg的车辆进行配送,日总费用为729.9元。

五、总结

本文对于物流配送路径优化问题进行了描述,建立了VRP车辆路径问题数学模型,并采用C-W节约算法设计某配送中心的配送路径。C -W 节约算法求解速度快、通用性强、限制条件易于加入,优先考虑一些配送中心较远的需求点是一种相当实用的启发式算法。

参考文献:

[1]黄震,罗中良,黄时慰.一种带时间窗车辆路径问题的混合蚁群算法[J]. 中山大学学报(自然科学版),2015,01:41-46.

篇5:数学建模中用到的启发式算法

2.一个问题可能有确定解, 但是求解过程中的计算机代价令人难以接受。在很多问题(如国际象棋)中, 状态空间的增长特别快, 可能的状态数随着搜索的深度呈指数级增长、分解。在这种情况下, 穷尽式搜索策略, 诸如深度优先或广度优先搜索,在一个给定的较实际的时空内很可能得不到最终的解。启发式策略通过指导搜索向最有希望的方向前进降低了复杂性。通过仔细考虑, 删除某些状态及其延伸, 启发式算法可以消除组合爆炸, 并得到令人能接受的解。

然而, 和发明创造的所有规则一样, 启发式策略也是极易出错的。在解决问题过程中启发仅仅是下一步将要采取措施的一个猜想。它常常根据经验和直觉来判断。由于启发式搜索只有有限的信息,诸如当前Open表中状态的描述,要想预测进一步搜索过程中状态空间的具体的行为很难办到。一个启发式搜索可能得到一个次最佳解, 也可能一无所获。这是启发式搜索固有的局限性。这种局限性不可能由所谓更好的 启发式策略或更有效的搜索算法来消除。

启发式策略及算法设计一直是人工智能的核心问题。博奕和定理证明是两个最古老的应用: 二者都需要启发式知识来剪枝以减少状态空间。显然, 检查数学领域中每一步推理或棋盘上每一步可能的移动是不可行的。启发式搜索常常仅是实践中的解答。

近来, 专家系统的研究把启发式策略作为问题求解的一个重要部分。当一个专家解决问题时, 他检查所获取的信息并作出决定。实际上, 专家用来解决问题的“拇指法则”很大程度上是启发式的。这些启发性知识被专家系统的设计者提取出来并形成规则。

通常启发式算法由两部分组成: 启发方法和使用该方法搜索状态空间的算法。本章先介绍最好优先搜索的算法, 再讨论启发式算法的设计和评估。

在一字棋游戏中(图4.5), 穷尽搜索的组合数很大。第一步移动共有九种移法 , 每一种又有八种对应走法……依次类推, 这个问题在穷尽搜索策略下需考虑9!个状态。

根据对称性可以减少搜索空间的数目。棋盘上很多构造是等价的。譬如, 第一步实际上只有三种移法, 角、边的中央以及网络正中。在状态空间的第二层上, 由对称性可进一步减少到12×7!种。在图5.1 中可见到该状态空间比最初的状态空间要小, 但它在扩展过程中还要继续分解。

然而, 一个简单的启发式策略几乎可以整个地消除复杂的搜索过程。首先, 将棋子移到棋盘上×有最多的赢线的点。最初的三种状态显示在图5.2中。若两种状态有相等的赢的机率, 取其中的第一个。这样的话,可设计一种算法(完全实现启发式搜索), 它选择并移到具有最高启发值的状态。在这种情况下, ×占椐网络的中间点, 其它的各种状态都不再考虑, 它们的延伸状态同时也给消除了。如图5.3 所示三分之二的状态空间就这样给剪枝了。

第一步走完后, 对方只能有两种走法(见图5.3)。无论选择哪种走法,我方均可以通过启发式搜索选择下一步可能的走法。在搜索过程中, 每一步只需估价一下单个节点的子结点;不需要强力搜索。图5.3 显示了游戏前三步简化了的搜索过程。每种状态都标记了它的启发值。

要精确地计算待检查的状态的数目比较难, 但可以大致计算它的上限。一盘棋最多走九步, 每步的下一步平均有四、五种走法。这样大约就是4.5×9,近40种状态, 比9!改善了很多。

5.1 启发信息和估计函数

人工智能的核心课题是问题求解。所谓“问题求解”就是在广义图中寻找一条从初始状态出发, 到达目标状态的解树。例如旅行问题是解决从出发点到达目的地的路线和工具问题;机器人装配机器, 就是给出把一堆零件变成一台机器的一系列操作;定理证明就是寻找一条从前提条件到达结论的通路等等。

在实际解决一个具体问题时, 人们常常把一个具有复杂联系的实际问题抽象化,保留某些主要因素, 忽略掉大量次要因素, 从而将这个实际问题转化成具有明确结构的有限状态空间问题, 这个空间中的状态和变化规律都是已知的有限集合, 因此可以找到一个求解该问题的算法。

然而, 在智能活动中使用最多的不是具有完备性的算法, 而是不一定完备的启发式方法。其原因有二: 首先, 大多数情况下, 智能系统不知道与实际问题有关的全部信息, 因而无法知道该问题的全部状态空间, 不可能用一套算法来求解其中的所有问题, 这样就只能依靠部分状态空间和一些特殊的经验性规则来求解其中的部分问题。

其次, 有些问题在理论上存在求解算法, 但是在工程实践中, 这些算法不是效率太低, 就是根本无法实现, 为了提高解题的效率, 不得不放弃使用这些算法, 而求助于一些经验性的启发式规则。

例如在博弈问题中, 计算机为了保证最后胜利, 可以将所有可能的走法都试一遍, 然后选择最佳走步。这样的算法是可以找到的, 但计算所需的时空代价十分惊人。就可能有的棋局数讲, 一字棋是9!=3.6×105, 西洋跳棋是1078, 国际象棋是10120, 围棋是10761。假设每步可能选择一种棋局, 用极限并行速度(10-104年/步)计算, 国际象棋的算法也得1016年即1亿亿年才可以算完, 而我们已知的宇宙史才 100亿年!由此看来, 启发式的问题求解, 不仅在实践上是需要的, 而且在理论上也是必不可少的。

对问题空间进行搜索时, 提高搜索效率需要有和被解问题的解有关的大量控制性知识作为搜索的辅助性策略。有两种极端的情况: 一种是没有任何这种控制性知识作为搜索的依据, 因而搜索的每一步完全是随意的, 如随机搜索;另一种是有充分控制性知识作为依据, 因而搜索的每步选择都是正确的, 这种搜索叫最佳搜索。一般情况是介于二者之间, 这些控制性信息反映在估价函数之中。

估价函数的任务就是估计待搜索结点的重要程度, 给它们排定次序。估价函数f(x)可以是任意一种函数, 如有的定义它是结点x处于最佳路径上的概率, 或是x结点和目标结点之间的距离, 或是x格局的得分等等。一般来说, 估价一个结点的价值, 必须综合考虑两方面的因素: 已经付出的代价和将要付出的代价。在此, 我们把估价函数f(n)定义为从初始结点经过n 结点到达目标结点的最小代价路径的代价估计值, 它的一般形式是: f(n)=g(n)+h(n)其中g(n)是从初始结点到n的实际代价, h(n)是从n到目标结点的最佳路径的估计代价, 主要是h(n)体现了搜索的启发信息。因为实际代价g(n)可以根据生成的搜索树实际计算出来, 而估计代价h(n)却依赖于某种经验估计, 它来源于我们对问题的解的某些特性的认识, 这些特性可以帮助我们更快地找到问题的解。

一般地, 在f(n)中, g(n)的比重越大, 越倾向于广度优先搜索方式;h(n)的比重越大, 越倾向于深度优先搜索方式。

g(n)的作用一般是不可忽略的, 因为它代表了从初始结点经过n 到达目标结点的总代价估值中实际已付出的那一部分。保持g(n)项就保持了搜索的广度优先趋势, 这有利于搜索的完备性, 但影响搜索的效率。在特殊情况下, 如果只希望找到达到目标结点的路径而不关心已付出的代价, 则g(n)的作用可以忽略。另外, h(n)> >g(n)时, 也可以忽略g(n), 这时有f(n)=h(n), 这有利于搜索的效率, 但影响搜索的完备性。

给定一个问题后, 根据问题的特性和解的特性, 可以有多种方法定义估价函数, 用不同的估价函数指导搜索, 其效果可以相差很远。因此,必须尽可能选择最能体现问题特性的, 最佳的估价函数。

5.2 启发式搜索算法

5.2.1 局部择优搜索法(瞎子爬山法)实现启发式搜索最简单的方法是瞎子爬山法(hill climbing)。瞎子爬山法在搜索过程中扩展当前结点并估价它的子结点。最优的子结点被选择并进一步扩展;该子结点的兄弟结点和父结点都不再保留。当搜索达到一种状态, 该状态比它的所有子结点都要好, 则搜索停止。瞎子爬山法可以这样理解──一个盲人急切地想登上山顶, 他总是沿着最陡的山路向上爬, 直到再不能找到新的路径。瞎子爬山法有这样一个缺陷: 一个错误的启发知识可能导致搜索无法沿着正确的路径前进, 从而增加了搜索的深度, 甚至是无穷尽地搜索。由于瞎子爬山法不保存所走过的结点信息, 故瞎子爬山算法无法修正错误的路径。

瞎子爬山法还可能在一个局部的最佳点上停止。当搜索到一个结点, 它的估计代价比任一个子结点都要小, 则算法结束。如果此时并不是目标状态, 而只是一个局部最优结点, 则该算法就不能得到目标解。因此, 在一个限定的环境下, 瞎子爬山法可能会极大地提高搜索效率, 但是对于整个搜索空间, 就有可能无法得到最佳解。重排九宫游戏就是一个突出的例子。为了将一个特定的格局移到它的目标位置上, 常常需要移动已经在其目标位置上的将牌。这对于完成拼图是必要的, 但它显然暂时恶化了拼板上的状态。由于“更好”并不是“最好”, 瞎子爬山法无法区别局部和全局最优解。处理这个问题时有许多种方法, 譬如随时地修正估价函数来突破局部最优的限制。但是总的来说, 没有一种方法能保证瞎子爬山法的最佳效率。下面 介绍一个瞎子爬山法的例子──跳棋程序。

在人工智能中, Samuel的跳棋程序最早应用该方法。在跳棋程序中, 不仅运用了启发式搜索, 还实现了简单的学习功能。

跳棋程序中根据几个不同启发值的总和来估算棋局的状态: ∑aixii

其中xi是棋局的一系列特征, 如残局优势、残局棋子力量分布, 中心点位置的控制等。这些xi的系数由它在整个估值中所处的重要性来确定。也就是说, 如果残局优势比控制中心点重要, 则残局优势的系数要大。

该程序将搜索空间扩展到一定局数并根据多项式估值函数估算该局中所有状态值。根据5.4.2节介绍的极大极小法, 程序可倒推出图中所有状态的估值。游戏者根据结点的最佳状态走棋;对手走棋后, 根据新的棋局状态, 整个过程将再来一遍。

若多项式估值函数导向一系列不能取胜的移动, 程序将调整其系数以提高能力。具有较大系数的因素由于在输棋原因中占很大比重, 它的系数将减小, 而较小的系数将增 大以提高相关因素的影响力。如果取胜则情况相反。通过与人或其自身的不同版本对抗, 程序不断训练学习。

可以看出, 跳棋游戏在学习过程中采用的是瞎子爬山法, 通过对多项式估值函数的局部的改进来提高自身的性能。该程序能不断改进到水平很高为止。然而, 由于算法依靠瞎子爬山法, 它不可避免地具有某些限制。例如, 由于采用的不是全局的策略, 程序容易被对手利用某种启发策略导向陷阱。同样, 程序的自学习功能容易被对手的随手棋所迷惑;例如, 老对手灵活地采用多种策略, 或故意乱下棋, 这就会使多项式估值函数的系数随意性很大, 从而全面降低了程序的能力。

上例表明, 尽管瞎子爬山法有其局限性, 但是若估价函数选取得当并能够避免局部最优解和无穷搜索时, 它就会充分发挥搜索的高效率。总之, 启发式搜索需要一个具有很多启发信息的算法, 而最好优先搜索就提供了这一算法。

5.2.2 最好优先搜索法(有序搜索法)和第四章中所提到的深度优先及广度优先搜索算法一样, 最好优先搜索算法也使用了两张表来记录结点信息: 在Open表中保留所有已生成而未考察的结点;在Closed表中记录已访问过的结点。算法中有一步是根据某些启发信息, 按结点距离目标状态的长度大小重排Open表中的结点这样。循环中的每一步只考虑Open表中状态最好的结点, 这就是最好优先搜索算法,又称为有序搜索法。其数据结构(Open表)既不同于广度优先使用的队(先进先出), 也不同于深度优先使用的栈(后进先出), 而是一个按结点的启发估计函数值的大小为序排列的一个表, 有时也称为“优先队”。进入优先队的结点不是简单地排在队尾(或队首), 而是根据其估值的大小插入队中 合适的位置, 每次从队中优先取出估值最小的结点加以扩展。

最好优先搜索的算法描述如下: PROCEDURE BEST-FIRST-SEARCH INITIALIZE:OPEN=[START];CLOSED=[ ];WHILE OPEN≠[ ] DO BEGIN REMOVE THE NEXT STATE FROM OPEN, CALL IT X;IF X IS A GOAL THEN RETURN THE SOLUTION PATH THAT LED TO X;PROCESS X,GENERATING ALL ITS CHILDREN;FOR EACH CHILD OF X DO CASE THE CHILD IS NOT ALREADY ON OPEN OR CLOSED: BEGIN ASSIGN A HEURISTIC VALUE TO THE CHILD STATE;ADD THE CHILD STATE TO OPEN;END;THE CHILD IS ALREADY ON OPEN: IF THE CHILD WAS REACHED ALONG A SHORTER PATH THAN THE STATE CURRENLTY ON OPEN THEN GIVE THE STATE ON OPEN THIS SHORTER PATH VALUE THE CHILD IS ALREADY ON CLOSED: IF THE CHILD WAS REACHED ALONG A SHORTER PATH THAN THE STATE CURRENLTY ON CLOSED THEN BEGIN GIVE THE STATE ON CLOSED THIS SHORTER PATH VALUE;MOVE THIS STATE FROM CLOSED TO OPEN END END;PUT X ON CLOSED;RE-ORDER STATES ON OPEN ACCORDING TO HEURISTIC MERIT(BEST VALUES FIRST)END;RETURN(FAILURE);%OPEN IS EXHAUSTED END.在每一次重复中, 最好优先搜索算法从Open表中取出第一个元素, 如果该元素满足目标条件, 则算法返回到达该元素的搜索路径。在这里, 每个结点都保留父结点的信息, 以保证返回完整的搜索路径。

若Open表的第一个元素不是目标结点, 则算法应用相应的规则进行一系列操作来产生它的子结点。如果子结点的状态已在Open(或Closed表)中, 则算法保证新的状态记录两个求解路径中花费小的一个, 不保留重复的状态。这样, 当Open表(或Closed表)中的结点再一次被发现时, 通过刷新它的祖先结点的历史记录, 算法就极有可能得到到达目标结点的更短的路径。

接着, 最好优先搜索法估算Open表中每个结点的状态的启发值, 按照值的大小重新排序, 将值最小的状态放在表头。

图5.4是一个层次式状态空间, 有些结点旁边标上了相应的启发值。标上值的那些状态都是在最好优先搜索中实际生成的。在这张图中, 启发搜索算法扩展的状态都已显示;算法无需搜索所有的状态空间。最好优先搜索算法的目标是尽可能地减小搜索空间而得到解, 启发信息给得越多, 处理的状态就越少。

下面给出了这张图的最好优先搜索算法的运行过程。假定P是目标状态, 则到P 的路径上的结点状态有较低的启发值。在这里, 启发信息难免会有错误;状态O比P的值小而先被检查。然而, 不象瞎子爬山法, 该算法本身有纠错功能, 能从此状态返回并找到正确的目标状态。1.Open=[A5];Closed=[ ] 2.估算A5;Open=[B4,C4,D6];Closed=[A5] 3.估算B4;Open=[C4,E5,F5,D6];Closed=[B4,A5] 4.估算C4;Open=[H3,G4,E5,F5,D6];Closed=[C4,B4,A5] 5.估算H3;Open=[O2,P3,G4,E5,F5,D6];Closed=[H3,C4,B4,A5] 6.估算O2;Open=[P3,G4,E5,F5,D6];Closed=[O2,H3,C4,B4,A5] 7.估算P3;已得到解!图5.5是算法执行了五次循环后的状态空间图。Open表和Closed 表中的状态以不同的亮度显示。Open表中记录搜索的当前结点, Closed表中保存已考察过的状态。

最好优先搜索算法总是从Open表中选取最“好”的状态进行扩展。但是, 由于启发信息有时可能出错, 故算法并不丢弃其它的状态而把它们保留在Open表中。当某一个启发信息将搜索导向错误路径时, 算法可以从Open表中检索先前产生的“ 次最好”状态, 并且将考察方向转向空间的另一部分上。如图5.4, 当算法发现状态B 的子结点有很差的启发值时, 搜索转移到C, 但B的子结点都保留在Open表中, 以防算法在未来的某一步再一次转向它们。在最好优先搜索算法中, 就象第四章中的算法一样, 当某一路径无法到达目标解时, 可使搜索转到另一条路径上。

5.2.3 启发估计函数的实现

不同的启发策略对解决九宫问题有不同的影响。图5.6 显示了九宫问题的起始状态、目标状态以及搜索过程中产生的前三个状态。

最简单的启发策略是计算每种格局下与目标结点的格局相比时位置不符的将牌数目。从感觉上来说, 这种策略很有效, 因为在其它条件相同的情况下, 位置不符将牌数目越少, 它看上去和最终目标越近, 因而是检验的下一个状态。

但是, 这种策略并没有充分利用所能获得的信息, 它没有考虑将牌所需移动的距离。一个“较好”的启发策略是将牌移到目标位置上时所需移动距离的总和相加作为启发值。

这两种策略都没有考虑将牌逆转时的情况, 也就是, 如果两块将牌相邻但是和目标格局相比位置相反, 这至少需要移动两次才能将它们移到正确的位置上, 将这一点加以考虑的启发策略对每一对逆转将牌乘以一个小倍数(如2)。图5.8显示的就是将这三种策略运用到图5.6的三个子状态情况下所得到的结果。

在图5.8中, “距离总和” 策略看上去比仅仅计算位置不符将牌数目的策略提供了一个更精确的估算。而且, 由于在这些状态中, 没有直接给出逆位数, 故都给予估值。第四种策略克服了仅计算将牌逆转数目策略的局限, 它将位置不符将牌数目总和与2倍将牌逆转数目相加。

这个例子说明, 设计一个好的启发策略具有相当的难度。设计算法的目标就是利用有限的信息作出一个明智的选择。上述策略都忽略了一些重要的信息, 需加以改进。好的启发策略的设计是一个经验问题, 判断和直觉是很重要的因素, 但是衡量的最终尺度则是具体应用时的效果。

由于所有的启发策略都可能出错, 每一种搜索算法都可能导向错误的路径, 但是在深度优先搜索中, 可用深度计数探查无效路径来解决这个问题。这个思想也可运用到启发式搜索中。如果两种状态具有相等的启发值, 通常先考察离根较近的那个状态。这个状态极有可能就处在到达目标状态的最佳路径上。可用一个深度计数来记录从起始状态到其子孙状态的距离。计数起始值为0, 每搜索一层计数值加1。这个值可加到启发值上, 层数越浅的状态越优先。

这样, 就得到了估计函数f, 它由两个因素所组成: f(n)=g(n)+h(n)其中g(n)是状态n到达起始状态的路径的实际长度, h(n)是状态n到目标状态的最佳路径的启发值。

在九宫问题中, 可令h(n)为位置不符的将牌数目。若将这个估计函数值运用到 图5.6的子状态中, 它们的f值分别是6,4,6(见图5.9)。

各个状态的f(n)值 这里f(n)=g(n)+h(n)g(n)=从n到初始状态的实际长度 h(n)=位置不符的将牌数目

图5.9 九宫图的估计函数f值

在图5.10中, 使用上面所定义的f函数得到一个完整的搜索树。每种状态都以一个字母及它的估计函数值f来标记。每种状态头部的数字显示该状态从Open 表中取出时的顺序。有些状态没有数字标记, 这是因为当算法结束时, 这些状态仍在Open表中。

图5.10 启发式搜索产生的九宫图状态空间

产生图5.10的一系列过程如下: 1.open=[a4];closed=[] 2.open=[c4,b6,d6];closed=[a4] 3.open=[e5,f5,g6,b6,d6];closed=[a4,c4] 4.open=[f5,h6,g6,b6,d6,i7];closed=[a4,c4,e5] 5.open=[j5,h6,g6,b6,d6,k7,i7];closed=[a4,c4,e5,f5] 6.open=[l5,h6,g6,b6,d6,k7,i7];closed=[a4,c4,e5,f5,j5] 7.open=[m5,h6,g6,b6,d6,n7,k7,i7];closed=[a4,c4,e5,f5,j5,l5] 8.成功,m=目标状态!在第3步中, e和f都具有相等的启发值5。先检查状态e并产生它的子结点h和i。尽管h同f一样具有相等的位置不符的将牌数目, 但它在整个状态空间中所处层数要深。深度函数g(n)使算法在第4步中选择f作为考察对象。此时, 算法回退一层并继续搜索过程。此时的状态空间图以及相应的Open表、Closed表见图5.11。

事实上, 估计函数f中的g使搜索具有广度优先的性质, 这就使整个搜索免于被一个错误的估计值所误导。当算法沿着一条不断返回“好”估值但实际上是错误的路径搜索时, g值将不断增加并最终在f中占主导地位, 从而迫使搜索回退到一个具有较小f值的路径。这就保证算法不会永远沿着一条路径搜索下去。在5.3节中, 将讨论在何种条件下, 最好优先算法使用f一定能得到一条最短的路径。

当估计函数f运用到最好优先搜索算法上时, 它提供了启发式搜索的一般规则。总结如下: 1.根据产生式规则和一些其它的操作生成当前考察结点的子状态。2.检查每个状态以前是否已经考察过(已在Open表或Closed表中), 以防止循环。

3.每个状态n都赋以f(n)值。其中f=g+h, h 值使搜索沿着具有较好启发值的状态所处路径前进;g值防止搜索在一条无效的路径上无限继续下去。

4.Open表中的状态按f值排序。这些状态在未被考察或未找到到目标状态时一直保存, 通过保存这些状态,算法能随时从一无效路径上返回。Open 表中可能保存有状态空间中不同层次的状态, 以充分保证能随时转移搜索方向。

5.通过设计Open表和Closed表的存贮方式, 可提高算法的效率。例如, 将Open表处理为一个堆栈能够缩短排序的时间。

最好优先搜索算法是启发式搜索的一个较常用算法。它支持多种估计函数的使用, 既可用于目标驱动搜索, 又可用于数据驱动搜索, 它是检验启发式搜索行为的一个基础。因为它的普遍性, 最好优先搜索可和多种启发策略一起使用。

篇6:基于规则的启发式算法

启发式算法在MEMS陀螺仪数据处理中的应用

随机漂移是影响微机电系统(MEMS)陀螺仪精度的主要因素.为了实时估计并补偿随机漂移,对启发式漂移消减算法(HDR)进行改进,提出自适应漂移消减算法.利用Allan方差分析方法确定陀螺仪的零偏稳定时间,通过检测陀螺仪数据的平稳性来区分随机漂移和真实角速率.以Pioneer3-AT机器人为平台进行试验,与基本HDR算法相比,新算法可以弥补载体有恒定角速率时基本HDR算法不可用的`缺点,与普通算法相比,新算法可以提高航向精度2倍以上.

作 者:作者单位:刊 名:传感器与微系统 PKU英文刊名:TRANSDUCER AND MICROSYSTEM TECHNOLOGIES年,卷(期):29(3)分类号:V241.5关键词:启发式漂移消减算法 自适应算法 Allan方差分析 平稳性 Pioneer3-AT机器人

篇7:基于规则的启发式算法

利用遗传算法的优化搜索能力获得描述飞行状态知识的`产生式表达,并在此基础上提出了一种知识维护的算法,为专家系统中知识库的自动建立及维护提供了一种可行的方法,该算法在实践中有较好的应用前景并已在飞行动作的知识发现方面获得了成功的验证.

作 者:胡飞 徐浩军 曹登高 HU Fei XU Hao-jun CAO Deng-gao  作者单位:空军工程大学工程学院,西安,710038 刊 名:电光与控制  ISTIC PKU英文刊名:ELECTRONICS OPTICS & CONTROL 年,卷(期):2006 13(3) 分类号:V249 关键词:知识发现   遗传算法   飞行动作  

★ 编写寓言故事300字

★ 高中生编写寓言故事

★ 编写可行性报告

★ 编写一个寓言故事

★ 怎样编写个人简历

★ 命题故事编写范文

★ 教案编写如何创新

★ 编写童话故事作文

★ 小学教学计划如何编写

篇8:基于规则的启发式算法

一、启发式搜索技术概述

具有极强的针对性是启发式搜索技术的特征。因为理论上启发式搜索仅仅针对问题部分状态空间进行搜索, 因此, 启发式搜索技术具有非常高的效率。启发式搜索时, 进行下一个考察节点的确定是其核心步骤, 这是因为当考察节点确定之后, 就能够确定相应的搜索策略。事实上, 规划求解问题属于一种状态空间搜索问题。其过程就是规划问题通过状态空间进行表示, 基于启发式函数对搜索进行指导, 从而寻求规划解。

任何一个规划问题都可以通过状态空间进行表示, 将规划问题通过初始状态集合S0, 动作集Ω, 以及目标集合表示G。在任何一个动作而言, 都存在a∈G, 具有前提列 (Prec (a) ) , 删除效果列 (Del (a) ) 以及增加效果列 (Add (a) ) 。对于规划问题的求解, 实际上就是寻找动作序列, 利用动作序列的执行, 实现初始状态到达目标状态。

进行正向的状态空间搜索过程中, 当动作a全部前提在状态S中出现时, 也就是说, 此时, 表明动作a对于状态S是适用的。通过动作a, 状态S进行扩展, 可以表示为:

从状态S向目标G实现的成本估计就是状态S启发函数。

基于初始状态S0向状态S的实现的成本估计是状态S的启发函数。

一般情况下, 最大代价法, 互斥代价法, 和代价法以及取层号法都是启发式搜索技术常用启发函数。

二、灵活规划概述

实际生活中世界复杂多变, 许多实际问题具有灵活的约束条件。作为一种强约束问题, 经典规划问题基于约束条件完全满足或不能完全满足时, 在特定情况下, 操作可用性是布尔的。因此, 对于现实世界中很多问题的刻画, 上述框架就显得太严格。灵活规划则能够解决上述问题。灵活规划描述对软约束支持, 能够解决经典规划约束存在的问题。通过灵活规划能够对实际问题中经典规划不能刻画的问题进行刻画。然而灵活规划也存在一定的不足, 灵活规划只能采用灵活规划器, 不能采用传统规划器。利用灵活规划器能够寻找到布尔规划器中不存在的折中规划。目前, 对于处理灵活规划问题的通用算法的研究已经成为研究的重点和热点。当前灵活规划问题主要是采用Graphplan框架与CSP相结合的规划器, 通过启发式搜索理论进行灵活规划的规划器有待于提高。

三、基于启发式搜索技术的灵活规划算法实现

灵活规划的满意度与规划长度共同决定了规划的质量, 也就是如果两个规划的满意度相同, 那么规划短的更加优秀。

3.2启发函数描述。灵活规划中其互斥包括命题互斥与动作互斥两部分。 (1) 命题互斥。对于灵活规划中同一层的任意两个动作满足如下条件中的任意一个, 就表明存在互斥关系。 (1) 两个命题中一个命题否定另外一个命题; (2) 灵活规划中一个灵活命题全部动作和另外一个灵活命题动作存在互斥; (3) 同一层中两个灵活命题其核心命题具有不一样的真值度。 (2) 动作互斥。对于灵活规划中同一层的任意两个动作满足如下条件中的任意一个, 就表明存在互斥关系。 (1) 两个动作存在冲突。也就是说, 一个动作效果命题真值度与另外需要具有不同核心命题前提表达的动作的真值度表达不同; (2) 两个动作效果具有不一致性。也就是说, 某一个动作效果真值度和另外的有着相同核心命题动作产生效果真值度不一样; (3) 两个动作发生竞争。即同一层上两个动作存在冲突。

HSP-r是一种反向搜索规划器, 其默认启发函数是和互斥代价法, 所以, HSP-r的定义对于反向搜索而言更加适用。本文构建正向搜索, 因此, 为了满足算法需要, 对其进行相应改进, 改进算法如下:

3.3基于启发式搜索规划算法思想。对于灵活规划问题而言, 因为其满意度要求不一样, 因此, 折中度也不一样。本算法规划搜索过程中, 基于事先给出的目标满意度以及最大的规划长度, 用户进行搜索, 从而寻找满足满意度的前提下, 使得规划的长度最短。

灵活规划的动作代价和其前提条件有关系, 对于任意一个动作代价而言, 支持这个动作代价的前提条件命题代价的和就是动作代价。基于改进的和互斥代价法计算命题代价。

基于启发式搜索规划算法用FP-H表示, 即Flexible Planning based on Heuristic。FP-H算法的利用有序搜索, 实现对于规划的正向的搜索。FP-H算法实施过程中, 对于各状态满意度进行不断计算, 从而使得改进和互斥代价法计算的各状态启发函数值得到利用。对于目标状态的是否出现采用边搜索边检查的方法, 一直到寻找到规划解或者搜索失败。

基于此, FP-H算法的构建思想为, 规划初始状态是初始命题集合, 通过合理动作并且采用启发式的信息进行状态空间搜索树的生成, 对于是否出现满足满意度目标状态进行检查, 并且进行剪枝。当出现目标状态, 并且目标状态的全部的命题都不出现互斥, 那么表明搜索成功;当没有出现目标状态, 需要进行下一个状态的寻找, 继续搜索。对上述过程进行不断重复, 一直到出现目标状态或者操作完毕或者不存在能够使用的状态, 则表明规划结束。

3.4基于启发式搜索规划算法的描述。 (1) 通过状态空间表示法表示灵活规划问题, 初始状态S0是初始条件集合, 目标状态G是目标集合, 当前状态为初始状态S0, 状态搜索操作集合Ω为动作集合; (2) 对初始状态中是否有目标集合出现进行检查, 当初始状态中有目标集合出现, 那么不需要进行搜索, 如果没有出现, 那么久需要状态空间搜索树的生成, 从而实现搜索; (3) 将当前状态用初始状态S0表示, 对操作集合Ω的动作进行检查。当在初始状态S0中出现某动作全部前提, 那么通过该动作实现状态S0的扩展, 即利用全部适用的动作进行S0的扩展, 获得众多后继状态, 然后对是否出现目标集进行检查, 当出现则表明搜索成功, 如果没有出现, 就继续搜索。 (4) 标记扩展获得的所有子状态动作以及满意度, 同时对互斥进行标记。 (1) 状态满意度的计算。各个状态满意度实际上是当前状态上一个状态满意度以及当前状态操作满意度的综合考虑。通过上述方法对上一状态满意度进行计算, 当状态满意度比用户规划满意度小时, 舍弃该状态; (2) 对全部没有舍弃的状态启发函数进行计算:

(3) 基于用户对于规划满意度的要求对当前状态进行选择, 当多个满意度都符合要求时, 则选用启发函数值小的; (4) 当状态进行选择之后, 进行当前状态的搜索。对于生成的各个子状态而言, 对目标集进行检查, 确定是否完全不互斥。如果完全不互斥, 那么搜索成功, 否则继续搜索。 (5) 当出现目标集, 那么把目标状态到初始状态的动作进行反向的蔬菜, 从而求的规划解; (6) 如果在用户规定的最大长度内还没有寻求到规划解, 那么就表明搜索不成功。

3.5基于启发式搜索规划算法的求解。基于启发式搜索的规划算法具有启发式和灵活规划的特征, 其求解过程如下: (1) 通过PDDL语言描述所要解决的规划问题, 描述规划问题的初始状态, 描述规划问题的动作和目标状态; (2) 对规划问题进行读入, 把规划问题进行编译以后, 通过规划器将规划问题进行调用, 同时寻找互斥关系; (3) 基于互斥关系, 通过改进的FP-H启发函数对个状态启发值进行求解。 (4) 通过启发信息实现搜索, 并且将规划解进行输出。

小结

对于规划问题人们给予了越来越多的重视, 在规划领域内, 启发式搜索具有特殊地位。在对研究启发式搜索与灵活规划进行深入探讨的基础上, 构建基于启发式搜索的灵活规划问题处理的算法, 对算法框架进行了研究, 规定启发代价, 改进了启发式函数。基于启发式搜索的规划算法为规划问题的求解提供了一种新的途径。

参考文献

[1]彭祥云, 姜云飞.基于资源约束和局部启发搜索的规划系统[J].控制工程, 2006 (2) 13:185-189.

上一篇:学习应用文心得体会下一篇:大班美术教案京剧