图 7-1 MPGA的算法结构示意图
复杂二元函数求最值:
图 7-2 二元函数图像
2、案例目录:
第7章 多种群遗传算法的函数优化算法 7.1 理论基础
7.1.1遗传算法早熟问题 7.1.2多种群遗传算法概述 7.2案例背景 7.2.1问题描述
7.2.2解决思路及步骤 7.3 MATLAB程序实现
7.3.1移民算子 7.3.2人工选择算子 7.3.3目标函数
7.3.4标准遗传算法主函数 7.3.5多种群遗传算法主函数 7.3.6结果分析 7.4延伸阅读 7.5 参考文献
3、主程序:
%% 多种群遗传算法 clear; clc
close all
NIND=40; %个体数目 NVAR=2; %变量的维数
PRECI=20; %变量的二进制位数 GGAP=0.9; %代沟 MP=10; %种群数目
FieldD=[rep(PRECI,[1,NVAR]);[-3,4.1;12.1,5.8];rep([1;0;1;1],[1,NVAR])]; %译码矩阵 for i=1:MP
Chrom{i}=crtbp(NIND, NVAR*PRECI); %创建初始种群 end
pc=0.7+(0.9-0.7)*rand(MP,1); %在【0.7,0.9】范围i内随机产生交叉概率
pm=0.001+(0.05-0.001)*rand(MP,1); %在【0.001,0.05】范围内随机产生变异概率 gen=0; %初始遗传代数 gen0=0; %初始保持代数
MAXGEN=10; %最优个体最少保持代数 maxY=0; %最优值 for i=1:MP
ObjV{i}=ObjectFunction(bs2rv(Chrom{i}, FieldD));%计算各初始种群个体的目标函数值 end
MaxObjV=zeros(MP,1); %记录精华种群
MaxChrom=zeros(MP,PRECI*NVAR); %记录精华种群的编码 while gen0<=MAXGEN
gen=gen+1; %遗传代数加1 for i=1:MP
FitnV{i}=ranking(-ObjV{i}); % 各种群的适应度
SelCh{i}=select('sus', Chrom{i}, FitnV{i},GGAP); % 选择操作 SelCh{i}=recombin('xovsp',SelCh{i}, pc(i)); % 交叉操作 SelCh{i}=mut(SelCh{i},pm(i)); % 变异操作
ObjVSel=ObjectFunction(bs2rv(SelCh{i}, FieldD)); % 计算子代目标函数值 [Chrom{i},ObjV{i}]=reins(Chrom{i},SelCh{i},1,1,ObjV{i},ObjVSel); %重插入操作 end
[Chrom,ObjV]=immigrant(Chrom,ObjV); % 移民操作
[MaxObjV,MaxChrom]=EliteInduvidual(Chrom,ObjV,MaxObjV,MaxChrom); % 人工选择精华种群 YY(gen)=max(MaxObjV); %找出精华种群中最优的个体
if YY(gen)>maxY %判断当前优化值是否与前一次优化值相同 maxY=YY(gen); %更新最优值 gen0=0; else
gen0=gen0+1; %最优值保持次数加1 end end
%% 进化过程图 plot(1:gen,YY) xlabel('进化代数') ylabel('最优解变化') title('进化过程') xlim([1,gen])
%% 输出最优解
[Y,I]=max(MaxObjV); %找出精华种群中最优的个体 X=(bs2rv(MaxChrom(I,:), FieldD)); %最优个体的解码解 disp(['最优值为:',num2str(Y)])
disp(['对应的自变量取值:',num2str(X)])
4、运行结果:
标准遗传算法运行5次得到的结果图:
多种群遗传算法运行5次得到的结果图:
第 8 章 基于量子遗传算法的函数寻优算法
1、案例背景
量子遗传算法就是基于量子计算原理的一种遗传算法。将量子的态矢量表达引入了遗传编码,利用量子逻辑门实现染色体的演化,实现了比常规遗传算法更好的效果。 量子遗传算法建立在量子的态矢量表示的基础之上,将量子比特的几率幅表示应用于染色体的编码,使得一条染色体可以表达多个态的叠加,并利用量子逻辑门实现染色体的更新操作,从而实现了目标的优化求解。 复杂二元函数求最值:
图 8-1 二元函数图像
2、案例目录:
第8章 基于量子遗传算法的函数寻优算法 8.1 理论基础
8.1.1 量子遗传算法概述 8.1.2 量子比特编码 8.1.3 量子门更新 8.2案例背景 8.2.1 问题描述
8.2.2 解决思路及步骤
8.2.2.1 量子遗传算法流程 8.2.2.2 量子遗传算法实现 1. 量子比特编码 2. 量子旋转门 8.3 MATLAB程序实现
8.3.1 种群初始化—量子比特编码 8.3.2测量函数—得到二进制编码 8.3.3 量子旋转门函数 8.3.4 适应度函数 8.3.5 量子遗传算法主函数 8.3.6 结果分析 8.4 延伸阅读 8.5 参考文献
3、主程序:
clc;
clear all; close all;
%----------------参数设置----------------------- MAXGEN=200; % 最大遗传代数 sizepop=40; % 种群大小
lenchrom=[20 20]; % 每个变量的二进制长度 trace=zeros(1,MAXGEN);
%--------------------------------------------------------------------------
% 最佳个体 记录其适应度值、十进制值、二进制编码、量子比特编码