改进量子遗传算法及其MATLAB实现1

在这里插入图片描述

在这里插入图片描述

作者在之前的博客中已经介绍过量子遗传算法,
量子遗传算法
量子遗传算法是在传统的遗传算法中引入量子计算的概念和机制后形成的新算法,对标准遗传算法进行了一系列“改造”,包括采用量子比特概率幅的形式对染色体编码、通过量子逻辑门对染色体基因演化等,实现了标准遗传算法的“升级”和“进化”,该算法在处理一般的目标优化问题时,也充分显示出了更优于常规遗传算法的效果。

但随着应用领域的不断拓展,该算法的弊端也不断暴露了出来,比如: 染色体长度一般为固定值,在算法运算初期还未收敛到全局最优解附近时,会因进化不完全导致收敛速度变慢,反之,在中后期收敛后,会因为进化过多导致无效运算增多; 量子旋转门的旋转角度一般为固定值,该角度设定过小,算法运算速度会下降,该角度设定过大,计算精度又难以保证,很难一次选中合适的旋转角度; 算法在多代遗传获得稳定的最优个体后,整个种群会在其周围不断聚集,很可能造成算法陷入局部最优解而无法跳出等一系列新的问题的出现,也进一步限制了原生算法的使用范围。

因此本文将在标准量子遗传算法的基础上进行改进,自适应调整其旋转角并增加交叉算子,并对改进后的结果进行性能测试,即将改进的量子遗传算法、量子遗传算法、遗传算法分别单独运行30次,并取其运行数据进行评价。

00 文章目录

1 量子遗传算法概述
2 程序目录
3 改进策略
4 问题导入
5 MATLAB程序实现

01 量子遗传算法概述

由于对于量子遗传算法作者已经做过介绍,因此这里再简单回顾一下其运行流程即可。
在这里插入图片描述

这里着重介绍3个参数

1.1 量子染色体

量子计算主要通过量子比特来完成,作为一种信息载体,量子比特是一种特殊的双态系统,它可以同时处于 2 个相异的量子态的叠加态中,如 | φq〉=α| 0〉+β | 1〉,其中,| 0〉和 | 1〉分别表示自旋向下和自旋向上态,概率幅常数( α,β) 满足归一化条件:在这里插入图片描述

量子比特对染色体进行编码的结果为在这里插入图片描述

其中等号左边的是第gen代个体的第u条染色体。

1.2 量子旋转门

量子旋转门是量子遗传算法得以完成演化的关 键,本文采用的量子旋转门调整策略是通过比较当 前个体的适应度 f(X) 和最优个体的适应度 f(Xbest) , 若 f(X)<f(Xbest),则让概率幅( α,β) 向着 Xbest 的方向 改变,若 f(X) >f( Xbest) ,则相应调整染色体中对应位置的量子比特,让概率幅( α,β) 向着X 的方向改变。 这里需要说明的是,f(X) 与 f( Xbest) 之间的差值越 大,则说明需要改变的量子旋转门的旋转角度幅 度越大,反之,则改变的幅度越小。在0,1编码中量子旋转门:在这里插入图片描述

其中变异角theta可由下得:在这里插入图片描述

1.3 量子变异

量子变异通过改变某个体现阶段进化过程,降 低其陷入局部最优解的概率。通过设置变异概率, 当随机概率小于变异概率时,便产生变异现象,即 互换该个体的 α 和 β 值,实现进化方向的反转。

量子遗传算法采用这种量子比特染色体的表示形式,使得染色体可以同时表示多个状态,这样就减少了染色体的数量,从而使种群规模变小,即减少迭代次数,也进一步保持了种群个体的多样性,克服早熟收敛。

02 程序目录

在这里插入图片描述

其中改进量子与量子正式程序如下:
在这里插入图片描述

其中性能测试如下:
在这里插入图片描述

03 改进策略

量子遗传算法虽然实现了遗传算法的升级进化,性能得到提高,但也存在以下缺点:
(1)进化早期,由于是二进制字符,局部搜索能力差,复杂的解码、编码过程,寻优速度特别慢。
(2)进化期间,在量子交叉中,是通过量子旋转门来进行更新的,其中的旋转角,就尤为重要,它的幅度影响收敛速度,如果其幅度太大,会导致早熟;幅度太小,收敛速度又会变得很慢。
(3)进化后期,算法处于停滞阶段或进化速度很慢,而且常常容易陷入早熟收敛。

因此本文会以以下2个策略对其进行改进。

3.1 旋转角调整

T为最大迭代数,t为当前迭代数。

3.2 量子交叉算子

量子交叉的基本操作是在个体之间暂时交换各自当前最优解。当某个体完成交叉操作后,它将受到其他个体影响,改变自身进化方向。其步骤为随机排序所有个体,进行个体之间的部分结构替换重组,从而增加新个体提高算法的搜索能力。

04 问题导入

这里需要验证改进QGA算法的有效性,因此采用复杂的二元函数来进行检验。

4.1 问题描述

采用复杂的二元函数求最值问题,函数如下
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

可以看出,该函数在取值范围内有大量局部极值,通常的寻优算法很容易陷入局部极值中或在极值间振荡,因此对于检验算法的性能是比较合适的。

4.2实验设计

为全面比较改进QGA算法和QGA算法以及GA的性能,避免算法的偶然性,本文对各算法分别独立运行30次,取其运行数据,取每次迭代的最大值进行计算:在这里插入图片描述

其中trace为30maxgen的矩阵,max(trace)即可得到1maxgen的矩阵。
对于该数据,分别取其平均值,标准差,最小值,最大值,并取trace的均值作为其稳定的迭代曲线展示。

05 MATLAB程序实现

源码获取:https://mbd.pub/o/bread/mbd-ZJqWlp1t

这里主要展示改进部分

5.1 交叉

在这里插入图片描述

5.2 旋转角

在这里插入图片描述

5.3 性能测试结果

运行性能测试.m代码 结果如下:在这里插入图片描述
在这里插入图片描述

从迭代曲线可以看到改进的QGA独立运行30次取均值后,其性能更好,能够得到更佳的适应度。改进QGA与QGA性能指标都比GA好,能够提高算法的寻优能力,而改进QGA的性能又较QGA更佳。
单独运行改进QGA 与 QGA
在这里插入图片描述

在这里插入图片描述

参考文献

[1] 张秋艳, 王默玉, 申晓留,等. 基于灾变因子的量子遗传算法研究[J]. 计算机与数字
工程, 2019, 47(7):1591-1595.
[2] 王宇平, 李英华. 求解 TSP 的量子遗传算法[J]. 计算机学报, 2007, 30(5):748-755
[3] 李英华 , 王宇平 . 有效的混合量子遗传算法 [J]. 系统工程理论与实践 ,
2006(11):116-124.
[4]闫鹏,曾四鸣,李铁成,卢俊达,杨少波,胡雪凯,张波.基于改进量子遗传算法的虚拟电厂在多时间尺度下参与AGC优化调度[J].电网与清洁能源,2023,39(03):23-32.
[5]陶杨,颜仙荣,孟田珍.改进量子遗传算法在岛礁防空部署问题中的应用[J].中国电子科学研究院学报,2022,17(05):478-483.

猜你喜欢

转载自blog.csdn.net/sfejojno/article/details/131215398
今日推荐