谢菲尔德大学的MATLAB遗传算法工具箱(附代码文件)
从今天起我想记录下我的学习历程,将成果总结起来,方便日后复习
关于MATLAB遗传算法的工具箱文件放在文章末尾需要的自取
首先,我先来简单说明下如何将工具箱添加到matlab中去
- 将工具箱文件夹复制到本地计算机中的工具箱目录下,路径为matlabroot\toolbox。其中matlabroot为matlab的安装目录
- 将工具箱所在的文件夹添加到MATLAB的搜索路径中,可以通过调用addpath命令来添加,如:
%取得工具箱完整路径 str = [matlabroot, '\toolbox\gatbx']; %添加到matlab的搜索路径中 addpath(str)
- 可以使用函数ver查看gatbx工具箱的名字、发行版本等
>> v = ver('gatbx')v = 包含以下字段的 struct:Name: 'Genetic Algorithm Toolbox'Version: '1.2'Release: ''Date: '15-Apr-94'
接下来就直接放个案例看看吧
简单一元函数的优化
遗传算法优化程序代码:
%% 简单一元函数优化
clc, clear
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 < maxgenfitnv = 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*');%% 画进化图
figure(2);
plot(1 : maxgen, trace(2, :));
grid on;
xlabel('遗传代数')
ylabel('解的变化')
title('进化过程')
best_y = trace(2, end);
best_x = trace(1, end);
fprintf(['最优解:\nX=', num2str(best_x), '\nY=', num2str(best_y), '\n'])
运行后会输出两张图,左图为目标函数图,图二为进化图
多元函数优化
遗传算法优化程序代码:
%% 多元函数优化
clc, clear
close all%% 画出函数图
figure(1);
lbx = -2; ubx = 2;
lby = -2; uby = 2;
ezmesh('x*cos(2*pi*y) + y*sin(2*pi*x)', [lbx, ubx, lby, uby], 50);
hold on;%% 定义遗传算法参数
nind = 40; %种群大小
maxgen = 50; %最大遗传迭代次数
preci = 20; %个体长度
ggap = 0.95; %代沟
px = 0.7; %交叉概率
pm = 0.01; %变异概率
trace = zeros(3, maxgen); %寻优结果初始化
fieldd = [preci preci;lbx lby;ubx uby;1 1;0 0;1 1;1 1]; %区域描述器
chrom = crtbp(nind, preci * 2); %种群初始化(任意离散随机种群)%% 优化
gen = 0; %代计数器
XY = bs2rv(chrom, fieldd); %初始种群二进制转十进制
X = XY(:, 1); Y = XY(:, 2);
objv = X .* cos(2*pi*Y) + Y .* sin(2*pi*X); %计算目标函数值
while gen < maxgenfitnv = ranking(-objv); %分配适应度值selch = select('sus', chrom, fitnv, ggap); %选择selch = recombin('xovsp', selch, px); %交叉selch = mut(selch, pm); %变异XY = bs2rv(selch, fieldd); %子代个体十进制转换X = XY(:, 1); Y = XY(:, 2);objvsel = X .* cos(2*pi*Y) + Y .* sin(2*pi*X);[chrom, objv] = reins(chrom, selch, 1, 1, objv, objvsel); %重插入子代到父代,得到新种群XY = bs2rv(chrom, fieldd);gen = gen + 1;%获取每代的最优解及其序号,Y为最优解,i为个体的序号[Y, i] = max(objv);trace(1:2, gen) = XY(i, :);trace(3, gen) = Y;
end
plot3(trace(1, :), trace(2, :), trace(3, :), 'bo'); %绘制每一代的最优点
grid on;
plot3(XY(:, 1), XY(:, 2), objv, 'b*');
hold off%% 画进化图
figure(2);
plot(1 : maxgen, trace(3, :));
grid on;
xlabel('遗传代数')
ylabel('解的变化')
title('进化过程')
best_z = trace(3, end);
best_y = trace(2, end);
best_x = trace(1, end);
fprintf(['最优解:\nX=', num2str(best_x), '\nY=', num2str(best_y), '\nZ=', num2str(best_z), '\n'])
结果展示
遗传算法工具箱提供了一种求解非线性、多模型、多目标、等复杂系统优化问题的通用框架,它不依赖问题的具体领域,对问题的种类具有很强的鲁棒性,所以它广泛应用于各个科学领域。
第一次写,内容有些简短,主要还是受到我的室友刘锐的启发
链接:https://pan.baidu.com/s/1LLp1y2O1tMwSRcrKvF7EAA
提取码:ih1x
--来自百度网盘超级会员V3的分享
谢菲尔德大学的MATLAB遗传算法工具箱(附代码文件)相关推荐
- 《MATLAB智能算法30个案例》:第1章 谢菲尔德大学的MATLAB遗传算法工具箱
<MATLAB智能算法30个案例>:第1章 谢菲尔德大学的MATLAB遗传算法工具箱 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. 小结 1. 前言 & ...
- 谢菲尔德大学遗传算法gatbx工具箱安装
在接触遗传算法时,常提及谢菲尔德大学遗传算法的matlab工具箱,从网上搜了很多博客都没有说到怎么去安装,而且工具箱的下载需要积分,非常让人讨厌,授人以鱼不如授人以渔嘛. (1)免费下载(官网) ht ...
- 谢菲尔德大学计算机科学学院地理位置,2020年谢菲尔德大学在哪里及校区详细地址介绍...
谢菲尔德大学(推荐阅读:谢菲尔德大学)大部分的建筑都盖在附近,但它并不是一所校园型大学(campus university).谢菲尔德大学有五片校区,具体信息如下: 1.主校区 位于谢菲尔德市中心以西 ...
- 2021Matlab遗传算法谢菲尔德大学遗传工具箱的使用
谢菲尔德遗传工具箱的使用 先下载谢菲尔德遗传工具箱包(关注私聊可获取) 2021Matlab安装方法 先下载谢菲尔德遗传工具箱包,把里面文件夹gatbx复制到matlab安装包toolbox文件夹下, ...
- matlab vtu,谢菲尔德大学遗传算法工具介绍-matlab
1.简介 遗传算法(genetic algorithm,GA)是一种仿效生物学界"物竞天择,适者生存"的演化法则变化而来.遗传算法中,通过八问题参数编码成染色体,利用迭代的方进行选 ...
- 谢菲尔德高级计算机科学技术课程,2020年谢菲尔德大学高级计算机科学专业研究生申请条件及世界排名|学费介绍...
1.选修课 Text Processing Modelling and Simulation of Natural Systems Speech Processing Theory of Distri ...
- 谢菲尔德遗传算法工具箱--Ranking函数
事先声明,我没有系统的学习过该工具箱的函数细节,所以下面的都是我个人的推测而已. 计算公式是: sp是压差. 就这么看,我看了半天也没明白这东西有什么用,后来我写了个栗子,突然明白了.看下图. 不知道 ...
- matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
matlab遗传算法工具箱中的例子不能用,我也发现了,求助 figure(1); fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲 ...
- 基于Matlab遗传算法工具箱解决物流中心选址
目录 1.问题 2.建模 3.Matlab编程.求解 1.问题 物流配送中6个客户的位置坐标和配数数量如表1所示,如何设置物流配数中心使得配送量最小. 2.建模 3.Matlab编程.求解 编写目标函 ...
- matlab bs2rv.m,matlab遗传算法工具箱gatbx(直接可用版)
[实例简介] 这是最好用的matlab遗传算法工具箱:gatbx,工具箱可直接使用.安装说明及使用简介可见<matlab遗传算法gatbx工具箱介绍及安装说明>一文. [实例截图] [核心 ...
最新文章
- 利用FFmpeg切割视频
- 安卓逆向工具apkide安装
- java 某个字符在字符串中出现的所有位置_Java面试常考核心概念
- html标签之img,input标签
- javascript中的var浅析
- Atitit 艾提拉博士带来“深度?广度?高度 人员的职业发展之路 ”的主题分享。 目录 1.1. 技术团队气氛的区别 开发架构模式	2 1.2. 技术人员的职业发展有哪些路线?	3 1.3. 主
- resin mysql_nginx+resin+mysql实现session共享
- 如何做好测试用例设计
- 自动与时间服务器时间同步,Windows系统时间同步(附时间同步服务器地址)
- Linux操作系统思维导图
- 软件测试工程师面试技巧---问答篇
- PyQt学习随笔:重写组件的event方法捕获组件的事件
- 数据结构-九宫格(回溯法)
- Android一些控件上显示的英文字母都被转为大写字母的原因分析及问题解决
- python的time模块使用
- 计算机文件云同步,电脑文件夹同步
- ContentType所有类型对比
- python3爬虫系列21之selenium自动化登录163邮箱并读取未读邮件内容
- 解读 CreateMutexWin32A
- 看日光穿过手指 享受芬芳的下午茶