禁忌搜索

Tabu Search

禁忌搜索从一个初始状态出发,选择一系列的特定搜索方向作为试探,选择让数值变化最多的移动,为了避免陷入局部最优解,搜索中采用了一种灵活的记忆技术,对找到的局部最优解,有意识地避开这些局部最优解,从而获得更多的搜索区域

算法过程

  • 给定一个禁忌表,选定一个初始状态
  • 如果满足停止规则,停止搜索
  • 否则,在的邻域中选出满足不受禁忌约束的候选集,在中选择一个最高的状态,把当作新的状态进行邻域搜索,同时把这一切记载进入历史

禁忌长度

控制其他变量,单从禁忌长度来讲,禁忌长度越短,机器内存占用越少,解禁范围更大,但容易造成搜索循环(实际搜索的范围很小),禁忌长度过长容易导致计算时间长

特赦原则

对于在禁忌中的状态,如果出现下面的情况,不管现在状态的禁忌长度如何,均设为

  • 基于评价值的规则:若出现一个解的目标值,好于前面任何一个最佳候选解,可特赦
  • 基于最小错误的规则:若所有对象都被禁忌,特赦一个评价值最小的解
  • 基于影响力的规则:可以特赦对目标值影响大的状态

候选集

候选集的大小,过大增加计算内存和计算时间,过小过早陷入局部最优,可以选择所有邻居,也可以选择表现较好的邻居,还可以随机选择几个邻居

评价函数

评价函数分为直接评价函数和间接评价函数,直接评价函数没什么好讲的,间接评价函数是一个反映目标函数特性的函数,会比目标函数的计算更加简洁,用以减少计算时间等