遗传算法

学了一阵子遗传算法理论了,今天拿个实例来学习。

  • 我理解的遗传算法就是受到大自然的启发,物竞天择的思想。

  • 例如上图中,我们要求最大值,我们当然可以正常求导,利用函数的导函数的性质来判断,然而遗传算法的做法就是首先随机在这些曲线上取点,模拟大自然的物种,利用数学函数来模拟基因的复制,交叉,变异。利用适应度函数来决定哪些点可以留下,然后就一直留下最优的点继续运算,理论上一定会找到最优点。

例如:求函数f(x)=x +10sin(5x)+7cos(4x)的最大值

  • 先看看他的图像
%% II. 绘制函数曲线
x = 0:0.01:9;
y =  x + 10*sin(5*x)+7*cos(4*x);figure
plot(x, y)
xlabel('自变量')
ylabel('因变量')
title('y = x + 10*sin(5*x) + 7*cos(4*x)')
grid on%添加网格

  • 超级多极小值和极大值。

下面就是利用goat工具包进行求解

  • 我首先介绍几个主要的函数
    (1) function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)–初始种群的生成函数
    【输出参数】
    pop–生成的初始种群
    【输入参数】
    num–种群中的个体数目
    bounds–代表变量的上下界的矩阵
    eevalFN–适应度函数
    eevalOps–传递给适应度函数的参数
    options–选择编码形式(浮点编码或是二进制编码)[precision F_or_B],如
    precision–变量进行二进制编码时指定的精度
    F_or_B–为1时选择浮点编码,否则为二进制编码,由precision指定精度)
  • (2)function [x,endPop,bPop,traceInfo] =ga(bounds,evalFN,evalOps,startPop,opts,…
    termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)–遗传算法函数
    【输出参数】
    x–求得的最优解
    endPop–最终得到的种群
    bPop–最优种群的一个搜索轨迹
    【输入参数】
    bounds–代表变量上下界的矩阵
    evalFN–适应度函数
    evalOps–传递给适应度函数的参数
    startPop-初始种群
    opts[epsilon prob_ops display]–opts(1:2)等同于initializega的options参数,第三个参数控制是否输出,一般为0。如[1e-6 1 0]
    termFN–终止函数的名称,如[‘maxGenTerm’]
    termOps–传递个终止函数的参数,如[100]
    selectFN–选择函数的名称,如[‘normGeomSelect’]
    selectOps–传递个选择函数的参数,如[0.08]
    xOverFNs–交叉函数名称表,以空格分开,如[‘arithXoverheuristicXover simpleXover’]
    xOverOps–传递给交叉函数的参数表,如[2 0;2 3;20]
    mutFNs–变异函数表,如[‘boundaryMutationmultiNonUnifMutation nonUnifMutation unifMutation’]
    mutOps–传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]

1.首先要创建一个适应度函数文件fitness.m

function [sol, fitnessVal] = fitness(sol,option)x = sol(1);fitnessVal = x + 10*sin(5*x)+7*cos(4*x);
%如果求最小值   可以   1/x + 10*sin(5*x)+7*cos(4*x);end

2.然后就是运用函数进行遗传算法的计算

%% I. 清空环境变量
%optimtool    solver   中选择   GA
%添加 gaot工具箱
clear
clc%% II. 绘制函数曲线
x = 0:0.01:9;
y =  x + 10*sin(5*x)+7*cos(4*x);figure
plot(x, y)
xlabel('自变量')
ylabel('因变量')
title('y = x + 10*sin(5*x) + 7*cos(4*x)')
grid on%添加网格%% III. 初始化种群
initPop = initializega(50,[0 9],'fitness');    %种群大小;变量变化范围;适应度函数的名称
%看一下initpop     第二列代表   适应度函数值
%% IV. 遗传算法优化
[x endPop bpop trace] = ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,...'normGeomSelect',0.08,'arithXover',2,'nonUnifMutation',[2 25 3]);
%变量范围上下界;适应度函数;适应度函数的参数;初始种群;精度和显示方式;终止函数的名称;
%终止函数的参数;选择函数的名称;选择函数的参数;交叉函数的名称;交叉函数的参数;变异函数的
%名称;变异函数的参数
%  X    最优个体     endpop   优化终止的最优种群    bpop 最优种群的进化轨迹   trace   进化迭代过程中
%最优的适应度函数值和适应度函数值矩阵%% V. 输出最优解并绘制最优点
x
hold on
plot (endPop(:,1),endPop(:,2),'ro')%% VI. 绘制迭代进化曲线
figure(2)
plot(trace(:,1),trace(:,3),'b:')
hold on
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation'); ylabel('Fittness');
legend('Mean Fitness', 'Best Fitness')

看看效果



由此就找到了此函数的最大值。

