基本差分进化算法 1 基本差分进化算法的基本思想 DE 算法是一种基于实数编码的用于优化函数最小值的进化算法,是在求解有关切比雪夫多项式的问题时提出来的,是基于群体差异的进化计算方法。它的整体结构类似于遗传算法,一样都存在变异、交叉和选择操作,但是它又不同于遗传算法。与基本遗传算法的主要区别在于变异操作上,如: 1、传统的遗传算法采用二进制编码,而差分进化算法采用实数编码。 2、在遗传算法中通过两个父代个体的交叉产生两个子个体,而在差分进化算法中通过第两个或几个个体的差分矢量做扰动来产生新个体。 3、在传统的遗传算法中,子代个体以一定概率取代其父代个体,而在差分进化中新产生的个体只有当它比种群中的个体优良时才替换种群中的个体。 变异是DE 算法的主要操作,它是基于群体的差异向量来修正各个体的值,其基本原理是通过把种群中两个个体的向量差加权后,按一定的规划与第三个个体求和来产生新个体,然后将新个体与当代种群中某个预先决定的个体相比较,如果新个体的目标值优于与之相比较的个体的目标值,则在下一代中就用新个体取代,否则,旧个体仍保存下来。 差分进化算法其基本思想是:首先由父代个体间的变异操作构成变异个体;接着按一定的概率,父代个体与变异个体之间进行交叉操作,生成一试验个体;然后在父代个体与试验个体之间根据适应度的大小进行贪婪选择操作,保留较优者,实现种群的进化。 2 差分进化算法的基本操作 设当前进化代数为 t ,群体规模为 NP ,空间维数为 D ,当前种群为12( ),,,tttNPX txxx,12,,,TttttiiiiDxxxx为种群中的第i 个个体。在进化过程中,对于每个个体tix 依次进行下面三种操作。 2.1 变异操作 对于每个个体tix 按下式产生变异个体12(,,,)ttttTiiiiDvvvv,则 123() 1,2,,D ttttijr jr jr jvxF xxj (1) 其中111112(,,,)ttttTrrrr Dxxxx,222212(,,,)ttttTrrrr Dxxxx和333312(,,,)ttttTrrrr Dxxxx是群体中随机选择的三个个体,并且123rrri ;1tr jx,2tr jx和3tr jx分别为个体1r ,2r和3r 的第 j 维分量;F 为变异因子,一般取值于[0,2]。这样就得到了变异个体tiv 。 2.2 交叉操作 由变异个体tiv 和父代个体tix 得到试验个体12(,,,)ttttTiiiiDuuuu,则 tij if rand[0 1]CR or jj_randx if rand[0 1]CR and jj_randtijtijvu (2) 其中,[0...