我正在尝试实现遗传算法以最大化n个变量的函数.然而问题是健身值可能是负的,我不确定如何在做选择时处理负值.我读过这篇文章遗传算法中的线性适应度缩放会产生负的适应度值, 但我不清楚如何处理负适应度值以及如何计算比例因子a和b.
另外,从文章中我知道轮盘赌选择仅适用于积极适应值.锦标赛选择也一样吗?
如果您有负值,您可以尝试在人口中找到最小的适应值,并将其与每个值相加.这样您就不会有负值,而适应值之间的差异将保持不变.
锦标赛选择不受此问题的影响.它只是比较群体大小为n的均匀采样子集的适应度值,并采用具有最佳值的那个.当然,这意味着,如果您在不重复的情况下进行采样,那么最糟糕的n-1个体将永远不会被选中.如果您重复采样,他们有机会被选中.
与比例选择一样:它不适用于负适应值.您只能对您的健身值应用"窗口"或"缩放",在这种情况下它们会再次起作用.
我曾经编写过一些采样方法作为C#的IEnumerable的扩展方法,其中包括SampleProportional和SampleProportionalWithoutRepetition扩展方法.他们是GPL许可下的HeuristicLab的一部分.
| 归档时间: |
|
| 查看次数: |
3244 次 |
| 最近记录: |