局部搜索中的常用随机选择
从m个元素中随机选择1个
在局部搜索中,一个解的最佳邻域解可能存在有多个,为保证解的疏散性,通常需要等概率地从等价的最佳邻域解中选择一个来执行,假设一共有 m m m个等质量的解,则我们希望每一个解被选择的概率为 1 / m 1/m 1/m,有两种方式可实现:
- 将最佳邻域解用一个数组保存起来,然后产生1个数组大小的随机数,即可等概率的选择邻域解。优点是思路简单,缺点是需要开辟额外的空间;
- 伪代码如下所示,遍历邻域解的过程中,记录当前最佳邻域解出现的次数 n n n,当最佳邻域被更新之后,在遍历过程中出现的等质量的解均为当前最佳邻域解,需要更新出现次数,同时以 1 / n 1/n