实数编码量子进化算法
- 格式:pdf
- 大小:696.42 KB
- 文档页数:4
量子计算中的量子进化算法及其应用量子计算是一种基于量子力学原理的计算模型,可以利用量子比特的并行性和叠加性,在某些问题上实现更高效的计算。
量子进化算法是量子计算中一类重要的算法,其核心思想是通过模拟量子系统的演化过程,从而搜索问题的解空间。
量子进化算法基于量子性质的特点,与经典计算相比具有很大的优势。
在经典计算中,搜索问题的解空间需要逐个检查,时间复杂度随着问题规模呈指数增长。
而在量子进化算法中,可以利用量子比特的叠加性,在一次计算过程中并行地搜索多个解,从而大大加快搜索速度。
在量子进化算法中,量子系统演化的过程通过量子逻辑门来实现。
量子逻辑门对量子比特进行操作,改变其量子态,从而实现量子系统的演化。
在量子进化算法中,常用的量子逻辑门包括Hadamard门、CNOT门和Swap门等。
这些逻辑门的组合可以构建出复杂的量子进化算法,用于解决不同类型的问题。
量子进化算法在很多领域都有广泛的应用。
其中一个重要的应用是优化问题的求解。
优化问题是在给定的约束条件下,寻找最优解的问题。
经典计算中,优化问题往往需要耗费大量的时间和资源。
而量子进化算法可以通过量子并行性,同时搜索多个解,从而提高求解效率。
该算法已经在组合优化问题、机器学习中的参数优化等领域取得了显著的成果。
另一个重要的应用是模拟量子系统。
量子系统的演化过程很难通过经典计算模拟,因为量子系统的状态是高度复杂的,需要大量的计算资源。
而量子进化算法可以利用量子并行性,在一次计算过程中模拟量子系统的演化,从而大大提高了模拟效率。
这个应用对于研究量子力学的基本原理和理解量子系统的行为具有重要的意义。
除了以上应用,量子进化算法还可以用于解决组合优化问题、图论问题、排队论问题等。
这些问题在实际应用中往往非常复杂,需要考虑多个因素和约束条件,经典计算很难在合理的时间内找到最优解。
而量子进化算法通过利用量子并行性,可以在较短的时间内搜索到较优解,从而在实际问题中发挥重要作用。
差分进化算法DE和粒⼦群算法PSO1.差分进化算法(DE)DE与GA的主要区别在变异步骤。
对于每个⽬标向量 X i,G (i=1,2,……,NP),基本DE算法的变异向量如下产⽣其中,随机选择的序号r1,r2和r3互不相同,且r1,r2和r3与⽬标向量序号i也应不同,所以须满⾜NP≥4。
变异算⼦F∈[0,2]是⼀个实常数因数,控制偏差变量的放⼤作⽤。
实现如下。
由于此⽬标过于简单,即便去掉交叉步,也能得到不错的结果。
# coding: utf8import numpy as npN=20 # 编码长度MAX=10.0/(2**(N)) # [0,10), 区间内有两个最⼤值(17)的点NUM=500 # 种群数量def f(x): # 函数return 10*np.sin(5*x) + 7*np.cos(4*x)def new(num=NUM,len=N): # 随机⽣成return np.random.randint(1,2**len,num)def n2b(nums): # 数字编码return [bin(i)[2:].zfill(N) for i in nums]def b2n(bits): # 解码return [int(i,base=2) for i in bits]def fit(nums,s_rate=0.15,r_rate=0.05): # 适应度和选择n=len(nums)sn=int(n*s_rate)on=int(n*r_rate)np.random.shuffle(nums)outs=nums[:on]res=[f(i*MAX) for i in nums] # 适应度选择和随机选择,可能有重复temp=np.argsort(res)others=[nums[i] for i in temp[-sn:]]outs=np.concatenate((outs, others))return outs,nums[temp[-1]]*MAX,res[temp[-1]]def repo(fits,mode='DE'): # 扩增,此处5倍;增加了进化算法n=len(fits)pt=np.random.randint(0,n,4*n)pt=np.reshape(pt,(2*n,2))bits=n2b(fits)new_bits=bitsfor i in pt:b1,b2=exchange([bits[j] for j in i])new_bits.append(b1)new_bits.append(b2)if mode=='DE':return dmut(new_bits)return mut(new_bits)def exchange(bits,change_rate=0.4,mode='cross'): #交换,提供了随机交换和节点互换n=int(change_rate*N)if mode=='rand':rn=range(N)new_bits=[list(i) for i in bits]for i in rn[:n]:new_bits[0][i] = bits[1][i]new_bits[1][i] = bits[0][i]new_bits=[''.join(i) for i in new_bits]else:n = int(change_rate * N)new_bits = [list(i) for i in bits]new_bits[0][:n] = bits[1][:n]new_bits[1][:n] = bits[0][:n]new_bits = [''.join(i) for i in new_bits]return new_bitsdef mut(bits,mut_rate=0.03): # 变异length=len(bits)*Nn = int(mut_rate * length)if n<1: n=1rn = range(length)np.random.shuffle(rn)for i in rn[:n]:j=int(bits[i/N][i%N])bits[i/N]=swap(bits[i/N],i%N,str(1-j)) return bitsdef swap(str,i,char): # 字符串交换str2=list(str)str2[i]=charreturn''.join(str2)def dmut(bits,mut_rate=1.0,F=0.5): # 差分变异 length = len(bits)n = int(mut_rate * length)if n < 1: n = 1rn = np.random.randint(0,length,3*n)rn = np.reshape(rn,(n,3))nums=b2n(bits)for i in rn:nums[i[0]]+=int(F*(nums[i[1]]-nums[i[2]])) if nums[i[0]]<0:nums[i[0]]*=-1return n2b(nums)def train(iter=50): # 训练⼊⼝nums=new()outs,x,fx=fit(nums)for i in range(iter):new_bits = repo(outs)nums=b2n(new_bits)outs,x,fx=fit(nums)print i,x,fxif'__main__==main()':train()"""0 1.57093048096 16.99999674251 1.57070159912 16.99999837582 1.57070159912 16.99999837583 1.57086372375 16.99999917784 1.57078742981 16.99999998575 1.57078742981 16.99999998576 1.57079696655 16.99999999997 1.57079696655 16.99999999998 1.57079696655 16.99999999999 1.57079696655 16.999999999910 1.57079696655 16.999999999911 1.57079696655 16.999999999912 1.57079696655 16.999999999913 1.57079696655 16.999999999914 1.57079696655 16.999999999915 1.57079696655 16.999999999916 1.57079696655 16.999999999917 1.57079696655 16.999999999918 1.57079696655 16.999999999919 1.57079696655 16.999999999920 1.57079696655 16.999999999921 1.57079696655 16.999999999922 1.57079696655 16.999999999923 1.57079696655 16.999999999924 1.57079696655 16.999999999925 1.57079696655 16.999999999926 1.57079696655 16.999999999927 1.57079696655 16.999999999928 1.57079696655 16.999999999929 1.57079696655 16.999999999930 1.57079696655 16.999999999931 1.57079696655 16.999999999932 1.57079696655 16.999999999933 1.57079696655 16.999999999934 1.57079696655 16.999999999935 1.57079696655 16.999999999936 1.57079696655 16.999999999937 1.57079696655 16.999999999938 1.57079696655 16.999999999939 1.57079696655 16.999999999940 1.57079696655 16.999999999941 1.57079696655 16.999999999942 1.57079696655 16.999999999943 1.57079696655 16.999999999944 1.57079696655 16.999999999945 1.57079696655 16.999999999946 1.57079696655 16.999999999947 1.57079696655 16.999999999948 1.57079696655 16.999999999949 1.57079696655 16.9999999999"""2.粒⼦群算法描述⼀群鸟在随机的搜索⾷物。
量子进化算法
量子进化算法(Quantum Evolutionary Algorithm,QEA)是一种基
于量子计算的进化算法,它结合了量子计算的优势和进化算法的优势,能
够在解决复杂问题时提供更好的性能。
QEA的基本思想是将进化算法中的
个体编码和进化操作用量子比特和量子门来实现。
在QEA中,每个个体都
被编码为一个量子态,进化操作则通过量子门来实现。
这种编码方式可以
使得QEA在搜索解空间时具有更好的并行性和全局搜索能力。
QEA的主要
步骤包括初始化、量子编码、量子进化、量子解码和评估。
在初始化阶段,QEA会生成一组初始个体。
在量子编码阶段,QEA将每个个体编码为一个
量子态。
在量子进化阶段,QEA通过量子门来实现进化操作,包括量子变
异和量子交叉。
在量子解码阶段,QEA将量子态转换为经典的二进制编码。
最后,在评估阶段,QEA会对每个个体进行评估,并选择适应度最高的个
体作为下一代的父代。
QEA在解决复杂问题时具有很好的性能,尤其是在
处理高维、非线性和多峰问题时。
它可以通过量子并行性和全局搜索能力
来加速搜索过程,并且可以避免陷入局部最优解。
因此,QEA已经被广泛
应用于优化、机器学习、数据挖掘等领域。
python遗传算法实数编码遗传算法是一种基于生物进化理论的智能优化算法。
它通过不断迭代,通过“进化”过程中的遗传变异、交叉和选择筛选,获取到最优的解集。
实数编码是遗传算法中常用的编码方式之一,它的基本思想是将优化问题中的实数参数转换成染色体中的基因,从而对这些实数参数进行优化。
在实数编码实现遗传算法时,需要结合实际问题给出适应度函数、交叉概率、变异概率等参数。
本文将基于Python语言,介绍实数编码遗传算法的实现过程。
一、实数编码实数编码是一种将实数参数转化为遗传算法所需的二进制基因串的方法。
以单变量问题为例,假设参数x∈[a,b],可以将x分为n个离散的点,如上图所示。
然后我们可以将这n个点转换成一组二进制串,从而实现实数编码。
假设精度为2的n次方,即每个二进制位表示的数值为(b-a)/(2^(n)-1),则可以根据以下公式将原始实数x转换成二进制串c:c=(x−a)/(b−a)×(2^n−1)例如,当n=8时,假设a=0,b=10,对于x=7,我们可以得到c=11100110。
二、适应度函数在实数编码的遗传算法中,需要将问题的优化目标转化为适应度函数。
适应度函数的设计是整个优化过程中最为重要的一环。
一般来说,适应度函数应该与实际问题有密切的联系,随着迭代次数的增加,适应度值应该越来越优。
在实数编码的遗传算法中,适应度函数一般可以定义为:f(x)=1/(1+g(x))其中,x表示变量的取值,g(x)表示问题的目标函数(即需要优化的函数)。
适应度函数f(x)的值应当为正值,使得适应度值越大的个体有更高的概率被选中进入下一代。
一般而言,适应度函数的计算需要根据具体问题的要求来进行设计。
三、交叉和变异交叉和变异是实数编码遗传算法的核心操作。
在交叉操作中,我们需要选择两个个体,并确定交叉点。
交叉点之前的基因串被交换生成新的个体。
在变异操作中,我们随机设定一个基因位,并将其改变成随机的一个值。
第23卷第1期Vol.23No.1控 制 与 决 策Cont rolandDecision2008年1月 J an.2008收稿日期:2006210211;修回日期:2007201224.基金项目:交通部西部交通建设科技项目(200431882053).作者简介:高辉(1969—),男,吉林松源人,博士生,从事智能控制、智能交通系统等研究;徐光辉(1964—),男,辽宁锦州人,副教授,博士,从事城市轨道交通和交通系统动力学的研究. 文章编号:100120920(2008)0120087204实数编码量子进化算法高 辉1,徐光辉1,张 锐2,王哲人1(1.哈尔滨工业大学交通科学与工程学院,哈尔滨150090;2.哈尔滨理工大学自动化学院,哈尔滨150080)摘 要:为求解复杂函数优化问题,基于量子计算的相关概念和原理,提出一种实数编码量子进化算法.首先构造了由自变量向量的一个分量和量子比特的一对概率幅为等位基因的三倍体染色体,增加了解的多样性;然后利用量子旋转门和依据量子比特概率幅满足归一化条件设计的互补双变异算子进化染色体,实现局部搜索和全局搜索的平衡.标准函数仿真表明,该算法适合求解复杂函数优化问题,具有收敛速度快、全局搜索能力强和稳定性好的优点.关键词:量子计算;量子进化算法;实数编码量子进化算法;函数优化中图分类号:TP18 文献标识码:AR eal 2coded qu antum evolutionary algorithmGA O H ui 1,X U Guan g 2hui 1,Z H A N G R ui 2,W A N G Zhe 2ren1(1.School of Communication Science and Engineering ,Harbin Institute of Technology ,Harbin 150090,China ;2.School of Automation ,Harbin University of Science and Technology ,Harbin 150080,China.Correspondent :GAO Hui ,E 2mail :zr_gh @ )Abstract :In order to optimize the complex f unctions ,a real 2coded quantum evolutionary algorithm is proposed based on the relational concepts and principles of quantum computing.Real 2coded triploid chromosomes ,whose alleles are composed of a component of the independent variable vector and a pair of probability amplitudes of the corresponding states of a qubit ,are constructed to keep the population diversity.The complementary double mutation operator ,which is designed according to the probability amplitudes of a qubit f ulfilling the normalization conditions ,and the quantum rotation gate are used to update chromosomes and realize a good balance between exploration and exploitation.Simulation results on benchmark functions show that the algorithm is well suitable for the complex function optimization ,and has the characteristics of rapider convergence ,more powerf ul global search capability and better stability.K ey w ords :Quantum computing ;Quantum evolutionary algorithm ;Real 2coded quantum evolutionary algorithm ;Function optimization1 引 言 进化算法在求解复杂函数优化和组合优化问题中得到广泛应用,但仍存在“早熟”和“停滞”现象.为解决这些问题,借鉴量子计算的概念和原理,人们提出了量子进化算法(Q EA )[123].Q EA 采用基于量子比特概念构造的量子染色体,增加解的多样性,以克服“早熟”现象;并利用当前最优染色体信息,使用量子旋转门更新量子染色体,确保进化的方向性,以避免“停滞”现象.然而大量研究表明[426],尽管Q EA 在求解组合优化问题时比传统进化算法表现出更优良的性能,但不适合求解复杂函数优化问题.为此,本文提出一种实数编码量子进化算法(RCQ EA ).RCQ EA 利用待求解复杂函数自变量向量的一个分量和量子比特的一对概率幅组成染色体的等位基因,进而构造实数编码三倍体染色体,以增加解的多样性,并利用量子旋转门和依据量子比特概率幅满足归一化条件而设计的基于高斯变异的互补双变异算子一起进化染色体,实现算法局部搜索和全局搜索的平衡.标准函数仿真表明,RCQ EA 求解复杂函数优化问题具有很好的性能.2 量子进化算法(QEA) 在Q EA 中[5],用一个具有n 个量子比特的量子 控 制 与 决 策第23卷寄存器来表达长度为n 的量子染色体,即α1…αi …αnβ1…βi …βn.(1)式中αi 和βi 分别为量子比特|0〉态和|1〉态的概率幅,且满足归一化条件|αi |2+|βi |2=1,i =1,2,…,n.一个量子染色体可表征解空间中任意解的叠加态,叠加性是量子染色体增加解的多样性的根本原因.通过随机测量,一个量子染色体以概率的形式坍塌到一个二进制形式的解.Q EA 采用量子旋转门作为进化策略,使当前解逐渐逼近搜索到的最优解,并将需要的结果以概率的形式增加,不需要的结果则以概率的形式减弱.量子旋转门可描述为R (θ)=cos θ-sin θsin θcos θ,(2)式中θ为旋转角.通过量子旋转门可实现任意叠加态之间的转换,具有高度并行性.Q EA 在求解组合优化问题(如背包问题)时,表现出优良的性能,但不适合于求解复杂函数优化问题.原因在于Q EA 对解空间终归是以二进制形式表示,这就决定了Q EA 包含以往任何以二进制形式表示解空间的进化算法在求解复杂函数优化问题时具有的诸如繁琐的编、解码过程,以及随着函数维数的增加和求解精度的提高,引起染色体编码“长度灾”,并导致搜索效率低下等缺点.3 实数编码量子进化算法(RCQEA) RCQ EA 算法的基本思路是:首先构造实数编码三倍体染色体;然后,利用量子旋转门和根据实数编码三倍体染色体的具体形式设计的基于高斯变异的互补双变异算子一起进化染色体,并通过离散交叉实现染色体之间的信息交流,扩大算法搜索范围;最后,通过进化操作产生新的染色体,采用“爬山”选择,加快算法收敛速度.RCQ EA 算法的基本模型如图1所示.图中:p t u (u =1,2,…,N )和p t v (v ≠u )均为实数编码三倍体染色体,b t 为当代最优染色体.图1 实数编码量子进化算法基本模型3.1 实数编码三倍体染色体复杂函数优化问题可描述为J =min (f (x )),x =(x 1,…,x i ,…,x n )∈R n,x i ∈[x i ,min ,x i ,max ],i =1,2,…,n.(3)式中:x i ,min 和x i ,max 分别为自变量向量x 的分量x i 的下界和上界,n 为复杂函数的维数.实数编码三倍体染色体的等位基因由复杂函数自变量向量x 的一个分量x i 和量子比特的一对概率幅[αi βi ]T组成,即[x i αi βi ]T ;染色体长度由复杂函数的维数决定.则实数编码三倍体染色体可描述为x 1…x i …x nα1…αi …αn β1…βi …βn,(4)式中αi 和βi 满足归一化条件.3.2 互补双变异算子和离散交叉RCQ EA 算法对群体中的每一个染色体实施单基因变异,即每次仅对染色体的一个基因位进行变异,其余基因位则保持不变,从而构成新染色体.文献[7]已证明,单基因变异比全基因变异具有更高的搜索效率.设第t 代时的群体为P (t )={p t1,…,p t j ,…,p t N },对于染色体p tj ,随机选择第i 基因位[x t j ,i αt j ,i βt j ,i ]T ,对变量x tj ,i 按下式进行高斯变异:x t+1,kj ,i=x t j ,i +(x i ,max -x i ,min )N (0,(σt ,k j ,i )2).(5)式中:k ∈{α,β};(σt ,k j ,i )2为高斯变异的方差,取值为(σt ,k j ,i)2=|αt j ,i |2,k =α;|βt j ,i |2/5,k =β.(6) 由式(5)可知,当(σt ,k j ,i )2较大时,x t+1,kj ,i可能超出可行解空间的范围,为此作如下处理:if x t+1,kj ,i>x i ,max ,t hen x t+1,k j ,i =2x i ,max -x t+1,k j ,i ;(7)if x t+1,k j ,i<x i ,min ,t hen x t+1,k j ,i=2x i ,min -x t+1,k j ,i .(8)重复式(7)或(8),直到使x t+1,kj ,i位于可行解空间.若由式(5)生成的新染色体优于原染色体,则为有效进化,此时αt+1j ,i =αt j ,i ,βt+1j ,i =βtj ,i ;否则为无效进化,并由形如式(2)的量子旋转门更新αt j ,i 和βtj ,i ,即αt+1j ,i βt+1j ,i=cos (Δθtj ,i )-sin (Δθtj ,i )sin (Δθt j ,i )co s (Δθtj ,i )αtj ,i βt j ,i.(9)式中Δθt j ,i 为量子旋转门的旋转角,且Δθtj ,i 设计为Δθtj ,i=sgn (αtj ,iβt j ,i)θ0exp (-|βtj ,i ||αt j ,i |+γ).(10)其中:θ0为初始旋转角,γ为进化尺度,θ0和γ控制旋转角的大小,进而控制算法的收敛速度;符号函数sgn (・)控制旋转角的方向,以确保算法收敛.若染色体同一基因位连续发生多次无效进化,除采用式(9)和(10)更新αt j ,i 和βtj ,i 外,还辅以式88第1期高辉等:实数编码量子进化算法 (11)以加大αtj ,i 和βt j ,i 更新的尺度,进而达到由算法的进化状态自适应调整进化过程的目的.αt+1j ,i =αt+1j ,i /(fix (c i /5)+1),βt+1j ,i=1-(αt+1j ,i )2.(11)式中:fix (・)为取整函数,c i 为第i 基因位发生连续无效进化次数.由式(9)~(11)可以看出,|αt j ,i |2随着进化代数的增加将逐渐减小,实现了对当前解邻域的“求精”搜索;而|βt j ,i |2随着进化代数的增加而逐渐增加,实现了对解空间大范围的“求泛”搜索,互补双变异算子即由此而来.设“求精”搜索和“求泛”搜索次数分别为m 1和m 2,一般m 1>m 2.RCQ EA 每隔一定的进化代数τ实施离散交叉,即对于指定的染色体p t u ,在群体中随机选择另一染色体p tv(u ≠v ),以1/2的概率交换2个父本的基因位,生成2个新染色体c t 1和c t2.离散交叉可描述为[x t c,i αt c,i βt c,i ]T =[x t u,i αt u,i βt u,i]T,r <0.5;[xt v ,iαt v ,i βt v ,i]T,r ≥0.5.(12)式中:[x t c,i αt c,iβt c,i ]T,[xt u,i αt u,i βt u,i]T和[xt v ,i αt v ,iβt v ,i ]T 分别为染色体c t 1或c t 2,p t u 和p t v 的第i 基因位;r 为[0,1]区间随机数.当待求解复杂函数自变量向量的各分量有较强相关性时,离散交叉对于避免陷入局部极值点非常重要.3.3 算法流程Step1:参数初始化.Step2:群体初始化.生成形如式(4)的三倍体染色体群体P (t )={p t j },j =1,2,…,N ,N 为群体规模.Step3:评价种群.对群体中的每个染色体进行评价,选出最优染色体b t .Step4:算法停止判断.当满足停止条件时,输出最优解b t ,算法结束;否则,继续下一步.Step5:进化染色体.Step5.1:“求精”或“求泛”搜索.Step5.1.1:对于选定的染色体,以等概率随机选择染色体第i 基因位,由式(5)对基因位中表示自变量向量分量的变量实施高斯变异,生成新染色体.Step5.1.2:对新染色体进行评价,并采用“爬山”选择.即如果是有效进化,则用新染色体替换原染色体,并清除连续无效进化次数c i ;否则,原染色体保持不变,并累加连续无效进化次数c i .Step5.1.3:若“求精”或“求泛”搜索次数未达到设定次数,转Step5.1.1;否则,更新b t ,继续.Step5.2:对于选定的染色体,以等概率随机选择染色体第i 基因位,如果该基因位存在无效变异,则由式(9)~(11)更新基因位中的概率幅.群体中全部染色体均进行Step5.1~Step5.2操作.Step5.3:离散交叉.如果满足交叉条件,依适应值顺序选k (k ≤N )个优秀个体按式(12)分别进行m 3次交叉,生成新染色体,并采用“爬山”选择.同时,清除染色体各基因位连续无效进化次数,更新b t.Step6:t =t +1,转Step4.4 仿真算例 用Q EA ,M 2ES [7]和RCQ EA 三种算法同时求解复杂函数优化问题,以考察RCQ EA 性能.标准测试函数表达式分别为min F 1=∑Di =1x2i,(13)式中:自变量x i ∈[-100,100],维数D =30.min F 2=-20exp (-0.21D∑Di =1x 2i )-exp (1D∑Di =1co s (2πx i))+20+e , (14)式中:自变量x i ∈[-32,32],维数D =30.min F 3=14000∑D i =1x 2i -∏Di =1co s(x ii )+1,(15)式中:自变量x i ∈[-600,600],维数D =30.min F 4=10D +∑Di =1(x 2i -10co s (2πx i )),(16)式中:自变量x i ∈[-5.12,5.12],维数D =30.测试函数均在x =(0,…,0)处存在全局最小值0.1)Q EA :群体规模N =10,自变量分量均采用18位二进制数表示,则量子染色体长度为540,θ0=0.05π,ε=0.01,局部迁移间隔为600代.2)M 2ES :μ=1,λ=6,k =2,σ0=2.3)RCQ EA01:RCQ EA 的群体规模N =1,初始旋转角θ0=0.4π,进化尺度γ=0.05,连续“求精”搜索次数m 1=6,连续“求泛”搜索次数m 2=2.4)RCQ EA10:RCQ EA 的群体规模N =10,交叉间隔τ=500,选择优秀个体数k =2,每个个体连续交叉次数m 3=6,其他参数与RCQ EA01相同.算法均以最大运行代数为终止条件,最大终止代数取为5000,各种算法分别独立运行30次.运算结果见表1.数据表明,尽管RCQ EA01和M 2ES 有大致相同的计算复杂度,但RCQ EA01的性能优于M 2ES ,原因在于RCQ EA01使用实数编码三98 控 制 与 决 策第23卷倍体染色体,增加了解的多样性,并利用量子旋转门和互补双变异算子进化染色体,实现了全局搜索和局部搜索的平衡.而RCQ EA10的性能又明显优于RCQ EA01,原因不仅在于染色体个数的增加,更重要的是使用离散交叉扩大了搜索空间.算法Q EA 则不适合复杂函数优化问题.数据分析表明,RCQ EA 求解复杂函数优化问题时表现出更强的全局搜索能力、更好的稳定性和鲁棒性.表1 各种算法求解复杂函数优化问题的统计结果函数算 法平均值最优值最劣值方差值F 1Q EA2.9489 1.8094 4.18390.8861M 2ES 7.4e 2123.5e 213 3.3e 2118.2e 212RCQ EA01 1.6e 2164.1e 220 1.3e 215 4.2e 216RCQ EA10 4.4e 2217.0e 224 4.9e 2209.6e 221F 2Q EA0.85320.3355 1.25160.3403M 2ES 1.3e 26 1.3e 27 3.0e 26 6.7e 27RCQ EA01 5.3e 210 2.0e 2111.4e 29 4.4e 210RCQ EA109.5e 212 1.5e 2122.5e 212 6.3e 213F 3Q EA0.98520.9216 1.04590.0519M 2ES 0.15720.05630.37090.0875RCQ EA010.032400.07620.0286RCQ EA100000F 4Q EA45.5128.0258.3011.7352M 2ES 0.0943 1.0e 2120.99500.2862RCQ EA01 5.2e 24 5.6e 214 5.2e 23 1.6e 23RCQ EA102.8e 2145.6e 2142.8e 214 图2给出了各算法在30次独立运行中最优值的平均值随代数变化的情况,从求解质量和收敛速图2 各种算法求解复杂函数优化问题性能比较度两个方面再次表明了RCQ EA 的优良性能.一方面,在整个进化过程中,RCQ EA01和RCQ EA10优于Q EA 和M 2ES ,而RCQ EA10优于RCQ EA01;另一方面,RCQ EA01求解F 1和F 2时,收敛速度优于Q EA 和M 2ES ,而求解F 3和F 4时,与Q EA 和M 2ES 一样出现了“早熟”和“停滞”现象,而RCQ EA10却始终保持良好的收敛速度.5 结 语 本文提出的实数编码量子进化算法,其核心在于采用构造的实数编码三倍体染色体表示个体,利用量子旋转门和设计的互补双变异算子进化个体,并通过离散交叉扩大搜索范围,加快收敛速度.仿真结果表明,RCQ EA 适合于求解复杂函数优化问题.关于进一步提高RCQ EA 的性能,扩大RCQ EA 的应用范围则是需要进一步研究和解决的问题.参考文献(R eferences)[1]Hey T.Quantum computing :An introduction [J ].Computing and Control Enginerring Journal ,1996,10(3):1052112.[2]Narayanan A ,Moore M.Quantum 2inspired geneticalgorithms[C ].Proc of IEEE Int Conf on Evolutionary Computation.Nagoya :IEEE Press ,1996:61266.[3]Han K H ,Kim J H.G enetic quantum algorithm and itsapplication to combinatorial optimization problems [C ].Proc of the 2000IEEE Congress on Evolutionary Computation.Piscataway :IEEE Press ,2000,7:135421360.[4]Han K H ,K im J H.Quantum 2inspired evolutionaryalgorithm for a class of combinatorial optimization [J ].IEEE Trans on Evolutionary Computation ,2002,6(6):5802593.[5]Han K H ,K im J H.Quantum 2inspired evolutionaryalgorithms with a new termination criterion ,H εgate ,and two 2phase scheme[J ].IEEE Trans on Evolutionary Computation ,2004,8(2):1562169.[6]Zhang G X ,Jin W D ,Hu L Z.Quantum evolutionaryalgorithm for multiobjective optimization problems [C ].Proc of the 2003IEEE ,Int Symposium on Intelligent Control.Houston :IEEE Press ,2003,10:7032708.[7]王湘中,喻寿益.适用于高维优化问题的改进进化策略[J ].控制理论与应用,2006,23(1):1482151.(Wang Xiang 2zhong ,Yu Shou 2yi.Improved evolution strategies for high 2dimensional optimization[J ].Control Theory and Applications ,2006,23(1):1482151.)9。