主要内容
之前分享的程序Matlab|遗传粒子群-混沌粒子群-基本粒子群是通过matlab实现了遗传粒子群、混沌粒子群和基本粒子群的算法的对比,能够看出遗传粒子群具有明显优势,本次进一步更新算法,增加量子遗传算法的对比,可以看一下增加另外一个改进算法之后,最优的算法“花落谁家”?
量子遗传算法
量子遗传算法是通过量子计算原理进行改进的遗传算法,将量子的态矢量表达方式改进遗传算法的编码,通过量子逻辑门对遗传算法的染色体进行演化,实现更好的优化效果。
量子比特编码方式的特点是可以同时处在两个量子态的叠加态中,将其引入到遗传算法基因表达方面,就可以实现“0”态和“1”态的任意叠加态。如
其中,
上式中,|0>和|1>分别表示自旋向下态和自旋向上态,通过这种组合方式能够即可以将原来基因的确定性表达转化为所有可能的信息,使得种群的多样性特征更加明显。
量子门的更新方式有很多,量子旋转门应用于遗传算法最为合适,其调整的计算公式如下:
优化过程流程图如下:
部分代码
for gen=2:MAXGEN fprintf('%d\n',gen) %提示进化代数 %% 对种群实施一次测量 binary=collapse(chrom); % % 计算适应度 [fitness,X]=FitnessFunction(binary,lenchrom); %% 量子旋转门 chrom=Qgate(chrom,fitness,best,binary); [newbestfitness,newbestindex]=max(fitness); % 找到最佳值 % 记录最佳个体到best if newbestfitness>best.fitness best.fitness=newbestfitness; best.binary=binary(newbestindex,:); best.chrom=chrom([2*newbestindex-1:2*newbestindex],:); best.X=X(newbestindex,:); end trace(gen)=best.fitness; end
结果一览
整体的迭代效果图,从图中能看出,量子遗传算法的收敛速度是非常突出的,具体可以通过下图的放大展示方式看一下。
虽然量子遗传算法收敛速度优于遗传粒子群,但是其收敛效果却较遗传粒子群算法差一些,也就是全局收敛性能不及遗传粒子群。
各位同学都关注创新点,如果把量子遗传算法和粒子群算法结合呢?是不是既能加快遗传粒子群算法收敛速度,又能弥补量子遗传算法全局收敛性能不足的缺点?
(注:该程序为更新的代码,在购买原代码的基础上可以补差价获取)
下载链接