并行差分进化算法

并行差分进化算法
并行差分进化算法

差分进化算法及应用研究

湖南大学 硕士学位论文 差分进化算法及应用研究 姓名:吴亮红 申请学位级别:硕士 专业:控制理论与控制工程指导教师:王耀南 20070310

硕士学位论文 摘要 论文首先介绍了智能优化算法的产生对现代优化技术的重要影响,阐述了智能优化算法的研究和发展对现代优化技术和工程实践应用的必要性,归纳总结了智能优化算法的主要特点,简要介绍了智能优化算法的主要研究内容及应用领域。 对差分进化算法的原理进行了详细的介绍,给出了差分进化算法的伪代码。针对混合整数非线性规划问题的特点,在差分进化算法的变异操作中加入取整运算,提出了一种适合于求解各种混合整数非线性规划问题的改进差分进化算法。同时,采用时变交叉概率因子的方法以提高算法的全局搜索能力和收敛速率。用四个典型测试函数进行了实验研究,实验结果表明,改进的差分进化算法用于求解混合整数非线性规划问题时收敛速度快,精度高,鲁棒性强。 采用非固定多段映射罚函数法处理问题的约束条件,提出了一种用改进差分进化算法求解非线性约束优化问题的新方法。结合差分进化算法两种不同变异方式的特点,引入模拟退火策略,使算法在搜索的初始阶段有较强的全局搜索能力,而在后阶段有较强的局部搜索能力,以提高算法的全局收敛性和收敛速率。用几个典型Benchmarks函数进行了测试,实验结果表明,该方法全局搜索能力强,鲁棒性好,精度高,收敛速度快,是一种求解非线性约束优化问题的有效方法。 为保持所求得的多目标优化问题Pareto最优解的多样性,提出了一种精英保留和根据目标函数值进行排序的多目标优化差分进化算法。对排序策略中目标函数的选择方式进行了分析和比较,并提出了一种确定进化过程中求得的精英解是否进入Pareto最优解集的阈值确定方法。用多个经典测试函数进行了实验分析,并与NSGA-Ⅱ算法进行了比较。实验结果表明,本文方法收敛到问题的Pareto前沿效果良好,获得解的散布范围广,能有效保持所求得的Pareto最优解的多样性。 提出了一种新的基于群体适应度方差自适应二次变异的差分进化算法。该算法在运行过程中根据群体适应度方差的大小,增加一种新的变异算子对最优个体和部分其它个体同时进行变异操作,以提高种群多样性,增强差分进化算法跳出局部最优解的能力。对几种典型Benchmarks函数进行了测试,实验结果表明,该方法能有效避免早熟收敛,显著提高算法的全局搜索能力。提出了将该改进算法用来整定不完全微分PID控制器最优或近似最优参数的新方法。为克服频域中常用的积分性能指标如IAE,ISE和ITSE的不足,提出了一种新的时域性能指标对控制器性能进行测试和评价。用三个典型的控制系统对提出的ASMDE-PID控制器进行了测试。实验结果表明,该方法实现容易,收敛性能稳定,计算效率高。与ZN,GA和ASA方法相比,DE在提高系统单位阶跃响应性能方面效率更高,鲁棒性更强。 为了提高差分进化算法的全局搜索能力和收敛速率,提出了一种双群体伪并行差分

基本差分进化算法

