2

我习惯于遗传算法(GA)中的每个参数都可以表示为二进制字符串的方法,该字符串可以在指定的时间间隔内编码为实数值。

我目前正在编写差分进化 (DE) 代码,但我还没有读到任何关于像在 GA 中那样控制参数间隔的信息,所以我对这个过程有点困惑......这是我的问题:

1)有什么东西可以控制DE中的参数间隔吗?我意识到任何人都可以根据自己的目的修改 DE,但我很好奇它传统上是如何使用的。

2)我知道如何为初始随机群体指定间隔,但是有什么限制变异和交叉操作中的间隔吗?

3)如果参数没有任何界限,那么变异和交叉操作是否可以自由探索所有空间?

谢谢你的时间。

4

1 回答 1

3

差分进化滤波器通过将两个种群成员之间的加权差异向量添加到第三个成员来生成新的参数向量。如果生成的向量产生的目标函数值低于预定的总体成员,则新生成的向量替换与之比较的向量;否则,保留旧向量。信息在这里

1)有什么东西可以控制DE中的参数间隔吗?我意识到任何人都可以根据自己的目的修改 DE,但我很好奇它传统上是如何使用的。

在 DE 中,您有他们所谓的策略。有许多:

1 --> DE/best/1/exp           6 --> DE/best/1/bin
2 --> DE/rand/1/exp           7 --> DE/rand/1/bin
3 --> DE/rand-to-best/1/exp   8 --> DE/rand-to-best/1/bin
4 --> DE/best/2/exp           9 --> DE/best/2/bin
5 --> DE/rand/2/exp           else  DE/rand/2/bin

你可以在这里找到 Matlab 中的代码。

2)我知道如何为初始随机群体指定间隔,但是有什么限制变异和交叉操作中的间隔吗?

突变和交叉受到您选择的策略的限制。

3)如果参数没有任何界限,那么变异和交叉操作是否可以自由探索所有空间?

理论上,如果您在所有解决方案空间内启动限制,DE 将找到全局最优值。但是,根据我的经验,我注意到解决方案空间中的初始参数和限制对于获得快速响应非常重要。简而言之,如果您对解决方案的位置有一点了解,那么如果您将参数限定在这些值内,DE 的表现会更好。

于 2016-01-06T09:11:09.460 回答