基本差分进化算法

更新时间:2023-10-07 06:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基本差分进化算法 (1)初始化。

DE利用NP个维数为D的实数值参数向量作为每一代的种群,每个个体表示为:

Xi,G (i=1,2,……,NP) (1)

式中:i—— 个体在种群中的序列;G——进化代数;NP— —种群规模,在最小化过程中NP保持不变。

为了建立优化搜索的初始点,种群必须被初始化。通常寻找初始种群的一个方法是从给定边界约束内的值中随机选择。在DE研究中,一般假定对所有随机初始化种群均符合均匀概率分布。设参数变量的界限为 X(jL)?Xj?X(jU) ,则:

Xji,0?rand(0,1)`?(X(jU)?X(jL))?X(jL) (i=1,2,……,

NP;j=1,3,……,D) (2)

式中:rand[0,1]——在[0,1]之间产生的均匀随机数。 如果预先可以得到问题的初步解,初始种群也可以通过对初步解加入正态分布随机偏差来产生,这样可以提高重建效果。 (2)变异。

对于每个目标向量 Xi,G (i=1,2,……,NP),基本DE算法的变异向量如下产生:

vi,G?1?Xr1,G?F?(xr2,G?xr3,G) (3)

其中,随机选择的序号r1,r2和r3互不相同,且r1,r2和r3与目标向

量序号i也应不同,所以须满足NP≥4。变异算子F∈[0,2]是一个实常数因数,控制偏差变量的放大作用。 (3)交叉。

为了增加干扰参数向量的多样性,引入交叉操作。则试验向量变为:

ui,G?1?(u1i,G?1,u2i,G?1,...,uDi,G?1) (4)

uji,G?1?vji,G?1如果randb(j)?CR或者j?rnbr(i)?? X如果rand b (j)?CR 且j?rnbr(i)?ji,G?1(i=1,2,……,NP;j=1,3,……,D) (5)

式中:randb(j)——产生[0,1]之间随机数发生器的第j个估计值;rnbr(i)∈ 1,2,? ,D——一选择的序列,用它来确保ui,G?1至少从ui,G?1;获得一个参数;CR——交叉算子,取值范围为[0,1]。 (4)选择。

为决定试验向量ui,G?1,是否会成为下一代中的成员,DE按照贪婪准则将试验向量与当前种群中的目标向量进行比较。如果目标函数要被最小化,那么具有较小目标函数值的向量将在下一代种群中赢得一席地位。下一代中的所有个体都比当前种群的对应个体更佳或者至少一样好。注意在DE选择程序中试验向量只与一个个体相比较,而不是与现有种群中的所有个体相比较。 (5)边界条件的处理。

在有边界约束的问题中,确保产生新个体的参数值位于问题的可行域中是必要的,一个简单方法是将不符合边界约束的新个体用在可行域中随机产生的参数向量代替。

即:若 uji,G?1?x(jL)或者uji,G?1?x(jU),那么:

uji,G?1?randj[0,1]?(x(jU)?x(jL))?x(jL),(i=1,2,……,

NP;j=1,3,……,D) (6)

另外一个方法是根据式(6)重新产生试验向量,然后进行交叉操作,直到产生的新个体满足边界约束为止,但这样做效率较低。

本文来源:https://www.bwwdw.com/article/3d6d.html

Top