遗传算法与Matlab GA工具箱

这篇具有很好参考价值的文章主要介绍了遗传算法与Matlab GA工具箱。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 遗传算法(Genetic Algorithm)

1.1简介

  • GA是一种进化算法,基本原理效仿生物界“物竞天择,适者生存”的演化法则。

  • 一些基本概念

  • 种群population:问题潜在的解集

  • 个体individual:每一个可能的解,通过基因编码一定数目的个体形成一个种群

  • 适应度fitness:由此判断个体的优良,进而进行选择

  • 选择selection、交叉crossover、变异mutation

  • 编码:实现从表现型到基因型的映射

  • 解码:反之得到问题最优解

  • 首先将问题的解进行编码以适配GA,产生初代种群,在每一代中根据适应度大小选择个体,并借助遗传算子(genetic operator)进行交叉变异,产生代表新解集的种群,末代种群的最优个体经过解码,作为问题近似最优解。

1.2三个基本操作

  • 选择:从当前种群中选出优良个体,作为父代进行繁衍,使适应度强的个体为下一代贡献一个或多个后代的概率大。

  • 交叉:通过交叉得到新一代个体,新个体组合父辈个体特征。个体随机成对,以交叉概率交换它们之间部分染色体。

  • 变异:每一个个体以变异概率改变一个或多个基因座上基因值为其他的等位基因。与生物界相似,变异发生概率很低。

交叉和变异保证了个体和解空间的多样性

1.3基本步骤

遗传算法与Matlab GA工具箱
  1. 编码:将解空间的解数据表示成遗传空间的基因型串结构数据,串结构数据的不同组合便构成了不同的点。

  1. 初始种群的生成:随机产生N个初始串结构数据,每个串结构数据为一个个体,N个个体构成一个种群。GA以这N个串结构数据作为初始点开始进化。

  1. 适应度评估:适应度表示个体或解的优劣性。不同问题,适应度函数定义不同。

  1. 选择

  1. 交叉

  1. 变异

1.4 GA工具箱

  • MATLAB内嵌工具箱:gadst

  • Sheffield大学:gatbx

  • 北卡罗来纳大学:gaot

三者都差不多,开源(gaot)的可以看到代码,更好理解

1.5重点函数解读(gaot)

  • initializega

  • 初始化种群

  • pop = initializega(populationSize,variableBounds,evalFN,evalOps,options)

  • ga

  • 遗传算法

  • [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)

1.5.1一元函数优化

一元函数优化,默认为求最大值,如果要求最小值将适应度函数取倒数或者取负号

x = 0:0.01:9;
y =  x + 10*sin(5*x)+7*cos(4*x);
%求上述函数的最大值
%适应度函数
function [sol, fitnessVal] = fitness(sol, options)

x = sol(1);

fitnessVal = x + 10*sin(5*x)+7*cos(4*x);

end
%% I. 清空环境变量
clear all
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)');


%% III. 初始化种群
initPop = initializega(50,[0 9],'fitness');

%% 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]);


%% 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 GA工具箱
遗传算法与Matlab GA工具箱

1.5.2 二元函数优化

function [sol, fitnessVal] = fitness2(sol,options)
x1 = sol(1);
x2 = sol(2);
fitnessVal = cos(x1)-sin(x1).*cos(x2)+sin(x2);
end
%% 二元函数GA优化
close all;
clear all;
clc;
%% 二元函数
x1 = 1:0.01:8;
x2 = -3:0.01:7;
[X1,X2] = meshgrid(1:0.01:8,-3:0.01:7);
y = cos(X1)-sin(X1).*cos(X2)+sin(X2);
figure
mesh(X1,X2,y);
title('y=cos(x1)-sin(x1)cos(x2)+sin(x2)');
xlabel('x1');
ylabel('x2');
grid on
%% 初始化种群
pop = initializega(50,[1 8;-3 7],'fitness2');

%% GA优化
[x, endPop, bPop, trace] = ga([1 8;-3 7],'fitness2',[],pop,[1e-6 1 1],...
                               'maxGenTerm',30,'normGeomSelect',0.08,'arithXover',2,'nonUnifMutation',[2 25 3]);
%% 画图比较
x
hold on
plot3(x(1),x(2),x(3),'ro');
plot3(endPop(:,1),endPop(:,2),endPop(:,3),'b+');
figure
plot(trace(:,1),trace(:,2),'r-');%best
hold on
plot(trace(:,1),trace(:,3),'b--');%average
xlabel('Generation'); ylabel('Fittness');
legend('Best Fitness', 'Average Fitness')

结果:

遗传算法与Matlab GA工具箱
遗传算法与Matlab GA工具箱

2 MATLAB GA工具箱使用

  • 主要功能是求最小值,如果求最大值可以把目标函数乘以-1

遗传算法与Matlab GA工具箱
function f = fitness(x)
f = (x(1)-2)^2+(x(2)-1)^2+(x(3)-7)^2+(x(4)-9)^2;
end
%% 线性不等式约束
A = [-1 2 -1 1;-2 -1 2 -1];
b = [-1;-5];
  • 注意:不等式约束默认为小于等于零,所以上面的系数都加了负号。

