【优化算法】量子遗传优化算法(QGA)【含Matlab源码 1123期】
一、获取代码方式
获取代码方式1:
完整代码已上传我的资源:【优化算法】量子遗传优化算法(QGA)【含Matlab源码 1123期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、遗传算法简介
1 引言
2 遗传算法理论
2.1 遗传算法的生物学基础
2.2 遗传算法的理论基础
2.3 遗传算法的基本概念
2.4 标准的遗传算法
2.5 遗传算法的特点
2.6 遗传算法的改进方向
3 遗传算法流程
4 关键参数说明
三、部分源代码
clc;
clear all;
close all;
%----------------参数设置-----------------------
MAXGEN=200; % 最大遗传代数
sizepop=40; % 种群大小
lenchrom=[20 20]; % 每个变量的二进制长度
trace=zeros(1,MAXGEN);
%--------------------------------------------------------------------------
best=struct('fitness',0,'X',[],'binary',[],'chrom',[]); % 最佳个体 记录其适应度值、十进制值、二进制编码、量子比特编码
%% 初始化种群
chrom=InitPop(sizepop*2,sum(lenchrom));
%% 对种群实施一次测量 得到二进制编码
binary=collapse(chrom);
%% 求种群个体的适应度值,和对应的十进制值
[fitness,X]=FitnessFunction(binary,lenchrom); % 使用目标函数计算适应度
%% 记录最佳个体到best
[best.fitness bestindex]=max(fitness); % 找出最大值
best.binary=binary(bestindex,:);
best.chrom=chrom([2*bestindex-1:2*bestindex],:);
best.X=X(bestindex,:);
trace(1)=best.fitness;
fprintf('%d\n',1)
%% 进化
for gen=2:MAXGENfprintf('%d\n',gen) %提示进化代数%% 对种群实施一次测量binary=collapse(chrom);%% 计算适应度[fitness,X]=FitnessFunction(binary,lenchrom);%% 量子旋转门chrom=Qgate(chrom,fitness,best,binary);[newbestfitness,newbestindex]=max(fitness); % 找到最佳值% 记录最佳个体到bestif newbestfitness>best.fitnessbest.fitness=newbestfitness;best.binary=binary(newbestindex,:);best.chrom=chrom([2*newbestindex-1:2*newbestindex],:);best.X=X(newbestindex,:);endtrace(gen)=best.fitness;
end%% 画进化曲线
plot(1:MAXGEN,trace);
title('进化过程');
xlabel('进化代数');
ylabel('每代的最佳适应度');%% 显示优化结果
disp(['最优解X:',num2str(best.X)])
disp(['最大值Y:',num2str(best.fitness)]);
function chrom=Qgate(chrom,fitness,best,binary)
%% 量子旋转门调整策略
% 输入 chrom:更新前的量子比特编码
% fitness:适应度值
% best:当前种群中最优个体
% binary:二进制编码
% 输出 chrom:更新后的量子比特编码
sizepop=size(chrom,1)/2;
lenchrom=size(binary,2);
for i=1:sizepopfor j=1:lenchromA=chrom(2*i-1,j); % αB=chrom(2*i,j); % βx=binary(i,j);b=best.binary(j);if ((x==0)&(b==0))||((x==1)&(b==1))delta=0; % delta为旋转角的大小s=0; % s为旋转角的符号,即旋转方向elseif (x==0)&(b==1)&(fitness(i)<best.fitness)delta=0.01*pi;if A*B>0s=1;elseif A*B<0s=-1;elseif A==0s=0;elseif B==0s=sign(randn);endelseif (x==0)&(b==1)&(fitness(i)>=best.fitness)delta=0.01*pi;if A*B>0s=-1;elseif A*B<0s=1;elseif A==0s=sign(randn);elseif B==0s=0;endelseif (x==1)&(b==0)&(fitness(i)<best.fitness)delta=0.01*pi;if A*B>0s=-1;elseif A*B<0s=1;elseif A==0s=sign(randn);elseif B==0s=0;endelseif (x==1)&(b==0)&(fitness(i)>=best.fitness)delta=0.01*pi;if A*B>0s=1;elseif A*B<0s=-1;elseif A==0s=0;elseif B==0s=sign(randn);endende=s*delta; % e为旋转角U=[cos(e) -sin(e);sin(e) cos(e)]; % 量子旋转门y=U*[A B]'; % y为更新后的量子位chrom(2*i-1,j)=y(1);chrom(2*i,j)=y(2);end
endfunction X=bin2decFun(x,lenchrom,bound)
%% 二进制转化成十进制
% 输入 x:二进制编码
% lenchrom:各变量的二进制位数
% bound:各变量的范围
% 输出 X:十进制数
M=length(lenchrom);
n=1;
X=zeros(1,M);
for i=1:Mfor j=lenchrom(i)-1:-1:0X(i)=X(i)+x(n).*2.^j;n=n+1;end
end
X=bound(:,1)'+X./(2.^lenchrom-1).*(bound(:,2)-bound(:,1))';
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社
【优化算法】量子遗传优化算法(QGA)【含Matlab源码 1123期】相关推荐
- 【单目标优化求解】基于matlab黑猩猩算法求解单目标问题【含Matlab源码 1413期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab黑猩猩算法求解单目标问题[含Matlab源码 1413期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...
- 【风电功率预测】基于matlab帝国殖民竞争算法优化BP神经网络风电功率预测【含Matlab源码 1314期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [风电功率预测]基于matlab帝国殖民竞争算法优化BP神经网络风电功率预测[含Matlab源码 1314期] ⛄二.帝国殖民竞争算法简 ...
- 【APF三维路径规划】基于matlab人工势场算法无人机三维路径规划【含Matlab源码 168期】
一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab人工势场算法无人机三维 ...
- 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 155期】
一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT算法无人机三维 ...
- 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 1363期】
一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT算法无人机三维 ...
- 【物流选址】基于matlab免疫算法求解物流选址问题【含Matlab源码 020期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[物流选址]基于matlab免疫算法求解物流选址问题[含Matlab源码 020期] 获取代码方式2: 付费专栏Matlab路径规划(初级版 ...
- 【A_star三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 446期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[三维路径规划]基于matlab A_star算法无人机三维路径规划[含Matlab源码 446期] 获取代码方式2: 付费专栏Matla ...
- 【ACO TSP】基于matlab蚁群算法求解31城市旅行商问题【含Matlab源码 1147期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab蚁群算法求解31城市旅行商问题[含Matlab源码 1147期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...
- 【配电网重构】基于matlab粒子群算法33节点配电网重构【含Matlab源码 1829期】
⛄一.配电网重构简介 1 配电网重构的数学模型 1.1 配电网重构的目标函数 配电网重构的数学模型实质就是多目标多约束的最优解问题, 配网重构的目标一般由以下几类: (1) 配电网最小网损为目标; ( ...
- 【LSSVM回归预测】基于matlab灰狼算法优化最小支持向量机GWO-LSSVM数据预测【含Matlab源码 2259期】
⛄一.灰狼算法优化最小支持向量机GWO-LSSVM简介 1 算法理论 采用灰狼优化算法的最小二乘支持向量机模型预测时,为避免过拟合现象和检验该模型的有效性,将实证部分主要分为:①基于灰狼优化算法的最小 ...
最新文章
- Python 之 matplotlib (八)Bar
- apriori算法代码python_Apriori算法的Python实现
- 依赖注入之针对不同类型变量的几种注入方式
- Java基础- super 和 this 解析
- python启动多个进程_Python程序中的进程操作--—--开启多进程
- linux桌面变成黑白,用虚拟机装了linux后开启为什么界面是黑色的呢?
- Java中complex怎么被调用_java中存在三种调用机制
- CVPR2020 | 阿里结构感知3D目标检测,KITTI BEV 排行榜第一!
- node中的数据持久化
- ubuntu drbd双机互备
- Linux 安装 nginx注意
- php打印机 纸张大小,打印设置信息中的纸张类型,如何取自定义纸张!
- 南京大学计算机考研资料汇总
- [家里蹲大学数学杂志]第033期稳态可压Navier-Stokes方程弱解的存在性
- 什么是前台?什么是中台?什么是后台?
- MySQL 事务隔离级别
- 蓝桥:8皇后·改(⼋皇后问题)
- Springboot导出excel,合并单元格示例
- 大数据运作原理是什么?
- 联通资费大幅下降意在强奸iPhone用户