遗传算法的疑点

计算科学 遗传算法
2021-12-10 11:11:56

1) 执行交叉时使用以下方法“a”和“b”中的哪种方法?

a) 通过从选定的种群中随机选择任何 2 个父母,将它们杂交,形成两个后代,将它们添加到种群中,并仅丢弃两个最不适合的个体。

因此,在这里,新一代将只有 2 个新个体?休息所有的人都会老吗?

b)通过选择父母并形成与人口规模相等的后代,并用新人口替换整个旧人口。

因此,在这里,在新一代中,所有个体都将是先前种群产生的新后代吗?

2)另外,这里的交叉概率会在哪里出现?

1个回答

(a) 和 (b) 都是出现在实际算法中的有效选项。选项 (a) 被称为“稳态遗传算法”,选项 (b) 被称为“世代遗传算法”,尽管 (b) 不太可能用特定名称来引用,因为它更像是标准的做事方式事物。

实际上,没有“正确”的答案。做这种事情的方法几乎是连续的,在这个范围内的不同点偶尔会得到一个名字来指代它们(例如,“精英主义”几乎是世代相传的,但也许你会保留一两个最优秀的人父母人口)。最终,您作为 GA 从业者的工作是了解您如何设置这些参数的含义,以便您可以针对特定情况进行有效选择。

交叉概率只是您执行运算符与未经修改将两个父级传递下来的概率。在算法的核心循环中类似于以下内容。

p1, p2 = select parents
if rand01() < crossover probability
    c1, c2 = crossover(p1, p2)
else
    c1, c2 = p1, p2
insert c1, c2 into child population