遗传算法系列 | 多种群遗传算法(matlab)
多种群遗传算法 MPGA
本文是作者遗传算法系列之篇四,前面已经系统地讲解了遗传算法基本原理以及简单应用
系列一 —— 标准遗传算法原理及程序实现
系列二 —— 遗传算法应用于TSP问题
系列三 —— 遗传算法应用于车辆路径规划
不难发现,虽然遗传算法在一些简单问题上效果不错,但面对复杂的多模态函数时,常常发生早熟(未成熟收敛),也就是群体中所有个体都趋于同一状态而停止进化。
多种群遗传算法正是应对此问题的方法之一,下面将从理论原理、算法流程以及程序实现上进行详细展开。
00 目录
理论概述
算法流程
问题导入
MATLAB程序实现
展望
01 理论概述
多种群遗传算法(multiple population GA,MPGA)与标准遗传算法(SGA)的基础上主要引入了以下几个概念:
- 突破遗传算法仅靠单个群体进行遗传算法进化的框架,引入多个种群同时进行优化搜索;不同的种群赋予不同的控制参数,实现不同的搜索目的。
- 各个种群之间通过移民算子进行联系,实现多种群的协同进化;最优解的获取是多个种群协同进化的综合结果。
- 通过人工选择算子保存各种群每个进化代中 的最优个体,并作为判断算法收敛的依据。
具体来说
各种群取不同的控制参数,MPGA弥补了SGA依赖于交叉算子Pc、变异算子Pm的缺陷,通过设有不同控制参数的种群协同进化,从而兼顾算法的全局搜索和局部搜索。
各种群相对独立,种群交互通过移民算子联系。移民算子将各种群的最优个体定期引入其它种群中,实现种群之间的信息交换,这也是MPGA的特点所在。
精华种群和其它种群不同,每一代进化后,通过人工选择算子选出种群的最优个体放入精华种群,并且精华种群不进行选择、交叉、变异等操作,保证进化过程中最优个体不被破坏和丢失,并且精华种群的最优个体最少保持代数将作为算法终止判据,该判据充分利用了遗传算法在进化中的知识积累,较之最大遗传代数更为合理。
02 算法流程
算法流程与标准遗传算法相比,主要多出了移民和人工选择的操作,并且收敛条件也作了改变,MPGA流程图如下:
03 问题导入
3.1 问题描述
采用复杂的二元函数求最值问题,函数如下:
约束为:
该函数的图像如下所示:
可以看出,该函数在取值范围内有大量局部极值,通常的寻优算法很容易陷入局部极值中或在极值间振荡,因此对于检验多种群遗传算法的性能是比较合适的。
3.2实验设计
为显示多种群遗传算法较之标准遗传算法的优越性,本文针对该函数,分别对两种算法做仿真对比,并分别独立运行4次观察其进化过程。
对于SGA部分,采用英国谢菲尔德大学推出的遗传算法工具箱,该工具箱在作者往期文章中可获取下载链接;(遗传算法工具箱地址)
对于MPGA部分,其主体部分和SGA大致相似,因此本文将重点介绍移民算子和人工选择算子的实现。
04 MATLAB程序实现
4.1 移民算子
该函数的代码如下
其中
输入参数的 Chrom 是移民前种群的编码, ObjV 是种群个体的适应度;
输出参数的 Chrom 是移民后种群的编码, ObjV 是种群个体的适应度。
移民算子的主要目的是将某一种群的优秀个体移到其它种群中
在此思想下,该段代码的思路:
- 获取种群数;
- 遍历每个种群,找到当前种群的最优个体以及目标种群的最劣个体;
- 将当前种群的最优个体替换到目标种群最劣个体位置;
- 更新适应度
- 结束
4.2 人工选择算子
该函数的代码如下
其中
输入参数的Chrom是移民后种群的编码,ObjV是移民后种群个体的适应度,
MaxObjV是精英种群个体的适应度,MaxChrom是精英种群编码
输出参数的MaxChrom是选择后最优个体的编码,MaxObjV是最优个体的适应度。
人工选择算子的主要目的是将各个种群的最优个体提取出来组成精英种群
在此思想下,该段代码的思路:
- 获取种群数;
- 遍历每个种群,将移民后的种群最优个体适应度与精英种群相比,优胜劣汰;
- 结束
4.3 多种群遗传算法主程序
4.4 结果分析
标准遗传算法运行4次的进化过程如图(a)所示
多种群遗传算法运行4次的进化过程如图(b)所示
图(a)
图(b)
由图(a)得知,多种群遗传算法运行4次的结果完全一致,且迭代次数小,平均在17次,基本没有陷入局部最优,说明****MPGA算法稳定性好,且收敛速度快,对于该多极值的函数问题较为适用;
而从图(b)可以看出,尽管迭代次数在300次时,SGA运行4次得到的优化结果仍不完全相同,显然第一次和第四次运行结果优于其余两次,说明算法会陷入局部最优解未成熟收敛现象,因此SGA算法稳定性较差,且有早熟收敛现情况,难以适用该问题。
05 展望
MPGA算法的优越在于采用了多个种群同时对解空间进行协同搜索,兼顾了算法的全局搜索和局部搜索,使得对遗传控制参数的敏感性降低,能够有效地克服未成熟收敛的现象。
同时,该思想同样能够用于其它类似的智能优化算法中,现在也有成功的应用,如多种群粒子群、多种群萤火虫等。
参考文献
[1]刘科研,盛万兴,马晓晨,李运华,董伟杰,杨丽曼.基于多种群遗传算法的分布式光伏接入配电网规划研究[J].太阳能学报,2021,42(06):146-155.DOI:10.19912/j.0254-0096.tynxb.2019-0370.
[2]刘鹏程,李新利.基于多种群遗传算法的含分布式电源的配电网故障区段定位算法[J].电力系统保护与控制,2016,44(02):36-41.
[3]郝翔,李人厚.适用于复杂函数优化的多群体遗传算法[J].控制与决策,1998(03):71-74.DOI:10.13195/j.cd.1998.03.71.haox.014.
最后,若想获取代码的伙伴,在评论区或者私信我你的邮箱,我如果看到了会发给你。
以上
遗传算法系列 | 多种群遗传算法(matlab)相关推荐
- MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)
前言: 本篇博文参考,智能优化算法书籍<MATLAB智能算法30个案例分析(第2版)>,今天要与大家分享的智能算法是多种群遗传算法. 本地MATLAB环境部署 因为后面要介绍的多种群遗传算 ...
- matlab遗传算法拟合,基于遗传算法的数据拟合在MATLAB环境中的实现
湖 南 农 机 2010 年 5 月 收稿日期:2010-04-02 作者简介:林鸿彬(1987-),男,海南海口人,主要从事信息与计算科学专业的学习. 摘 要:在自然科学中,常常在相关的 2 个量之 ...
- 【建模算法】基于遗传算法求解TSP问题(matlab求解)
[建模算法]基于遗传算法求解TSP问题(matlab求解) TSP (traveling salesman problem,旅行商问题)是典型的NP完全问题,即其最坏情况下的时间复杂度随着问题规模的增 ...
- matlab遗传算法非线性约束,遗传算法求解约束非线性规划和Matlab实现.pdf
维普资讯 第21卷第 1期 大 学 数 学 Vo1.21,№ .1 2005年 2月 CoLLEGE M ATHEMATICS Feb.2005 遗传算法求解约束非线性规划及 Matlab实现 倪金林 ...
- matlab和投影寻踪,基于遗传算法的投影寻踪模型Matlab源码
基于遗传算法的投影寻踪模型Matlab源码 %% "投影寻踪+遗传算法优化"的主仿真程序 % GreenSim团队原创作品,转载请注明 % Email:greensim@http: ...
- 【GA TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1337期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab遗传算法求解旅行商问题[含Matlab源码 1337期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...
- 遗传算法求解八皇后问题—matlab
目录 题目要求 设计思路 1.染色体编码 2.适应度函数 3.选择算子 4.交叉算子 5.变异算子 6.精英替换 运行结果 源程序 题目要求 在8*8的国际象棋棋盘上放置了八个皇后,要求没有一个皇后能 ...
- 【路径规划】基于遗传算法实现物流中心配送方案matlab源码
定义 遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究.它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说. ...
- 遗传算法中的种群长度及范围有什么用
遗传算法是一种用于优化和搜索的计算机算法,它通过模拟遗传学的原理来解决问题.在遗传算法中,种群长度指的是算法中参与搜索的个体数量. 种群长度的大小会影响遗传算法的效率和可靠性.如果种群长度过小,则可能 ...
最新文章
- # 20172307 2018-2019-1 《程序设计与数据结构》第5周学习总结
- 用C语言实现简单的停车场管理
- 用python编写daemon监控进程并自动恢复(附Shell版)
- 2019胡润女企业家榜公布:碧桂园杨惠妍继续领跑
- 机器学习实战笔记1——机器学习导论
- CentOS 7安装和配置ssh
- php简单的注册登录页面模板,注册登录页面模板(示例代码)
- 很认真的聊一聊程序员的自我修养
- 流利阅读 2019.2.27 How sky-high rents forced people into imaginative alternatives
- 专硕考数二英二的计算机专业,专硕难度升级!英二改考英一,数二改考数一
- C语言算法训练学做菜,Java实现 蓝桥杯VIP 算法训练 学做菜
- 20210714学习手记 CANopen 协议
- 计算机软件工作室起名'',游戏工作室起名大全
- 淘淘商城---8.6
- 前端css让div浮动,Web前端篇:css浮动
- C语言:递归实现N的阶乘
- 搜索词纠错、相关搜索的原理与实现
- FZU 1980 AbOr's story
- 深入学习RTC时钟库 DS1302
- 激励名言 摘抄其他编程人员的话