如何执行部分映射的交叉算子(PMX)

时间:2018-09-16 03:27:32

标签: python python-2.7

我在上述任务上花费了很多时间,但没有获得理想的结果,因此,我决定寻求这个论坛的帮助。以下是我正在尝试在python中实现的流行遗传算法移动运算符的逻辑步骤和代码,这些运算符称为“部分映射的交叉(PMX)”:

代码采用的逻辑步骤如下:

  1. 使用cutpoint_1和cutpoint_2确定路线_1中的切割点
  2. 将切割点之间的等位基因/值复制到temp_1
  3. 还使用cutpoint_1和cutpoint_2确定路线_2中的切割点
  4. 循环遍历路线_2,但不包括步骤(2)的切割点内的值/条。
  5. 然后,仅当步骤(4)的值不在temp_1内时,才将步骤(4)的值复制到temp_1上。
  6. 但是,如果值已经在temp_1内,请转到matching_list内的1ST列表。
  7. 在matching_list的1ST列表中找到该值的索引
  8. 将值定位在matching_list的2ND列表内的同一索引位置
  9. 在temp_1列表中检查以确保步骤(8)中的值不在列表中。如果不是,则将该值复制到temp_1
  10. 但是,如果步骤(9)中的值已经在temp_1内,请重复步骤(7)和(8)。

let numbers = [1, 2, 3, 4, 5]
print(numbers.drop(at: 2))
// Prints "[1, 2, 4, 5]"

但是,我没有达到下面指定的预期结果:

drop(at:)

因此,对于您在此任务上的帮助,我将感到高兴。预先感谢。

0 个答案:

没有答案