基本差分进化算法 基本模拟退火算法概述 DE 算法是一种基于群体进化的算法,其本质是一种基于实数编码的具有保优思想的贪婪遗传算法。由于DE 算法操作简单,寻优能力强,自提出以来引起了国内外学者的高度关注,目前已在电力系统优化调度、配网重构等领域得到了应用。 1、算法原理 DE 算法首先在N 维可行解空间随机生成初始种群P 0001[,,]N =X x x L ,其中000T 1[,,]i i iN x x =x L ,p N 为DE 种群规模。DE 算法的核心思想在于采取变异和交叉操 作生成试验种群,然后对试验种群进行适应度评估,再通过贪婪思想的选择机制,将原种群和试验种群进行一对一比较,择优进入下一代。 基本DE 算法主要包括变异、交叉和选择三个操作。首先,在种群中随机选取三个个体,进行变异操作: 1123()t t t t i r r r F +=+-v x x x 其中1t i +v 表示变异后得到的种群,t 表示种群代数,F 为缩放因子,一般取(0,2],它的大小可以决定种群分布情况,使种群在全局范围内进行搜索;1t r x 、2t r x 、3t r x 为从种群中随机抽取的三个不同的个体。 然后,将变异种群和原种群进行交叉操作: 1,R 1 ,,R () or () () and ()t i j t i j t i j v rand j C j randn i u x rand j C j randn i ++?≤=?=?>≠?? 其中t 1,i j u +表示交叉后得到的种群,()rand j 为[0,1]之间的随机数,j 表示个体的第j 个分量,R C 为交叉概率,()randn i 为[1,,]N L 之间的随机量,用于保证新个体至少有一维分量由变异个体贡献。 最后,DE 算法通过贪婪选择模式,从原种群和试验种群中选择适应度更高的个体进入下一代: 11t 11 ()() ()()t t t i i i i t t t i i i f f f f ++++?<=?≥?u u x x x u x 1()t i f +u 、()t i f x 分别为1t i +u 和t i x 的适应度。当试验个体1t i +u 的适应度优于t i x 时,

用于约束多目标优化问题的双群体差分进化算法

