我想知道 GA 的交叉阶段。据我了解,0.7 => 70% 发生交叉的机会是一个典型的开始值。如果你父母的选择过程是基于返回的特定染色体的适应度,那么最适染色体很有可能通过并且没有经历交叉,那么精英主义真的有必要吗?
我还需要应用过滤器来去除每一代的重复染色体?
我想知道 GA 的交叉阶段。据我了解,0.7 => 70% 发生交叉的机会是一个典型的开始值。如果你父母的选择过程是基于返回的特定染色体的适应度,那么最适染色体很有可能通过并且没有经历交叉,那么精英主义真的有必要吗?
我还需要应用过滤器来去除每一代的重复染色体?
即使交叉率很高,并且选择更高染色体进行交叉的选择过程也总是有机会(无论多么小)你会从一代到下一代失去最好的染色体。精英主义意味着一旦找到了好的结果,它就会一直留在人群中,直到找到更好的结果。
无论失去最佳结果的可能性有多大,使用安全防护以确保它永远不会发生总是一个好主意。
关于去除重复染色体,这不是必需的,但它通常可以确保种群不会变得陈旧并且不会填充相同的染色体。通常,我应用一个函数,它不会在每一代而是在给定的代数之后删除重复的染色体。这主要是为了提高算法的整体速度,但如果需要,可以在每一代都实施。
随着突变率的提高,删除重复项也变得不太必要,因为突变本身会阻止种群被所有相同的染色体填充。就个人而言,我更喜欢同时应用重复删除和突变,尽管它们有效地执行相同的任务。以我的经验,尽管遗传算法的多样性总是好的,因此对同一任务使用不同的功能通常可以产生更好的结果。