matlab遗传算法之goat工具箱相关推荐

  1. matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?

    matlab遗传算法工具箱中的例子不能用,我也发现了,求助 figure(1); fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);   %画出函数曲 ...

  2. matlab自带的优化工具箱,MATLAB 自带优化工具箱(optimization Tool)之遗传算法简述...

    MATLAB 自带优化工具箱(optimization Tool)之遗传算法简述 MATLAB 自带优化工具箱(optimization Tool)之遗传算法简述 MATLAB 自带优化工具箱(opt ...

  3. 基于Matlab遗传算法工具箱解决物流中心选址

    目录 1.问题 2.建模 3.Matlab编程.求解 1.问题 物流配送中6个客户的位置坐标和配数数量如表1所示,如何设置物流配数中心使得配送量最小. 2.建模 3.Matlab编程.求解 编写目标函 ...

  4. matlab bs2rv.m,matlab遗传算法工具箱gatbx(直接可用版)

    [实例简介] 这是最好用的matlab遗传算法工具箱:gatbx,工具箱可直接使用.安装说明及使用简介可见<matlab遗传算法gatbx工具箱介绍及安装说明>一文. [实例截图] [核心 ...

  5. matlab 工具箱 GATBX 的安装,安装Sheffield Matlab遗传算法工具箱的建议

    在通常的遗传算法学习中,可以直接对目标函数进行编写,但是当我们需要使用simulink进行仿真优化需要用到遗传算法时,我这里有两种建议:①在模型中添加sfunction然后使用自己喜欢的语言进行编写: ...

  6. matlab 遗传算法工具箱(GATBX)

    matlab 遗传算法工具箱(GATBX) 遇到的问题: 找不到 'bs2rv.m' 的完全匹配项(区分大小写) 最接近的匹配项为 D:\soft\Matlab2021a\toolbox\gatbx\ ...

  7. MATLAB遗传算法工具箱安装出现问题总结

    MATLAB遗传算法工具箱安装出现问题总结 参考博文 链接: link. 问题描述: 按照该博文操作后,仍出现一些问题: 输入>> [Chrom,N,Base] = crtbp(5,10) ...

  8. matlab遗传算法Sheffield工具箱下载及安装

    matlab遗传算法Sheffield工具箱下载及安装 资源下载 安装包也在我的博客里(可以免费下载,如果被修改了积分下载可以Si_xin_wo),地址: matlab遗传算法Sheffield工具箱 ...

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

    一. 遗传算法简介: 官网:http://www.geatpy.com/tutorials 遗传算法是以自然选择和遗传理论为基础,将生物进化过程中适者生存规则与群体内部染色体的随机信息交换机制相结合的 ...

  10. 《MATLAB智能算法30个案例》:第1章 谢菲尔德大学的MATLAB遗传算法工具箱

    <MATLAB智能算法30个案例>:第1章 谢菲尔德大学的MATLAB遗传算法工具箱 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. 小结 1. 前言 & ...

最新文章

  1. 【组队学习】【29期】1. 编程实践(数据可视化)
  2. linux内核态real cred,Linux内核实验报告——实验5.doc
  3. VS2017 网站打包发布生成的文件中包含.pdb文件,解决办法
  4. 为什么虚拟机上一运行就显示程序停止_五分钟学Java:如何学习Java面试必考的JVM虚拟机||CSDN博文精选...
  5. 基于sigmoid的文本多标签分类模型代码实现
  6. 概率论在实际生活的例子_「收藏」不确定度是什么?两个例子让你清清楚楚
  7. 121道分布式面试题和答案
  8. RapidMiner介绍与实践(一)决策树
  9. HCIE安全笔试-H12-731 V2.0选择题难点解析
  10. 确定有限自动机DFA和非确定有限自动机NFA
  11. IE6升级到IE11兼容性问题和操作手册
  12. 股票入门(一)基础知识
  13. 数组——洛谷#P1567 统计天数(Python实现)
  14. java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file”
  15. 极光im java_java手写一个迷你版的Tomcat代码分享
  16. 计算机专业术语session,Session
  17. 初级测试工程师面试指南
  18. 从0开始学Unity做SLG系列(发布篇)
  19. Python3.7爬虫 大量爬取某小说网站小说并写入mysql(持续完善中...) 未解决问题:mysql长时间新增超过百万条数据表锁甚至崩溃...
  20. 5G射频芯片中的半导体

热门文章

  1. 安装zsh-autosuggestions zsh-syntax-highlighting
  2. sidirect 连接西门子_INTOUCH DASSIDirect3.0 DASSIDirect3.0驱动是西门子PLC与Intouch连接通讯的必备驱动程序 - 下载 - 搜珍网...
  3. 电脑、手机装机必备软件的抉择[土豆-侃天下]
  4. 太厉害了MySQL总结的太全面了
  5. 论文阅读 A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SEN- TENCE EMBEDDINGS
  6. 开机未发现nvidia控制面板_nvidia控制面板在哪?nvidia控制面板打不开怎么办?
  7. python怎么用反三角函数_反三角函数怎么用
  8. Centos7系统安装riscv-spike
  9. 大数据Hadoop之——数据仓库Hive
  10. android 集成x5内核时 本地没有,腾讯X5内核集成一些建议和爬坑记录