前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >遗传算法工具箱安装(一)

遗传算法工具箱安装(一)

作者头像
巴山学长
发布2019-07-15 16:16:46
3K0
发布2019-07-15 16:16:46
举报
文章被收录于专栏:巴山学长巴山学长巴山学长

本文作者:南海一号

今天我给大家讲一讲如何安装matlab的遗传算法工具箱。大家都知道,遗传算法是matlab一个非常经典的智能算法。它通过模仿自然界生物的进化来实现优化效果。在很多问题上,这都是一种非常有效的解决方式。

但是,遗传算法的搭建过程非常复杂。这对matlab小白来说非常的不友好。而且matlab自带的那些遗传算法的工具箱没法满足广大同学们的需要。不过幸运的是有很多人自己写了一些遗传算法工具箱供大家使用,其中比较有名的就是谢菲尔德大学遗传算法的matlab工具箱。今天我就要教大家怎么安装谢菲尔德大学的这个遗传算法工具箱。

下面是我用工具箱解决的优化问题图

最终得到了最优点:

下面我教大家如何安装。

1:首先,大家要下载压缩包。

大家可以到这个官网下载:http://codem.group.shef.ac.uk/index.php/ga-toolbox。

2:解压这个压缩包。在我下面分享的百度网盘里面下载我上传的两个可执行文件(1,2)。这两个可执行文件的代码我已经写好了,打包在了里面。不需要大家编写代码。

3:点开gatbx,通过网盘里面的可执行文件(1,2)修改后缀。记住,先双击1号文件,过5秒再双击2号文件。

4:把这个处理后的文件夹复制粘贴到toolbox里面。

5:打开matlab,将这个文件添加到路径。如果这一步看不懂,就可以看一看我在下面的视频。

下面是网盘资源

链接:https://pan.baidu.com/s/1-Vhkz3DC5zV7OxLrwC9Dkw

提取码:9emx

复制这段内容后打开百度网盘手机App,操作更方便哦

二:测试工具箱

我找到了一个用到遗传算法工具箱的程序,用来测试工具箱的有效性。

关于这个代码,下次我会给大家重点讲解。

代码如下

clc
clear all
close all
%% 画出函数图
figure(1);
hold on;
lb=1;ub=2; %函数自变量范围【1,2】
ezplot('sin(10*pi*X)/X',[lb,ub]);   %画出函数曲线
xlabel('自变量/X')
ylabel('函数值/Y')
%% 定义遗传算法参数
NIND=40;        %个体数目
MAXGEN=20;      %最大遗传代数
PRECI=20;       %变量的二进制位数
GGAP=0.95;      %代沟
px=0.7;         %交叉概率
pm=0.01;        %变异概率
trace=zeros(2,MAXGEN);                        %寻优结果的初始值
FieldD=[PRECI;lb;ub;1;0;1;1];                      %区域描述器
Chrom=crtbp(NIND,PRECI);                      %初始种群
%% 优化
gen=0;                                  %代计数器
X=bs2rv(Chrom,FieldD);                 %计算初始种群的十进制转换
ObjV=sin(10*pi*X)./X;        %计算目标函数值
while gen<MAXGEN
   FitnV=ranking(ObjV);                               %分配适应度值
   SelCh=select('sus',Chrom,FitnV,GGAP);              %选择
   SelCh=recombin('xovsp',SelCh,px);                  %重组
   SelCh=mut(SelCh,pm);                               %变异
   X=bs2rv(SelCh,FieldD);               %子代个体的十进制转换
   ObjVSel=sin(10*pi*X)./X;             %计算子代的目标函数值
   [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群
   X=bs2rv(Chrom,FieldD);
   gen=gen+1;                                             %代计数器增加
   %获取每代的最优解及其序号,Y为最优解,I为个体的序号
   [Y,I]=min(ObjV);
   trace(1,gen)=X(I);                            %记下每代的最优值
   trace(2,gen)=Y;                               %记下每代的最优值
end
plot(trace(1,:),trace(2,:),'bo');                            %画出每代的最优点
grid on;
plot(X,ObjV,'b*');   %画出最后一代的种群
hold off
%% 画进化图
figure(2);
plot(1:MAXGEN,trace(2,:));
grid on
xlabel('遗传代数')
ylabel('解的变化')
title('进化过程')
bestY=trace(2,end);
bestX=trace(1,end);
fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])

参考文献:《MATLAB智能算法30个案例分析代码》

图片来源:https://pixabay.com/zh/images/search/%E7%B3%96%E8%91%AB%E8%8A%A6/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档