1

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

4

2 回答 2

5

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

交叉概率的变化

也有可能选择的策略过于简单,因此未能显示出效果。在实验中,未进行交叉的父母也通过适应度比例选择来选择。因此,一个高素质的个体将很快主宰人口。一种不同的策略可能是通过适应度比例选择仅选择交叉的父母,而随机选择剩余的父母。结果可以在这里看到(算法实验);

交叉概率的变化

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

可以在此处找到相关答案:什么是遗传算法或遗传编程中的交叉概率和突变概率?

于 2012-05-28T12:57:37.720 回答
3

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

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

但这一切都是无关紧要的。你必须设计一种算法来支持某个目标。由于某种原因,弄清楚多长时间进行一次交叉应该是您做出的决定。如果您所做的只是采用现成的遗传算法并在其中转储一些随机参数,那么它不太可能很好地工作。

于 2012-05-28T10:24:01.207 回答