%非线性约束,m为不等式,n为等式,多个式子时写成矩阵形式
function [m,n] = nonlinear(x)
m = -1*(x(1)^2/4-x(2)^2+x(3)-x(4)^2+1);
n = x(1)^2+x(2)-x(3)+x(4)-99; 
end

结果:

遗传算法与Matlab GA工具箱
遗传算法与Matlab GA工具箱
  • 注意

遗传算法与Matlab GA工具箱

整数约束如上所示,整数规划和非线性等式约束不能同时存在文章来源地址https://www.toymoban.com/news/detail-491153.html

到了这里,关于遗传算法与Matlab GA工具箱的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 遗传算法 (Genetic Algorithm, GA)

    遗传算法(Genetic Algorithm,简称GA)起源于对生物系统所进行的计算机模拟研究,是一种随机全局搜索优化方法,它模拟了自然选择和遗传中发生的复制、交叉(crossover)和变异(mutation)等现象,从任一初始种群(Population)出发,通过随机选择、交叉和变异操作,产生一群更适合

    2024年02月05日
    浏览(37)
  • 什么是遗传算法(Genetic Algorithm,简称 GA)?

    遗传算法(Genetic Algorithm,简称 GA)是一种基于自然选择和遗传学原理的优化搜索方法。它起源于 20 世纪 60 年代,由美国计算机科学家 John H. Holland 提出。遗传算法是通过模拟自然界生物进化过程中的达尔文自然选择和遗传遗传规律,对问题的解进行迭代更新,从而搜索最优

    2024年02月11日
    浏览(44)
  • 基于MATLAB的最小二乘法拟合与拟合工具箱使用教程(附完整代码与算法)

    给定一组数据满足某一函数模型,其中a为待定系数向量。 那么,最小二乘曲线拟合的目标就是:求出一组待定系数的值,使得以下表达式子最小: 在MATLAB中格式如下: 由以下MATLAB代码生成一组数据: 该组数据满足y(x),求出待定系数,使得目标函数的值为最小。 解: MATL

    2024年01月17日
    浏览(57)
  • 如何获取不同分区模板的基因表达矩阵,abagen: Allen 大脑图谱遗传数据工具箱的使用笔记

    基因表达从根本上塑造了人类大脑的结构和功能结构。像Allen人脑图谱这样的开放获取转录组数据集提供了前所未有的能力来检查这些机制。abagen工具箱,这是一个用于处理转录组学数据的开放获取软件包,并使用它来检查方法可变性如何影响使用Allen人脑图谱的研究结果。

    2024年02月08日
    浏览(158)
  • Matlab 优化工具箱

    语法:[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,options) f、x、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩阵。 示例1-1 : 语法:[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0,options) f、x、intcon、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩阵。 语法:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub

    2024年02月02日
    浏览(57)
  • MATLAB cftool工具箱——曲线拟合

        cftool工具箱可以将数据点拟合成曲线或曲面并直观显示出图像。能实现多种类型的线性、非线性曲线/面拟合。     有两种方式打开cftool:(1)在命令行窗口输入\\\"cftool\\\"并回车;(2)在MATLAB的\\\"APP\\\"选项栏中找到\\\"Curve Fitting\\\"程序打开即可。     界面左上部分为数据区域,下拉框中

    2024年02月08日
    浏览(52)
  • 【MATLAB第57期】基于MATLAB的双隐含层BP神经网络回归预测模型(无工具箱版本及工具箱版本对比)

    数据为案例数据 。103行样本,7输入1输出数据。 训练集数据的R2为:0.9022 测试集数据的R2为:0.87266 训练集数据的MAE为:1.8189 测试集数据的MAE为:2.1658 训练集数据的MBE为:-0.00088469 测试集数据的MBE为:0.3059 数据与无工具版本相同,数据顺序也相同。 训练集数据的R2为:1 测试

    2024年02月16日
    浏览(53)
  • 【Matlab】智能优化算法_遗传算法GA

    遗传算法(Genetic Algorithm,简称GA)是一种基于生物进化理论的优化算法,由John Holland于20世纪70年代初提出。它通过模拟自然选择和遗传机制,利用群体中个体之间的遗传信息交流和变异来搜索问题的解空间。 遗传算法的设计灵感来源于达尔文的进化论。达尔文提出,自然界

    2024年02月16日
    浏览(57)
  • Matlab样条工具箱及曲线拟合

    Matlab样条工具箱提供了样条的建立、操作、绘制等功能. 建立一个样条曲线或曲面,根据前缀可分为4类: 前缀 类别 cs* 三次样条 pp* 分段多项式样条 sp* B样条,系数为基函数系数 rp* 有理B样条 函数操作:求值、求导数、求积分等; 节点操作:节点重数的设定、修改等. 1.三次

    2024年02月08日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包