许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  遗传算法MATLAB实现(完整代码)

遗传算法MATLAB实现(完整代码)

阅读数 6
点赞 0
article_banner

遗传算法

  • 基础概念 流程 实现 编码 初始种群规模 设置进化代数 设置适应函数 选择 交叉 变异 停止准则 函数介绍 代码实现 定义优化函数 适用遗传算法函数 绘图查看优化结果 完整代码


不能找到最优解,但是适用传统方法无法求解问题 具有全局优化性,通用性强

基础概念

1个体

要处理的基本对象、结构

也就是可行解

2 群体

个体的集合

被选定的一组可行解

3 染色体

个体的表现形式

可行解的编码

4 基因

染色体中的元素

编码中的元素

5 基因位

某一基因在染色体中的位置

元素在编码中的位置

6 适应值

个体对于环境的适应程度,或在环境压力下的生存能力

可行解所对应的适应函数值

7 种群

被选定的一组染色体或个体

根据入选概率定出的一组可行解

8 选择

从群体中选择优胜的个体,淘汰劣质个体的操作

保留或复制适应值大的可行解,去掉小的可行解

9 交叉

一组染色体上对应基因段的交换

根据交叉原则产生的一组新解

10 交叉概率

染色体对应基因段交换的概率(可能性大小)

闭区间[0,1]上的一个值,如0.65~0.90

11 变异

染色体水平上基因变化

编码的某些元素被改变

12 变异概率

染色体上基因变化的概率(可能性大小)

开区间(0,1)内的一个值, 如0.001~0.01

13 进化、适者生存

个体进行优胜劣汰的进化,一代又一代地 优化

目标函数取到最大值,最优的可行解

流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXgiWCek-1664163534080)(assets/image-20220703142723-ev7up2w.png)]

实现

编码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xomd3e87-1664163534083)(assets/image-20220703143013-xairgy6.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oCP8nFnw-1664163534084)(assets/image-20220703143113-pe6gtny.png)]

初始种群规模

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WNNeLluK-1664163534084)(assets/image-20220703143208-iq6ho3l.png)]

设置进化代数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7uHrWXOa-1664163534084)(assets/image-20220703143232-yfx4qw8.png)]

设置适应函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6WqFsSHR-1664163534085)(assets/image-20220703143422-l0iezf8.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RY1tzxo8-1664163534086)(assets/image-20220703143635-zz9m1gf.png)]

目标函数最大或最小化适用正负号 解决

部分函数需要适用界限构造法

选择

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZAeR9HN-1664163534086)(assets/image-20220703144216-4fssecr.png)]

交叉

在这里插入图片描述

变异

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VyuMk4Kn-1664163534088)(assets/image-20220703144424-fky0xeo.png)]

停止准则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z55UGQLH-1664163534089)(assets/image-20220703144459-d73ujy6.png)]

函数介绍

函数默认优化为最小值,如果是最大值需要将函数取负数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dj9O1tq-1664163534090)(assets/image-20220703160420-dmo8f3a.png)]

x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options)

   fun:函数句柄;

   nvars:变量个数;

   A:不等式约束系数矩阵;

   b:不等式约束常量向量;

   [ ]:等式约束系数矩阵;

   [ ]:等式约束常量向量;

   lb:变量上限;

   ub:变量下限;

   nonlcon:非线性约束;

   IntCon:整数约束;

   options:用options中的值替换默认优化参数,通过optimoptions()获取;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPeybgfB-1664163534091)(assets/image-20220703195429-2cezlsf.png)]

代码实现

求解函数最小值案例
定义优化函数
function y = fitness(x)
%UNTITLED2 此处提供此函数的摘要
%   此处提供详细说明
y = x*sin(10*pi*x)+2; 
end
适用遗传算法函数
nvars = 1;%变量个数
LB = -1;%定义域下限
UB = 2;%定义域上限
T = 100;%进化次数
%配置 设置进化次数 打印进化图像
options1=gaoptimset('Generations',T,'PlotFcns',@gaplotbestf);
[nx,fval,exitflag, output]  = ga(@fitness,nvars,[],[],[],[],LB,UB,[],options1)%调用ga函数
绘图 查看优化结果
x=-1:0.01:2; %从-1到2 每隔0.01取一个点绘制图像
y = x.*sin(10*pi*x)+2; 
% ...
plot(x,y);
hold on;
plot(nx,fval,'*');
hold on;
plot(nx,fitness(nx),'*');
完整代码
clear all;
clc;

x=-1:0.01:2; %从-1到2 每隔0.01取一个点绘制图像
y = x.*sin(10*pi*x)+2; 

nvars = 1;%变量个数
LB = -1;%定义域下限
UB = 2;%定义域上限
T = 100;%进化次数
%配置 设置进化次数 打印进化图像
options1=gaoptimset('Generations',T,'PlotFcns',@gaplotbestf);
[nx,fval,exitflag, output]  = ga(@fitness,nvars,[],[],[],[],LB,UB,[],options1)%调用ga函数
plot(x,y);
hold on;
plot(nx,fval,'*');
hold on;
plot(nx,fitness(nx),'*');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yik9vamk-1664163534091)(assets/image-20220706164035-kh0sa6u.png)]


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空