用于约束多目标优化问题的双群体差分进化算法 孟红云1 张小华2 刘三阳1 (1.西安电子科技大学 应用数学系,西安,710071; 2.西安电子科技大学 智能信息处理研究所,西安,710071) 摘 要:首先给出一种改进的差分进化算法,然后提出一种基于双群体搜索机制的求解约束多目标优化问题的差分进化算法.该算法同时使用两个群体,其中一个用于保存搜索过程中找到的可行解,另一个用于记录在搜索过程中得到的部分具有某些优良特性的不可行解,避免了构造罚函数和直接删除不可行解.此外,将本文算法、N SGA-Ⅱ和SPEA 的时间复杂度进行比较表明,NS GA-Ⅱ最优,本文算法与SPE A相当.对经典测试函数的仿真结果表明,与NSGA-Ⅱ相比较,本文算法在均匀性及逼近性方面均具有一定的优势. 关键字: 差分进化算法;约束优化问题;多目标优化问题; 中图分类号:TP18 1 引言 达尔文的自然选择机理和个体的学习能力推动进化算法的出现和发展,用进化算法求解优化问题已成为一个研究的热点[1-3].但目前研究最多的却是无约束优化问题.然而,在科学研究和工程实践中,许多实际问题最终都归结为求解一个带有约束条件的函数优化问题,因此研究基于进化算法求解约束优化问题是非常有必要的.不失一般性,以最小化问题为例,约束优化问题(Constrai ned Opti mizatio n Prob lem ,COP )可定义如下: )(COP ()()()()q j x h p i x g t s x f x f x f x F j i k R x n ,,1,0)( ,,1,0)( ..,,,)(min 21 ===≤=∈ (1) 其中)(x F 为目标函数,)(),(x h x g j i 称为约束条件,n n R x x x x ∈=),,,(21 称为n 维决策 向量.将满足所有约束条件的解空间S 称为(1)的可行域.特别的,当1=k 时,(1)为单目标优化问题;当1>k 时,(1)为多目标优化问题.)(x g i 为第i 个不等式约束,)(x h j 是第j 个等式约束.另一方面,对于等式约束0)(=x h j 可通过容许误差(也称容忍度)0>δ将它转化为两个不等式约束: ?????≤--≤-0 )(0)(δδx h x h j j (2) 故在以后讨论问题时,仅考虑带不等式约束的优化问题.进一步,如果x 使得不等式约束0)(=x g i ,则称约束()x g i 在x 处是积极的.在搜索空间S 中,满足约束条件的决策变量x 称为可行解,否则称为不可行解. 定义1(全局最优解)() **2*1*,,,n x x x x =是COP 的全局最优解,是指S x ∈*且)(*x F 不劣于可行域内任意解y 所对应的目标函数)(y F ,表示为)( )(* y F x F . 对于单目标优化问题,)( )(*y F x F 等价为)()(*y F x F ≤,而对于多目标优化问题是指不存在y ,使得)(y F Pa re to 优于)(*x F . 目前,进化算法用于无约束优化问题的文献居多,与之比较,对约束优化问题的研究相对

差分进化算法-入门

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

差分进化算法介绍

1.差分进化算法背景 差分进化(Differential Evolution,DE)是启发式优化算法的一种,它是基于群体差异的启发式随机搜索算法,该算法是Raincr Stom和Kenneth Price为求解切比雪夫多项式而提出的。差分进化算法具有原理简单、受控参数少、鲁棒性强等特点。近年来,DE在约束优化计算、聚类优化计算、非线性优化控制、神经网络优化、滤波器设计、阵列天线方向图综合及其它方面得到了广泛的应用。 差分算法的研究一直相当活跃,基于优胜劣汰自然选择的思想和简单的差分操作使差分算法在一定程度上具有自组织、自适应、自学习等特征。它的全局寻优能力和易于实施使其在诸多应用中取得成功。 2.差分进化算法简介 差分进化算法采用实数编码方式,其算法原理同遗传算法相似刚,主要包括变异、交叉和选择三个基本进化步骤。DE算法中的选择策略通常为锦标赛选择,而交叉操作方式与遗传算法也大体相同,但在变异操作方面使用了差分策略,即:利用种群中个体间的差分向量对个体进行扰动,实现个体的变异。与进化策略(Es)采用Gauss或Cauchy分布作为扰动向量的概率密度函数不同,DE使用的差分策略可根据种群内个体的分布自动调节差分向量(扰动向量)的大小,自适应好;DE 的变异方式,有效地利用了群体分布特性,提高了算法的搜索能力,避免了遗传算法中变异方式的不足。 3.差分进化算法适用情况 差分进化算法是一种随机的并行直接搜索算法,最初的设想是用于解决切比雪夫多项式问题,后来发现差分进化算法也是解决复杂优化问题的有效技术。它可以对非线性不可微连续空间的函数进行最小化。目前,差分进化算法的应用和研究主要集中于连续、单目标、无约束的确定性优化问题,但是,差分进化算法在多目标、有约束、离散和噪声等复杂环境下的优化也得到了一些进展。 4.基本DE算法 差分进化算法把种群中两个成员之间的加权差向量加到第三个成员上以产生新的参数向量,这一操作称为“变异”。然后,变异向量的参数与另外事先确

差分进化算法-入门

差分进化算法-入门

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

差分进化算法综述概况

差分进化算法(DE)[1]是Storn 和Price 在1995 年提出的一种基于种群差异的进化算法,DE是一种随机的并行搜索算法。差分进化计算和其他进化计算算法一样,都是基于群体智能理论的优化算法,利用群体内个体之间的合作与竞争产生的群体智能模式来指导优化搜索的进行。与其他进化计算不同的是,差分进化计算保留了基于种群的全局搜索策略,采用实数编码、基于差分的简单变异操作和一对一的竞争生存策略,降低了进化操作的复杂性。差分进化计算特有的进化操作使得其具有较强的全局收敛能力和鲁棒性,非常适合求解一些复杂环境中的优化问题。 最初试图使用向量差进行向量种群的混洗,以此来解决切比雪夫多项式适应性问题。DE 通过种群内个体间的合作与竞争来实现对优化问题的求解,其本质上是一种基于实数编码的具有保优思想的进化算法。该算法实现技术简单,在对各种测试问题的实验中表现优异,已经成为近年来进化算法研究中的热点之一。 差分进化算法基本原理 基本的差分进化算法是基于候选方案种群的算法,在整个搜索空间内进行方案的搜索,通过使用简单的数学公式对种群中的现有方案进行组合实现的。如果新的方案有所改进,则被接受,否则被丢弃,重复这一过程直到找到满意的方案。 设 f 是最小化适应度函数,适应度函数以实数向量的形式取一个候选方案作为参数,给出一个实数数值作为候选方案的输出适应值。其目的是在搜索空间的所有方案p 中找到m 使得f(m) ≤f(p)。最大化是找到一个m 使得f(m) ≥f(p)。 设X=(x1, x2,…, xn)∈?n是种群中一个个体,基本的差分进化算法如下所述: ?在搜索空间中随机地初始化所有的个体。 ?重复如下操作直到满足终止条件(最大迭代数或者找到满足适应值的个体) o 对于种群中的每个个体: ●随机地从种群中选择三个彼此不同的个体a,b 和c。 ●选择一个随机索引R ∈{1, ..., n},n 是被优化问题的维数。 ●通过对每个i ∈{1, ..., n}进行如下的迭代计算可能的新个体Y = [y1, ..., yn] 生成一 个随机数ri~U(0,1); ●如果(i=R)或者(ri3。差分进化算法作为一种新出现的优化算法在实际应用中表现出了优异的性能,被广泛应用到不同的领域,已经成为近年来优化算法的研究的热点之一。研究差分进化算法,探索提高差分进化算法性能的新方法,并将其应用到具体工程问题的解决中,具有重要的学术意义和应用价值。 差分进化计算的群体智能搜索策略分析 1 个体行为及个体之间信息交互方法分析 差分进化的个体表示方式与其他进化计算相同,是模拟生物进化中的关键因素,即生物的染色体和基因,构造每个解的形式,构成了算法的基础。一切的寻优操作都是在个体的基础上进行的,最优个体是搜寻到的最优的解。 差分进化的个体行为主要体现在差分变异算子和交叉算子上。

基于TSP的改进差分进化算法

龙源期刊网 https://www.360docs.net/doc/d62698380.html, 基于TSP的改进差分进化算法 作者:朱宇航伏楠 来源:《硅谷》2012年第17期 摘要: 针对TSP问题,提出一种改进的差分进化算法:利用贪心算法产生初始种群,定义特有的编码匹配函数进行变异操作,排序法修复变异个体,并采用顺序交叉,在变异操作之后,加入新的选择机制,防止交叉操作破坏变异出的优良个体,实验结果表明改进后的差分进化算法能够高效地解决TSP问题,体现良好的优化性能。 关键词: 差分进化算法;TSP;进化算法 0 引言 差分进化算法(DE:Differential Evolution)是一种模拟自然进化法则的仿生智能计算方法,在解决复杂的全局优化问题方面,DE的性能更加优秀,过程也更为简单,受控参数少[1],但由于DE 特有的差分操作的限制,DE被成功应用的领域多集中在连续优化领域,在离散优化领域的应用还相对较少[2]。 TSP(旅行商问题)作为典型的离散优化问题,是解决很多实际问题的最终转化形式,同时也是著名的NP难题,在短时间内求出其最优解非常困难,现有解法[3-4]在求解中都各有缺点.因此,研究将DE经过必要的改进后应用于TSP的求解具有重要意义。 1 改进DE算法 1.1 编码及匹配函数 适应度定义为:负的路径长度,使得路径长度越短,适应度值越大。 1.2 贪婪初始化 为提高初始种群的质量,采用贪婪的初始化方法.对于初始种群的每个个体,产生方法如下: step1:初始化待走城市列表List为包含所有城市的列表; step2:随机选择一个城市A作为起点,并将此点作为当前城市T,从List中移除; step3:从List中选择距离城市T最近的城市作为新的当前城市T,并将T从List中移除; step4:判断List是否为空,若是,则结束;若否,则转step3。

基于改进差分进化算法的烧结矿配料优化

基于改进差分进化算法的烧结矿配料优化 李凯斌, 卢建刚, 吴燕玲, 孙优贤 浙江大学工业控制技术国家重点实验室,杭州(310027) E-mail :kbli@https://www.360docs.net/doc/d62698380.html, 摘 要:本文针对差分进化算法(differential evolution algorithm)存在的早熟问题和停滞现象作了改进并把改进的算法应用于烧结矿配料优化,用matlab 编程,仿真结果表明符合实际生产工艺要求,证明了改进的差分进化算法对烧结矿配料优化的有效性,从而指出了改进的差分进化算法在配料优化中的应用价值。 关键词:差分进化,停滞,烧结矿,配料优化 中图分类号:TF541 1.前言 钢铁企业中炼铁系统能耗占整个钢铁生产能耗的60% ~70% ,生产成本也占54% ~58%,所占比重都较大[1]。而烧结又是生产高炉炼铁精料的关键工序,烧结生产中,可以将不同原料,熔剂进行精确配料,以调整烧结矿化学成分,满足高炉对炉料成分的要求。烧结矿的优化配料是一项极其重要的工作,配料的目的在于:根据不同种类的铁矿石的化学成分,将原料矿进行合理的搭配,使混匀矿的化学成分符合烧结生产的要求。烧结矿配料优化从上个世纪80年代就开始研究,最初运用的是线性规划方法,优化对象也仅限于烧结矿的化学成分[2]。近几十年来,进化算法发展十分迅速,其应用也越来越广泛。其中由Rainer Storn 和Kenneth Price 提出的差分进化算法[3] (differential evolution ,简称DE)作为一种较新的全局优化算法,以其收敛性好,模型简单,容易实现,控制参数比较少得到广泛应用。在日本召开的第一届国际禁化优化计算竞赛(ICEO)中[6],DE 表现突出,已经成为进化算法(EA)的一个重要分支。近几年来,DE 在约束优化计算,模糊控制器优化设计,神经网络优化,滤波器设计等方面得到了广泛应用。本文运用改进的差分进化算法对烧结矿配料进行优化。 2.差分进化算法 DE 作为一种较新的全局搜索算法与遗传算法,进化规划,进化策略不同,它是由父代个体差分矢量构成变异算子,然后按一定交叉概率,父代个体与变异个体进行交叉,生成试验体,最后在父代与试验体之间根据适应度选择个体。 2.1 差分进化原理 (1)选定种群规模N ,加权因子F ∈[0,2]最大进化代数MAX G ,杂交率CR ∈[0,1] (2)生成初始种群0W :{w 0 i (i=1,2,…N)},令进化代数G=0 (3)对G i w 执行(4)~(6)步,生成G+1代 (4)变异:1G i w +?=G i w +F(G j w -G k w )其中1≤j ,k ≤N ,且i ,j ,k 互异 (5)杂交:1G ij w +=1()() G ij G ij w random CR w random CR +?>??≤??? 其中G ij w 为第G 代第i 个个体的第j 个基因,CR 为 杂交率,random ∈[0,1] (6)选择:

基本差分进化算法

基本差分进化算法 (1)初始化。 DE 利用NP 个维数为D 的实数值参数向量作为每一代的种群,每个个体表示为: X i ,G (i=1,2,……,NP) (1) 式中:i —— 个体在种群中的序列;G ——进化代数;NP — —种群规模,在最小化过程中NP 保持不变。 为了建立优化搜索的初始点,种群必须被初始化。通常寻找初始种群的一个方法是从给定边界约束内的值中随机选择。在DE 研究中,一般假定对所有随机初始化种群均符合均匀概率分布。设参数变量的界限为 )( )( U j j L j X X X << ,则: )( )( )( 0,)()`1,0(L j L j U j ji X X X rand X +-?= (i=1,2,……, NP ;j=1,3,……,D ) (2) 式中:rand[0,1]——在[0,1]之间产生的均匀随机数。 如果预先可以得到问题的初步解,初始种群也可以通过对初步解加入正态分布随机偏差来产生,这样可以提高重建效果。 (2)变异。 对于每个目标向量 X i ,G (i=1,2,……,NP),基本DE 算法的变 异向量如下产生: )(,3,2,11,G r G r G r G i x x F X v -?+=+ (3) 其中,随机选择的序号r1,r2和r3互不相同,且r1,r2和r3与目标向

量序号i 也应不同,所以须满足NP ≥4。变异算子F ∈[0,2]是一个实常数因数,控制偏差变量的放大作用。 (3)交叉。 为了增加干扰参数向量的多样性,引入交叉操作。则试验向量变为: ),...,,(1,1,21,11,++++=G Di G i G i G i u u u u (4) ???=+++1 ,1,1,G ji G ji G ji X v u )(rnb CR (j) b rand rnbr(i))(rand i r j j CR j b ≠>=≤且如果或者如果 (i=1,2,……,NP ;j=1,3,……,D ) (5) 式中:randb(j)——产生[0,1]之间随机数发生器的第j 个估计值;rnbr(i)∈ 1,2,? ,D ——一选择的序列,用它来确保1,+G i u 至少从1,+G i u ;获得一个参数;CR ——交叉算子,取值范围为[0,1]。 (4)选择。 为决定试验向量1,+G i u ,是否会成为下一代中的成员,DE 按照贪婪 准则将试验向量与当前种群中的目标向量进行比较。如果目标函数要被最小化,那么具有较小目标函数值的向量将在下一代种群中赢得一席地位。下一代中的所有个体都比当前种群的对应个体更佳或者至少一样好。注意在DE 选择程序中试验向量只与一个个体相比较,而不是与现有种群中的所有个体相比较。 (5)边界条件的处理。 在有边界约束的问题中,确保产生新个体的参数值位于问题的可行域中是必要的,一个简单方法是将不符合边界约束的新个体用在可行域中随机产生的参数向量代替。

差分进化算法程序-参数经过精心调整收敛很快

%差分进化算法的程序 %来自中南信息院 function [xb,fbest]=f_DE(fun,lx,lb,ub,Np,maxkss) %lx为变量维数,lb为下界,ub为上界约束条件,maxkss为最大迭代次数,Np为种群规模%fun是目标函数,fun函数的输入为行向量 %xb为最优解,fbest为最优解目标函数值 %lb,ub以行向量的形式输入 warning off% minpara=lb; maxpara=ub; Pro=@(x)min(maxpara,max(minpara,x)); %Np=50;%种群规模 CR=0.7;%变异系数 K=0.5;% Px=[]; for k=1:Np;Px(k,:)=Pro(minpara+rand(1)*(maxpara-minpara));end; fPx=[]; for i=1:Np; try fPx(i)=fun(Px(i,:));catch fPx(i)=Inf;end; end; for kss=1:maxkss; %disp(fPx) [fbest,lib]=min(fPx);xb=Px(lib,:);disp(fbest), Pv=[];vary=1; for i=1:Np; sb=randperm(Np); r1=sb(1);r2=sb(2);r3=sb(3); xr1=Px(r1,:);xr2=Px(r2,:);xr3=Px(r3,:); if vary==1;vi=xb+K*(xr1-xr2); elseif vary==2;vi=xr1+K*(xr2-xr3); elseif vary==3;xi=Px(i,:);vi=xi+K*(xb-xi)+K*(xr1-xr2); end; vi=Pro(vi); Pv(i,:)=vi; end; Pu=Px; for i=1:Np;%rnbri=randint(1,1,[1,lx]); rnbri=round(rand()*lx); for j=1:lx; if (rand(1)<=CR)|(j==rnbri);Pu(i,j)=Pv(i,j);end; end;

差分演化算法matlab程序

function DE(Gm,F0) %差分进化算法程序基本程序 %F是变异率F0=0.6 Gm=1000; %最大迭代次数 Np=100; %种群规模 CR=0.9; %杂交参数 G=1;%初始化代数 D=0;%所求问题的维数 eps=1e-9;%精度 ge=zeros(1,Np);%各代的最优值 bestx=zeros(Np,D);%各代的最优解 %产生初始种群 %xmin=-10;xmax=100;%带负数的下界 xmin=-5.12;xmax=5.12; %-----函数值计算----------- function result=DEMB(XX); sol=XX; result=0; for i=1:D result=result+sol(i)^2; %y=sum(XX.^2-10.*cos(2.*pi.*XX)+10); end end %--------------------------- X0=(xmax-xmin)*rand(Np,D)+xmin; X=X0; %%%%%%%%%%变异操作 X1new=zeros(Np,D);%初始化 X1_new=zeros(Np,D);%初始化 X1=zeros(Np,D);%初始化 value=zeros(1,Np); while G<=Gm for i=1:Np %产生j,k,p三个不同的数 a=1;b=Np; dx=randperm(b-a+1)+a-1; j=dx(1);k=dx(2);p=dx(3); if j==i j=dx(4); elseif k=i k=dx(4); elseif p==i p=dx(4); end %变异算子 F=0.5; bon=X(p,:)+F*(X(j,:)-X(k,:)); if (bon>xmin)&(bon

差分进化算法的算法设计研究

差分进化算法的算法设计研究 优化技术是一种以数学为基础,用于求解各种工程问题优化解的应用技术。而作为一种优化算法,差分进化算法因其有效性,在现代优化技术和工程实践应用中的作用越来越凸显。阐述了差分进化算法的基本概念,对差分简化算法的原理进行了介绍,对算法步骤进行了论述,并结合一物流配送路径优化例子,重点围绕该算法的设计进行分析,为差分进化算法的应用提供了思路。 标签:差分进化算法;算法设计;应用 0 引言 差分进化算法(Differential Evolution ,DE)是一种新兴的进化计算技术。它是由R.Storn 和K.Price于1995 年提出的,最初的设想是用于解决切比雪夫多项式问题,后来发现DE 也是解决复杂优化问题的有效技术。DE 特有的记忆能力使其可以动态跟踪当前的搜索情况,以调整其搜索策略,具有较强的全局收敛能力和鲁棒性,且不需要借助问题的特征信息,适于求解一些利用常规的数学规划方法所无法求解的复杂环境中的优化问题。近年来,DE 已经在许多领域得到了应用,譬如人工神经元网络、化工、电力、机械设计、信号处理、路径优化等。 1 差分进化算法概述 1.1 概念 差分进化算法是一种强调在全局中寻找最优解的技术,即通过种群内个体间的合作与竞争来实现对优化问题的求解,其本质是一种基于实数编码的具有保优思想的贪婪遗传算法,是一种以“适者生存”的理念来进行“优胜劣汰”的智能型算法,同时,差分进化算法在对问题的求解过程中采用了并行搜索的实现方式,通过该方式,大大减少了对问题求解过程中所需要的时间。差分进化算法通过非常简单的算法结构,趋于智能化的适应条件判断来进行新一代种群的生成,并最终通过适应条件判断来选出全局的最优方案。 1.2 优点 差分进化计算是一种具有鲁棒性的方法,能适应不同的环境不同的问题,而且在大多数情况下都能得到比较满意的有效解。它对问题的整个参数空间给出一种编码方案,而不是直接对问题的具体参数进行处理,不是从某个单一的初始点开始搜索,而是从一组初始点搜索。搜索中用到的是目标函数值的信息,可以不必用到目标函数的导数信息或与具体问题有关的特殊知识。因而进化算法具有广泛的应用性,高度的非线性,易修改性和可并行性。 2 差分进化算法的原理

差分进化算法(DE)进行最优化处理

%% Differential Evolution Algorithm(DE) 差分演化算法 %% min f(x,y)=3*(1-x).^2.*exp(-x.^2-(y+1).^2)-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)-exp(-(x+1).^2-y.^2)/3; %% Clear screen clear all; close all; clc; %% 初始化(Initialization) tic; %程序运行计时 error=1e-3; %允许误差 popsize=30; %种群数量 maxgen=50; %最大迭代次数(最大进化代数) nvars=2; %决策变量个数 F=0.5; %变异缩放因子 CRmin=0.2;CRmax=0.8; %交叉概率因子最值(初始全局搜索能力强,进化后期局部搜索能力强) k=1; %初始化迭代次数 x=-3+(3+3)*rand(popsize,nvars); %初始化x变量 best_trace=[]; %存储寻优路径 %% 目标函数(Objective function)

%用虚拟函数定义适应度函数以便将子函数文件与主程序文件放在一起 %目标函数为:z=3*(1-x).^2.*exp(-x.^2-(y+1).^2)-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)-exp(-(x+1).^2-y.^2)/3 %虚拟函数命令定义适应度函数如下 fitness=@(x)3*(1-x(1))^2*exp(-x(1)^2-(x(2)+1)^2)-10*(x(1)/5-x(1)^3-x(2)^5).*exp(-x(1)^2-x(2)^2)-exp(-(x(1)+1)^2-x(2)^2)/3; %% 主程序(Main procedure) %% Step1 对初始种群进行评价(适应度函数值) f=zeros(1,popsize); for i=1:popsize f(i)=fitness(x(i,:)); end [d1,d2]=min(f); best_fx=x(d2,:); best_fval=d1; best_trace=[best_trace best_fval]; if abs(best_fval)<=error return; end

差分进化算法代码

[plain]view plaincopy 1.function DE(Gm,F0) 2. 3.t0 = cputime; 4.%差分进化算法程序 5.%F0是变异率 %Gm 最大迭代次数 6.Gm = 10000; 7.F0 = 0.5; 8.Np = 100; 9.CR = 0.9; %交叉概率 10.G= 1; %初始化代数 11.D = 10; %所求问题的维数 12.Gmin = zeros(1,Gm); %各代的最优值 13.best_x = zeros(Gm,D); %各代的最优解 14.value = zeros(1,Np); 15. 16.%产生初始种群 17.%xmin = -10; xmax = 100;%带负数的下界 18.xmin = -5.12; 19.xmax = 5.12; 20.function y = f(v) 21. %Rastrigr 函数 22.y = sum(v.^2 - 10.*cos(2.*pi.*v) + 10); 23.end 24. 25.X0 = (xmax-xmin)*rand(Np,D) + xmin; %产生Np个D维向量 26.XG = X0; 27. 28.%%%%%%%%%%%%%----这里未做评价,不判断终止条件----%%%%%%%%%%%%%%%%%%%%%%%% 29. 30.XG_next_1= zeros(Np,D); %初始化 31.XG_next_2 = zeros(Np,D); 32.XG_next = zeros(Np,D); 33. 34.while G <= Gm 35.G 36.%%%%%%%%%%%%%%%%%%%%%%%%----变异操作----%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37. for i = 1:Np 38. %产生j,k,p三个不同的数 39. a = 1; 40. b = Np; 41. dx = randperm(b-a+1) + a- 1; 42. j = dx(1); 43. k = dx(2);

差分进化算法-入门

差分进化算法- 入门 基本差分进化算法 1基本差分进化算法的基本思想 DE算法是一种基于实数编码的用于优化函数最小值的进化算法,是在求解 有关切比雪夫多项式的问题时提出来的,是基于群体差异的进化计算方法。它的整体结构类似于遗传算法,一样都存在变异、交叉和选择操作,但是它又不同于遗传算法。与基本遗传算法的主要区别在于变异操作上,如: 1、传统的遗传算法米用二进制编码,而差分进化算法米用实数编码。 2、在遗传算法中通过两个父代个体的交叉产生两个子个体,而在差分进化算法中通过第两个或几个个体的差分矢量做扰动来产生新个体。 3、在传统的遗传算法中,子代个体以一定概率取代其父代个体,而在差分进化中新产生的个体只有当它比种群中的个体优良时才替换种群中的个体。 变异是DE算法的主要操作,它是基于群体的差异向量来修正各个体的值,其基本原理是通过把种群中两个个体的向量差加权后,按一定的规划与第三个个体求和来产生新个体,然后将新个体与当代种群中某个预先决定的个体相比较,如果新个体的目标值优于与之相比较的个体的目标值,则在下一代中就用新个体取代,否则,旧个体仍保存下来。 差分进化算法其基本思想是:首先由父代个体间的变异操作构成变异个体;接着按一定的概率,父代个体与变异个体之间进行交叉操作,生成一试验个体;然后在父代个体与试验个体之间根据适应度的大小进行贪婪选择操作,保留较优者,实现种群的进化。 2差分进化算法的基本操作 设当前进化代数为t,群体规模为NP,空间维数为D,当前种群为X(t)

x ;,x ;,川,X N P ,x ; x i t 1,x i t 2^|,x i t D 为种群中的第i 个个体。在进化过程 中,对于每个个体x :依次进行下面三种操作。 2.1变异操作 对于每个个体X :按下式产生变异个体V “1,也,|||";)丁,则 V : £j F (x ;j 心)j 1,2,|||,D (1) 其中 x :阳乂2」||凡)丁,X ; (乂21公;22,|||心)丁 和 x r 3 (X :31,X ;32,|||,X ;3D )T 是群 体中随机选择的三个个体,并且r 1 r 2 r 3 i ; xj j ,x ;j 和x ;3 j 分别为个体口,r 2 和r 3的第j 维分量;F 为变异因子,一般取值于[0,2]。这样就得到了变异个体V ;。 2.2交叉操作 由变异个体V 和父代个体X :得到试验个体u : (u 1 U i t 2^|,U i t D )T ,则 v : if ran d[0 1] CR or j j_rand X ; if ra nd[0 1] CR and j j_rand 其中,rand [0,1]是[0,1 ]间的随机数;CR 是范围在[0,1 ]间的常数,称为交叉因子, CR 值越大,发生交叉的可能性就越大;j_rand 是在[1,D ]随机选择的一整数, 它保证了对于试验个体u t 至少要从变异个体v ;中获得一个元素。以上的变异操 作和交叉操作统称为繁殖操作。 2.3选择操作 差分进化算法采用的是“贪婪”选择策略,即从父代个体x t 和试验个体u t 中 选 择一个适应度值最好的作为下一代的个体 x t+1 ,选择操作为: t 1 X : if fit ness (X :) fit ness(u :) x t ⑶ u i otherwise 其中,fitness()为适应度函数,一般以所要优化的目标函数为适应度函数。本 文的适应度函数如无特殊说明均为目标函数且为求函数极小值。 t U j

相关文档
最新文档