用于局部搜索启发式中的变异算子的Python代码

时间:2016-06-23 10:04:59

标签: python-2.7

将时间表作为要执行的请求任务的排列或任意排序。

以下是变异运算符的示例,用于创建当前计划的邻居。

随机交换:随机选择两个排列位置,交换请求的任务,每个变异进行1-15次交换(随机选择)。

我不明白如何在Python 2.7中编写上述变异操作符。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

使用numpy你可以选择两个独有的索引进行交换,重复这个X时间,其中X在1到15之间是统一的。下面是一些示例代码:

import numpy as np
# chrom is list with genes
number_genes = len(chrom)
for i in range(np.random.choice(range(15), 1)[0]):
    ## Two exclusive indices, False for replacement so they are exclusive
    x1, x2 = np.random.choice(range(number_genes), 2, False)
    ## Swap the genes at the indices
    chrom[x1], chrom[x2] = chrom[x2], chrom[x1]