禁忌搜索算法

禁忌搜索算法基本思想

对一个初始解,在一种领域范围内对其进行一系列变化,从而得到许多候选解,从而得到许多候选解,从这些候选解中选出最优候选解,将候选解对应的目标值与“best so far”状态进行比较,若是优于“best so far”状态,那么就将其解禁,用来替代当前最优解及其“best so far”状态,然后将其加入禁忌表,再将禁忌表里的相对应的对象的禁忌长度改变;如果所有的候选解中所对应的目标值都不存在优于“best so far”状态,就从这些候选解中选出不属于禁忌对象的最佳状态,并将其作为新的当前解,并将其作为新的当前解,而且不用与当前最优解进行比较,直接将其所对应的对象作为禁忌对象,并将禁忌表中相对应的对象的禁忌长度进行修改。

一般步骤:

1.设置好禁忌长度,随机产生一个初始解,设定好藐视准则和终止准则,将禁忌表中所有元素清零。

2.对终止准则进行判断,如果终止条件成立就输出所搜索到的最优解,算法终止,否则进行第三个步骤。

3.将第一步所随机产生的初始解,根据领域函数进行变化,产生出一些领域解,从这些所产生的领域解中选出一些解作为候选解。

4.将候选解根据藐视准则进行判断,如果满足藐视准则,就将能够满足藐视准则的最好状态替代当前解,使其成为新的当前解,而且将禁忌表以前的禁忌对象删除,添加当前最佳状态所对应的对象,将其作为新的禁忌对象,同时将当前最佳状态替换“best so far”状态,最后进行第六步,否则,就进行下一步。

5.对候选解所对应的各种对象进行分析,将其禁忌属性进行判断,对候选解集里的对象,同时又不是禁忌表里禁忌的对象,将这种对象所对应的最佳状态作为新的当前解,并且将禁忌表里原有的禁忌对象,用这种对象所对应的禁忌对象替换。

6.跳转到步骤二,进行循环操作。

点赞