交叉概率对遗传算法/遗传编程有什么影响?

时间:2012-05-28 01:38:17

标签: genetic-algorithm genetic-programming evolutionary-algorithm

任何人都能举一个交叉概率的例子吗?我想知道确定交叉概率有什么好处,以及它在遗传算法或遗传编程中有什么影响。

2 个答案:

答案 0 :(得分:5)

根据定义,交叉概率没有好处。它只是一个允许您调整遗传算法行为的参数。降低交叉概率将使更多个体在下一代中继续保持不变。在解决某些问题时,这可能会或可能不会产生积极影响。我在HeuristicLab创建了一个小实验,并将遗传算法应用于TSP。在TSPLIB的一个小实例上,每个概率重复遗传算法10次(bays29)。正如您在下图中所看到的,识别模式相当困难。我还上传了algorithmexperiment,您可以在HeuristicLab中打开并试验这些文件。该实验包括每次运行的质量图表和进一步分析,以便您可以根据需要检查收敛行为。

Variations of crossover probability

选择的策略也可能过于简单,因此无法显示效果。在实验中,还通过适应性比例选择来选择不受交叉影响的父母。因此,高质量的个人将非常快地主导人口。另一种策略可能是通过适应性比例选择仅选择交叉父母,并随机选择其余父母。可在此处查看结果(algorithmexperiment);

Variations of crossover probability

您可以自行修改并试验结果。

可在此处找到相关答案:What is Crossover Probability & Mutation Probability in Genetic Algorithm or Genetic Programming?

答案 1 :(得分:3)

我不确切地知道你在问什么。交叉概率只是应用交叉算子的概率 - 范围[0.0,1.0]中的任何实数都是一个例子。

也没有单一的最佳设置。它取决于大量因素和与算法中其他设置的复杂相互关系。例如,如果您有世代GA,您希望父母可以在未经修改的情况下存活。否则,你可能会失去好的解决方案。因此,您可以将交叉率设置为略低于0.7的值。另一方面,像CHC这样的算法非常强大 - 它始终保持它找到的最佳解决方案,因此更有动力使用交叉搜索更广泛,因此它将概率设置为1.0。其他算法完全依赖于突变,并将交叉率设置为0.0。遗传算法最典型的值非常高 - 可能是0.8到1.0。遗传编程倾向于经常使用较低的值,可能低至0.3或0.4。

但这就是重点。您必须设计一种算法来支持某些目标。弄清楚交叉的频率应该是你做出的决定,因为某些原因。如果您所做的只是采用现成的遗传算法并在那里转储一些随机参数,那么它就不太可能正常工作。