码迷,mamicode.com
首页 > 编程语言 > 详细

现代优化算法 之 禁忌搜索算法

时间:2015-12-22 16:29:02      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:

这次是首次接触这个算法,看了一些资料,总结一下。

禁忌搜索算法简介

禁忌搜索算法是组合优化算法的一种,是局部搜索算法的扩展。禁忌搜索算法是人工智能在组合优化算法中的一个成功应用。禁忌搜索算法的特点是采用了禁忌技术。所谓禁忌就是禁止重复前面的工作。禁忌搜索算法用一个禁忌表记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点。

禁忌搜索算法实现的技术问题是算法的关键。禁忌搜索算法涉及侯选集合、禁忌对象、评价函数、特赦规则、记忆频率信息等概念。

(1)邻域

在组合优化中,距离的概念通常不再适用,但是在一点附近搜索另一个下降的点仍然是组合优化数值求解的基本思想。因此,需要重新定义邻域的概念。

一个组合优化问题可用三参数(D,F,f)表示,其中D表示决策变量的定义域,F表示可行解区域, F中的任何一个元素称为该问题的可行解, f表示目标函数。满足
f(x?)=min{f(x)|xF}的可行解x?称为该问题的最优解。

定义 1 对于组合优化问题(D,F,f)D上的一个映射:
N:SDN(S)2D
称为一个邻域映射,其中2D表示D的所有子集组成的集合, N(S)称为S 的邻域,
SN(S)称为S 的一个邻居。

(2)侯选集合

侯选集合由邻域中的邻居组成。常规的方法是从邻域中选择若干个目标值或评价值最佳的邻居入选。

(3)禁忌对象和禁忌长度

禁忌表中的两个主要指标是禁忌对象和禁忌长度。禁忌算法中,由于我们要避免一些操作的重复进行,就要将一些元素放到禁忌表中以禁止对这些元素进行操作,这些元素就是我们指的禁忌对象。禁忌长度是被禁对象不允许选取的迭代次数。一般是给被禁对象x一个数(禁忌长度) t ,要求对象xt 步迭代内被禁,在禁忌表中采用tabu(x)=t记忆,每迭代一步,该项指标做运算tabu(x)=t?1,直到tabu(x)=0时解禁。于是,我们可将所有元素分成两类,被禁元素和自由元素。禁忌长度t 的选取可以有多种方法,例如t=,或t=[n],其中n为邻域中邻居的个数;这种规则容易在算法中实现。

(4)评价函数

评价函数是侯选集合元素选取的一个评价公式,侯选集合的元素通过评价函数值来选取。以目标函数作为评价函数是比较容易理解的。目标值是一个非常直观的指标,但有时为了方便或易于计算,会采用其他函数来取代目标函数。

(5)特赦规则

在禁忌搜索算法的迭代过程中,会出现侯选集中的全部对象都被禁忌,或有一对象被禁,但若解禁则其目标值将有非常大的下降情况。在这样的情况下,为了达到全局最优,我们会让一些禁忌对象重新可选。这种方法称为特赦,相应的规则称为特赦规则。

(6)记忆频率信息

在计算的过程中,记忆一些信息对解决问题是有利的。如一个最好的目标值出现的频率很高,这使我们有理由推测:现有参数的算法可能无法再得到更好的解。根据解决问题的需要,我们可以记忆解集合、被禁对象组、目标值集合等的出现频率。

频率信息有助于进一步加强禁忌搜索的效率。我们可以根据频率信息动态控制禁忌的长度。一个最佳的目标值出现的频率很高,有理由终止计算而将此值认为是最优值。

模型及求解

我们用禁忌搜索算法研究如下的两个问题:
(1)研究前几篇现代优化算法解决的问题。
(2)我方有三个基地,经度、纬度分别为70,40,72,4568,48。假设我方所有无人侦察机的速度都为1000 公里/小时。三个基地各派出一架飞机侦察敌方目标,怎样划分任务,才能使时间最短,且任务比较均衡。

问题(1)的求解

问题(2)的求解

现代优化算法 之 禁忌搜索算法

标签:

原文地址:http://blog.csdn.net/u013007900/article/details/50379135

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!