matlab遗传算法gatbx工具箱介绍及安装说明

一. 遗传算法简介:    

官网:http://www.geatpy.com/tutorials

    遗传算法是以自然选择和遗传理论为基础,将生物进化过程中适者生存规则与群体内部染色体的随机信息交换机制相结合的高效全局寻优搜索算法。

    这样解释对于广大的初学者而言是既神秘又高大上的。实际上,我们可以这样理解:遗传算法可以解决传统的目标优化问题,但是,它摒弃了传统的搜索方式(如遍历搜索、枚举搜索等等),取而代之地采用一种基于搜索目标的“进化”搜索,即模拟了生物变异的随机性、遗传性,使得每一代的“搜索”跟前一代相比,既可能有共性(遗传),又可能有新的特征(变异)。遗传算法的搜索是“一代一代”地进行的,经过一定次数的搜索后,可以得出接近于搜索目标的结果(自然选择)。

二. Python上的遗传算法框架:

    遗传算法十分强大,但想很好地驾驭它,除了在深入研究其原理的阶段外,平常的使用中我们应该使用框架去实现。

Python上有一个简单易学的高性能遗传算法库:Geatpy,其用法跟Matlab的gatbx基本相同,很容易上手。同时支持gatbx所不支持的多目标优化,支持更多的遗传和进化算法的算子,使用C内核和MKL高性能矩阵库,性能上比Matlab高两个数量级。相关的介绍参见https://blog.csdn.net/qq_33353186/article/details/82014986以及github:https://github.com/geatpy-dev/geatpy

经过全面改版后,新版Geatpy2目前由华南农业大学、暨南大学、华南理工等本硕博学生联合团队开发及维护。是一款权威的高性能实用型遗传和进化算法工具箱。官网:http://www.geatpy.com

三. Matlab遗传算法工具箱:

matlab本身自带一个遗传算法工具箱,但其影响性和简易性不及Sheffield大学推出的Gatbx遗传算法工具箱。而这个工具箱事实上已经过时了,效率低、效果差,但这里还是稍微讲一下:

    工具箱的主要函数及功能简介如下:

 

 

函数

功能

创建种群

crtbase

创建基向量

crtbp

创建任意离散随机种群

crtrp

创建实值初始种群

适应度计算

ranking

常用的基于秩的适应度计算

scaling

比率适应度计算

选择函数

reins

一致随机和基于适应度的重插入

rws

轮盘选择

select

高级选择例程

sus

随机遍历采样

变异算子

mut

离散变异

mutate

高级变异函数

mutbga

实值变异

交叉算子

recdis

离散重组

recint

中间重组

reclin

线性重组

recmut

具有变异特征的线性重组

recombin

高级重组算子

xovdp

两点交叉算子

xovdprs

减少代理的两点交叉

xovmp

通常多点交叉

xovsh

洗牌交叉

xovshrs

减少代理的洗牌交叉

xovsp

单点交叉

xovsprs

减少代理的单点交叉

子种群的支持

migrate

在子种群间交换个体

实用函数

bs2rv

二进制串到实值的转换

rep

矩阵的复制

    gatbx工具箱的较为详细的用法可以参考《matlab遗传算法工具箱及应用》一书。下面先来介绍如何安装该工具箱:

    gatbx工具箱下载链接:http://download.csdn.net/download/qq_33353186/10252240

    安装步骤:把gatbx.rar解压至matlab安装目录下的toolbox文件夹里。运行matlab,在设置路径里添加该gatbx工具箱即可。

 

 

测试代码:

%% matlab_gatbx_test.m

