离散的差分进化Discrete DE

一般的差分算法的变异规则:
Xmutation=Xr1+F(Xr2-Xr3),F为缩放因子,

离散差分进化DDE的变异规则:设每个解为K个元素的集合,则
Xr2-Xr3:求出Xr2与Xr3有m个共同元素,则Xr2-Xr3表示Xr2中减去m个相同的元素,剩下的K-m个独有元素e1,e2,...eK-m(若K-m==0,则随机产生一个新的Xr3替换掉原有的Xr3,再执行上述过程)。
Xr1+F(Xr2-Xr3):F为缩放因子,F=0.5+random(0.5到1.5之间的随机数),则Xr1+F(Xr2-Xr3)表示,
要在Xr1中随机找出N=F*(K-m)个元素进行替换,新的元素来自(e1,e2,...eK-m)。
若N<=K-m,替换N个
若K-m<N<K,替换N个,不足的元素从集合V随机挑选。
若N>K,则替换N=K个,即替换Xr1中K个位置的所有元素,元素为e1,e2,...eK-m和集合V中的随机元素。

替换之后的Xr1为Xmutation。


交叉规则:
if random<cr
Xselection=Xmutation
else
把X再次进行变异得到Xnew
Xselection=Xnew

这样做是因为,我把变异理解局部搜索,交叉部分必须能够产生新的个体,才能实现全局搜索。

posted @ 2017-06-20 16:00  morein2008  阅读(1099)  评论(0编辑  收藏  举报