% ----------------------- README ------------------------------------------
% ------------------- 原创声明 -------------------------------------------
% -------------- 最后一次修改:2023/6/11 ------------------------------------
% ------------------- 欢迎关注₍^.^₎♡ -------------------------------------
% -------------- 项目:改进GA对比标准GA应用于函数寻优 ---------------------
% -------------- B站:KAU的云实验台_s -------------------------------------
% -------------- CSDN:KAU的云实验台 ---------------------------------------
% -------------------------------------------------------------------------
%% 适应度越大越好
%% 清空环境
clc
clear
%% 遗传算法参数
maxgen=200; %进化代数
sizepop=300; %种群规模 务必是偶数 君主方案对半分
pcross=[0.6]; %交叉概率
pmutation=[0.01]; %变异概率
lenchrom=[1 1 ]; %变量字串长度
bound=[-3,4.1;12.1,5.8]'; %变量范围
times = 4;
% 记录每一代进化中最好的适应度和平均适应度 标准遗传算法
trace=zeros(times,maxgen);
% 记录每一代进化中最好的适应度和平均适应度 改进遗传算法
m_trace=zeros(times,maxgen);
%% 运算N次 防随机
for q=1:times
%% 个体初始化
% 标准遗传算法
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %种群结构体
avgfitness=[]; %种群平均适应度
bestfitness=[]; %种群最佳适应度
bestchrom=[]; %适应度最好染色体
% 改进的遗传算法
m_individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %种群结构体
m_avgfitness=[]; %种群平均适应度
m_bestfitness=[]; %种群最佳适应度
m_bestchrom=[]; %适应度最好染色体
% 初始化种群 标准遗传算法
for i=1:sizepop
individuals.chrom(i,:)=Code(lenchrom,bound); %随机产生个体
x=individuals.chrom(i,:);
individuals.fitness(i)=fun(x); %个体适应度
end
% 初始化种群 改进遗传算法
for i=1:sizepop
m_individuals.chrom(i,:)=Code(lenchrom,bound); %随机产生个体
x = m_individuals.chrom(i,:);
m_individuals.fitness(i)=fun(x); %个体适应度
end
%找最好的染色体 标准遗传算法
[bestfitness bestindex]=max(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); %最好的染色体
avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度
%找最好的染色体 改进遗传算法
[m_bestfitness m_bestindex]=max(m_individuals.fitness);
m_bestchrom=m_individuals.chrom(m_bestindex,:); %最好的染色体
m_avgfitness=sum(m_individuals.fitness)/sizepop; %染色体的平均适应度
[SortFIT,Index]=sort(m_individuals.fitness,'descend'); % 越大越好 SortFIT 是按从大到小排序
Sortf=m_individuals.chrom(Index,:); % 按顺序排号
NU_fit = zeros(1,sizepop); % 存储每代交叉变异后的适应度
%% 进化开始 标准与改进一起运算 提高速度
for i=1:maxgen
% 选择操作 标准遗传算法
individuals=Select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/sizepop;
% 交叉操作 标准遗传算法
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 变异操作 标准遗传算法
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);
% 标准遗传算法
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:);
individuals.fitness(j)=fun(x);
end
%找到最小和最大适应度的染色体及它们在种群中的位置 标准遗传算法
[newbestfitness,newbestindex]=max(individuals.fitness);
[worestfitness,worestindex]=min(individuals.fitness);
% 代替上一次进化中最好的染色体 标准遗传算法
if bestfitness<newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
individuals.chrom(worestindex,:)=bestchrom;
individuals.fitness(worestindex)=bestfitness;
avgfitness=sum(individuals.fitness)/sizepop;
% trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
trace(q,i) = bestfitness;
% 改进遗传算法 更新最优
[SortFIT,Index]=sort(m_individuals.fitness,'descend'); % 越小越好 SortFIT 是按从小到大排序
Sortf=m_individuals.chrom(Index,:); % 按顺序排号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 改进部分 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 改进遗传算法 (君主方案进行选择交叉操作)
% 思路:
% 就是根据群体适应度值高低排序的基础上,用最优个体与其他偶数位的所有个体进行交叉每次交叉产生两个新个体,
% 交叉后对新产生的群体进行多点变异产生新群体,再计算其适应度值,然后和父群合并,按照适应度值进行排序,
% 选择前sizepop个个体为新群体。
ret = Emper_Select_Cross(Sortf,pcross,lenchrom,sizepop,bound);
% chorm = Sortf;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 变异操作 改进遗传算法
ret=Mutation(pmutation,lenchrom,ret,sizepop,[i maxgen],bound);
% 改进遗传算法
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 改进部分 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for ii=1:sizepop
NU_fit(ii) = fun(ret(ii,:));
end
[SortNU_fit Index] = sort(NU_fit,'descend'); % 适应度按从大到小排序
Sort_ret = ret(Index,:); % 染色体个体排序
% 产生新种群
clans_chrom = [Sortf ;Sort_ret]; % 子代父代染色体合并族群
clans_fit = [SortFIT SortNU_fit]; % 子代父代适应度合并族群
[Sort_clans_fit Index] = sort(clans_fit,'descend');% 排序
Sort_clans_chrom = clans_chrom(Index,:); % 个体换位
m_individuals.fitness = Sort_clans_fit(1:sizepop); % 将顺序前sizepop个赋予种群
m_individuals.chrom = Sort_clans_chrom(1:sizepop,:); % 将顺序前sizepop个赋予种群
m_avgfitness = sum(m_individuals.fitness)/sizepop; % 平均适应度
m_bestfitness = m_individuals.fitness(1); % 第一个是最优值
% m_trace = [m_trace;m_avgfitness m_bestfitness];
m_trace(q,i) = m_bestfitness;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
%进化结束
end
%% 结果显示
[r c]=size(trace);
figure
plot(1:c,trace(1,:),'Color','#1A3B30','LineWidth',3);
hold on
plot(1:c,trace(2,:),'-.','Color','#509579','LineWidth',3);
plot(1:c,trace(3,:),'--','Color','#99BDBD','LineWidth',3);
plot(1:c,trace(4,:),':','Color','#C6E3D8','LineWidth',3);
xlabel('Generation','FontName','Tim
![avatar](https://profile-avatar.csdnimg.cn/2a6ce9ec08bf4bdba45654ce8eee82d8_sfejojno.jpg!1)
KAU的云实验台
- 粉丝: 1519
- 资源: 13
最新资源
- PFC开关电源仿真与全桥LLC串联谐振电源Simulink模型详解,PFC开关电源仿真与全桥LLC串联谐振模型:Simulink建模及参数计算说明,PFC开关电源仿真 全桥LLC 单相Boost PF
- IEEE 39节点系统中的双馈风机风电场:带有虚拟惯量与综合控制的一次调频技术分析与应用模拟,IEEE 39节点风电一次调频系统:含双馈风机与虚拟惯量、下垂控制及综合惯量控制的时空分布研究,IEEE3
- 双馈永磁同步风电机组并网仿真模型及其短路故障分析:一个可调容量的9MW风电场模拟研究报告,“kw级别双馈永磁风电机组与PMSG并网仿真模型:风电场短路故障分析与多风速模拟研究”,双馈永磁风电机组并网仿
- 小数分频锁相环与环形振荡器结构在smic 28nm工艺下的设计原理及版图详解,小数分频锁相环与环形振荡器结构设计:SMIC 28nm技术下的版图设计与原理解析,小数分频锁相环,环形振荡器结构,smic
- 基于python的区块链简单实现
- 基于VSG控制的MMC变流器模块化研究:电网频率电压模拟下的功率输出与调节策略,基于VSG控制的MMC变流器模块化研究:电网频率电压模拟下的功率输出与调节策略,基于VSG控制(同步发电机控制)的模块化
- 永磁同步电机旋转高频信号注入法:零低速无位置控制的优化仿真研究及其低噪声低损耗优势分析,永磁同步电机旋转高频信号注入法:零低速无位置控制的优化仿真研究及与高频方波信号注入法的对比分析,永磁同步电机旋转
- Simulink光伏并网与同步发电机优化:频率惯量支撑与波形效果卓越,光强、温度及减载率可灵活调整,Simulink光伏并同步发电机频率惯量支撑技术研究:光强、温度与减载率可调的优化波形效果探索,si
- 基于java的区块链简单实现
- **Qt CPP多列时间轴控件:故事大纲展示与自由编辑的强大工具**,QtCPP时间轴控件:多功能时间管理,事件故事线编排的完美工具,Qt CPP实现的多列时间轴控件、可与多段字符串格式自由转、也可手
- 基于DSP28377的三相并网双二阶锁相环(DSOGI-PLL)程序设计方法探讨,基于DSP28377的三相并网双二阶锁相环DSOGI-PLL程序设计解析与实现,基于DSP28377的三相并网双二阶锁
- MATLAB中基于DWA算法的机器人局部避障路径规划过程解析:速度控制优化与仿真实验结果,MATLAB动态窗口算法DWA实现机器人局部避障路径规划的优化与仿真研究:速度控制下的最优路线决策,MATLA
- 电气安装工 中级工.pdf
- 基于dq旋转坐标系的构网变流器功率控制策略:下垂控制实现功率准确跟踪与电压前馈双闭环控制,基于dq坐标系的构网变流器功率控制策略:下垂控制结合PI控制实现精准功率跟踪与电压稳定,构网变流器功率控制控制
- 电气安装工 高级工.pdf
- KR_70_R2100_E_ES 20240417(1).stp
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)