%遗传算法求f(x)=x*sin(10*pi*x)+2.0,在[-1,2]上的最大值
figure(1);
fplot(@(variable)variable.*sin(10*pi*variable)+2.0,[-1,2]);   %画出函数曲线
%定义遗传算法参数
NIND=40;        %个体数目(Number of individuals)
MAXGEN=25;      %最大遗传代数(Maximum number of generations)
PRECI=20;       %变量的二进制位数(Precision of variables)
GGAP=0.9;       %代沟(Generation gap)说明子代与父代的重复率为0.1
trace=zeros(MAXGEN,2);                        %寻优结果的初始值
FieldD=[20;-1;2;1;0;1;1];                      %区域描述器(Build field descriptor),第2、3行为自变量的下界和上界
Chrom=crtbp(NIND, PRECI);                      %定义初始种群
gen=0;                                         %代计数器
variable=bs2rv(Chrom, FieldD);                 %计算初始种群的十进制转换
ObjV=shang(variable);        %计算目标函数值
while gen<MAXGEN %进化MAXGEN代
   FitnV=ranking(-ObjV);                                  %分配适应度值(Assign fitness values)ranking函数的功能就是目标值越小的分配值越大,
                                                          %本例求解最大值,应该要是他的适应度值更大,故必须使得ranking内的数越小,这样分配的适应度值才能大
   SelCh=select('sus', Chrom, FitnV, GGAP);               %选择,使用sus方式,也可以改用rws方式
   SelCh=recombin('xovsp', SelCh, 0.7);                   %重组,选用xovsp方式
   SelCh=mut(SelCh);                                      %变异
   variable=bs2rv(SelCh, FieldD);                         %子代个体的十进制转换,把染色体变为十进制
   ObjVSel=shang(variable);             %计算子代的目标函数值
   [Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新种群
   variable=bs2rv(Chrom, FieldD);                         %子代个体的十进制转换,转为十进制
   gen=gen+1;                                             %代计数器增加
   %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号
   [Y, I]=max(ObjV);hold on;
   plot(variable(I), Y, 'ro');
   trace(gen,1)=max(ObjV);                                %遗传算法性能跟踪,把当代的最优值放入trace矩阵的第一行第目前代数列
   trace(gen,2)=sum(ObjV)/length(ObjV);                   %把当代种群目标函数的均值,放入trace矩阵的第二行第目前代数列
end
variable=bs2rv(Chrom, FieldD);                            %最优个体的十进制转换,转回十进制,以便输出
hold on;
grid on;
plot(variable,ObjV,'b*');
figure(2);
plot(trace(:,1)); %把trace矩阵的第一列画出来(记录的是每一代的最优值)
hold on;
plot(trace(:,2),'-.');grid %把trace矩阵的第2列画出来(记录的是每一代种群目标函数均值)
legend('解的变化','种群均值的变化')


function z=shang(x) % 目标函数的核心部分(即缺省了优化目标的纯函数)
    z=x.*sin(10*pi*x)+2.0;

end

%运行结果:

gatbx工具箱(直接可用版)下载链接:http://download.csdn.net/download/qq_33353186/10252240

事实上,gatbx早已在2003年就被国外淘汰了。gatbx的核心作者在gatbx的基础上进一步写成了GEATbx遗传算法工具箱。该工具箱更加全面地支持遗传算法,同时支持多目标优化。然而,该工具箱是闭源的,金额昂贵,因此也只兴起了5年左右,作者就停止对其的后续支持了。建议大家就不要再入坑了。

在AI时代、工业4.0时代,还是极力推荐使用Python。

Python的Geatpy是高性能的,由于MKL矩阵库和C内核的加持,其性能远高于matlab遗传算法工具箱及类似的诸如gatbx、GEATbx、gaot等第三方工具箱。尤其适合需要应用遗传或其他进化算法求解建模问题、与当前的其他项目结合、抑或是需要一个平台来从事进化算法研究与实验的用户。

Geatpy官网:http://www.geatpy,com

项目及源码:https://github.com/geatpy-dev/geatpy

相关博客:

https://blog.csdn.net/qq_33353186/article/details/82014986

https://blog.csdn.net/qq_33353186/article/details/82020507(待更新)

https://blog.csdn.net/qq_33353186/article/details/82021750(待更新)

https://blog.csdn.net/qq_33353186/article/details/82047692(待更新)

MATLAB工具箱介绍-GATBX遗传算法工具箱.txt 序号工具箱备注数学、统计与优化1Symbolic Math Toolbox符号数学工具箱2Partial Differential Euqation Toolbox偏微分方程工具箱3Statistics Toolbox统计学工具箱4Curve Fitting Toolbox曲线拟合工具箱5Optimization Toolbox优化工具箱6Global Optimization Toolbox全局优化工具箱7Neural Network Toolbox神经网络工具箱8Model-Based Calibration Toolbox基于模型矫正工具箱信号处理与通信9Signal Processing Toolbox信号处理工具箱10DSP System ToolboxDSP[size= 0]系统工具箱11Communications System Toolbox通信系统工具箱12Wavelet Toolbox小波工具箱13Fixed-Point Toolbox定点运算工具箱14RF Toolbox射频工具箱15Phased Array System Toolbox相控阵系统工具箱控制系统设计与分析16Control system Toolbox控制系统工具箱17System Indentification Toolbox系统辨识工具箱18Fuzzy Logic Toolbox模糊逻辑工具箱19Robust Control Toolbox鲁棒控制工具箱20Model Predictive Control Toolbox模型预测控制工具箱21Aerospace Toolbox航空航天工具箱图像处理与计算机视觉22Image Processing Toolbox图像处理工具箱23Computer Vision System Toolbox计算机视觉工具箱24Image Acquisition Toolbox图像采集工具箱25Mapping Toolbox地图工具箱测试与测量26Data Acquisition Toolbox数据采集工具箱27Instrument Control Toolbox仪表控制工具箱28Image Acquisition Toolbox图像采集工具箱29OPC ToolboxOPC[size= 0]开发工具30Vehicle Network Toolbox车载网络工具箱计算金融31Financial Toolbox金融工具箱32Econometrics Toolbox计算经济学工具箱33Datafeed Toolbox数据输入工具箱34Fixed-Income Toolbox固定收益工具箱35Financial Derivatives Toolbox衍生金融工具箱计算生物33Bioinformatics Toolbox生物信息工具箱34SimBiology生物学工具箱并行计算35Parallel Computing Toolbox并行计算工具箱36MATLAB Distributed Computing ServerMATLAB[size= 0]分布式计算服务器数据库访问与报告37Database Toolbox数据库工具箱38MATLAB Report Generator MATLAB[size= 0]报告生成MATLAB[size= 0]代码生成39MATLAB CoderMATLAB[size= 0]代码生成40Filter Design HDL Coder[size= 0]滤波器设计HDL[size= 0]代码生成MATLAB[size= 0]应用发布41MATLAB CompilerMATLAB[size= 0]编译器 混合编程42MATLAB Builder NEfor Microsoft.Net Framework43MATLAB Builder JAfor Java Language44MATLAB Builder EXfor Microsoft Excel45Spreadsheet Link EXfor Microsoft Excel Simulink模块 序号工具箱备注信号处理与通信1DSP System ToolboxDSP[size= 0]系统工具箱2Communications System Toolbox通信系统工具箱3Computer Vision System Toolbox 计算机视觉工具箱4SimRFRF [size= 0]模块集功能控制系统设计与分析5Simulink Control DesignSimulink [size= 0]控制器设计6Simulink Design Optimization Simulink [size= 0]设计优化7Aerospace Blockset 航空航天模块物理建模8Simscape物理模型仿真模块组9SimMechanics机构动态仿真模块组10SimDriveline传动系统系统仿真模块组11SimHydraulics液压仿真模块组12SimRFRF[size= 0]仿真模块组13SimElectronics电子仿真模块组14SimPowerSystems动力系统仿真模块组基于事件的建模15Stateflow16SimEvents快速原型和硬件再回路仿真17xPC Target18xPC Target Embedded Option19Real-Time Windows Target仿真绘图与报告20Simulink 3D Animation21Gauges Blockset22Simulink Report Generator验证、确认和测试23Simulink Verfication and Validation24Simulink Design Verifier25System Test26EDA Simulator Link27Simulink Code Inspector定点建模28Simulink Fixed Point代码生成29Simulink Coder30Embedded Coder31Simulink HDL Coder32Simulink PLC Coder33Do Qualification Kitfor DO-17834IEC Certification Kitfor ISO 26262 and IEC 61508
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值