差分进化 (DE) 和遗传算法 (GA) 之间的区别之一是 DE 会丢弃一个新候选者,除非它比它所衍生的旧候选者更合适,而 GA 允许“不太合适”的候选者以一定的概率存活。最初 DE 的方法听起来是个好主意,但我相信这会阻止它解决以下类别的问题。
想象一下,我们正在尝试最大化以下的适应度得分:
A - [max(0, A - 50) * B] + [max(0, A - 75) * 2 * B]
其中参数范围从0
到100
。
- 最初增加它是有益的
A
,直到达到50
. - 其次,设置
B
为零是有益的。 - 接下来,增加到
A
75是有利的。 - 其次,同时增加
B
和是有益的A
。
最后一点很重要:如果两者中的一个A
或B
两个独立增加,则适应度得分将下降。
回到差分进化算法,我看不出它如何解决上述问题,因为最初我们希望每一代只改变一个参数,但最终我们希望每一代改变多个参数。如果我们过早地改变每一代的多个参数,我们会降低生存的概率,进而降低进化的速度。但是,如果我们一次改变一个参数,我们将永远找不到全局最大值。
我的问题如下:
- 这是差分进化算法的一个已知问题吗?
- 有已知的解决方案吗?
- 通用算法会遇到同样的问题吗?
我不是要求解决上述特定功能。我在问差分进化是否有可能解决您事先不知道在任何给定时间需要改变多少参数并且您希望最终尽可能接近全局最大值的问题。