前言

为了省略艰深难懂的遗传算法数学理论和降低程序开发的难度,MATLAB软件已经将遗传算法命令进行了封装,做成专门的遗传算法工具箱(GA Toolbox),方 便用户调用

1.ga函数

ga函数是对目标函数进行遗传计算,其格式如下:

[x, fval, exitflag, output, population, scores] = ga(fitnessfen, nvars, ...options)

其中,fitnessfun为适应度句柄函数; nvars 为目标函数自变量的个数; options 为算法的属性设置,该属性是通过函数gaoptimset赋予的;x为经过遗传进化以后自变量最佳染色体返回值;fval为最佳染色体的适应度;exitflag为算法停止的原因;output为输出的算法结构;population为最终得到种群适应度的列向量;scores为最终得到的种群。

例1 已知不等式

使用ga函数求x1,x2的值。

clear all;
clc;
A=[1 1;-1 2;2 1];
b =[2;2; 3];
lb = zeros(2,1);
[x,fval,exitflag] = ga(@lincontest6,2,A, b,[],[],lb)

2.gaoptimset函数

gaoptimset函数是设置遗传算法的参数和句柄函数,如表介绍常用的11种属性。

属性名 默认值 实现功能
PopInitRange [0;1] 初始种群生成空间
PopulationSize 20 种群规模
CrossoverFraction 0.8 交配概率
MigrationFraction 0.2 变异概率
Generations 100 超过进化代数时算法停止
TimeLimit Inf 超过运算时间限制时算法停止
FitnessLimit Inf 最佳个体等于或小于适应度阈值时算法停止
StallGenLimit 50 超过连续代数不进化则算法停止
StallTimeLimit 20 超过连续时间不进化则算法停止
InitialPopulation [ ] 初始化种群
PlotFens [ ] 绘图函数

其使用格式如下:

options = gaoptimset('param1',value1, 'param2', value2, ...)

由于遗传算法本质上是一种启发式的随机运算,算法程序经常重复运行多次才能得到理想结果。鉴于此,可以将前一次运行得到的最后种群作为下一次运行的初始种群,如此操作会得到更好的结果:

[x, fval, reason, output, final_pop] = ga(@fitnessfcn, nvars);

最后一个输出变量final_pop返回的就是本次运行得到的最后种群。再将final_pop作为ga函数的初始种群,语法格式如下:

options = gaoptimset( 'InitialPopulation', finnal_ pop) ;
[x, fval, reason, output, finnal_pop2] = ga(@fitnessfcn, nvars, options) ;

遗传算法和直接搜索工具箱中的ga函数是求解目标函数的最小值,所以求目标函数最小值的问题,可直接令目标函数为适应度函数。编写适应度函数,语法格式如下:

function f = fitnessfen(x)  %x为自变量向量
f=f(x);

如果有约束条件(包括自变量的取值范围),对于求解函数的最小值问题,可以使用如下语法格式:

function f= fitnessfcn(x)
if( x<= -1|x>3)
%表示有约束x>-1和x<-3,其他约束条件类推f= inf;
elsef= f(x);
end

如果有约束条件(包括自变量的取值范围),对于求解函数的最大值问题,可以使用如下语法格式:

function f= fitnessfcn(x)
if(x<=-1|x>3)f= inf;
elsef= -f(x);
%这里 f=-f(x),而不是f=f(x)
end

若目标函数作为适应度函数,则最终得到的目标函数值为 -fval 而不是fval。

3.gaoptimget函数

该函数用于得到遗传算法参数结构中的参数具体值。其调用格式如下:

val = gaoptimget( options, 'name' )

其中,options为结构体变量;name为需要得到的参数名称,返回值为val。

例2 利用遗传算法求解函数

f(x,y) = (cos(x2 +y2)-0.1)/(1+0.3(x2+y2)2)+3的最大值。

解:首先创建遗传算法 的适应度函数。

function y= ga43(x)y= (cos(x(1)^2 + x(2)^3)-0.1)/(1+0.3* (x(1)^2+ x(2)^2)^2) + 3;
end

然后利用遗传算法寻找函数最大值,在MATLAB命令行窗口输人代码如下:

[x, fval, exitflag, output, population, scores] = ga(@ga43,2)

结果:

遗传算法matlab工具箱及其应用相关推荐

  1. matlab多目标遗传算法,MOGA多目标遗传算法Matlab工具箱 NSGA-II

    本来想找MOPSO多目标粒子群算法的matlab工具箱的,但是还没找到.只是有人看到用Matlab的MOGA工具箱. 也挺好的,至少可以直接拿过来做MOP多目标问题的求解. NSGA-II is a ...

  2. 遗传算法MATLAB工具箱的下载与安装

    一. 工具箱下载 1.gatbx(英国设菲尔德大学遗传算法工具箱)下载地址   http://www.shef.ac.uk/acse/research/ecrg/gat.html    在页面上的下部 ...

  3. 粒子群matlab工具箱,科学网—PSO粒子群优化算法Matlab工具箱 - 白途思的博文

    PSO做实数优化有自身特性优势.而且全局寻优性能比较好. 只是该工具箱中的Trelea, Clerc两种类型的PSO我不了解,正在找这方面的资料看看. Robust Particle Swarm to ...

  4. matlab中alw,MATLAB环境下遗传算法优化工具箱的应用_刘万林

    M A T LAB 环境下遗传算法优化工具箱的应用 刘万林,张新燕,晁勤 (新疆大学电气工程学院,新疆乌鲁木齐830008)摘 要:用M A T L AB 语言及M A T L AB 语言编制的优化工 ...

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

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

  6. 90多款matlab工具箱打包放送

    为了方便小伙伴们更加便捷地使用matlab,少造轮子.今天特地给大家分享小编收集整理的matlab工具箱,内容丰富多彩,涵盖内容广泛.废话不多说,直接上工具箱菜单,获取方式见文末. 1 2/3维图像分 ...

  7. 最全的Matlab工具箱免费分享

    最全的Matlab工具箱免费分享 (2009-09-24 15:35:08) 标签:资源下载    Gerald Recktenwald <Numerical Methods with MATL ...

  8. MATLAB工具箱大全

    MATLAB工具箱大全 [MATLAB工具箱大全]信号处理,图像处理,人工智能,神经网络,支持向量机,优化计算,混沌分析,模式识别,人脸识别,指纹识别等MATLAB工具箱源代码下载大全 严正声明: ( ...

  9. 非线性整数规划的遗传算法Matlab程序

    非线性整数规划的遗传算法Matlab程序 通常,非线性整数规划是一个具有指数复杂度的NP问题,如果约束较为复杂,Matlab优化工具箱和一些优化软件比如lingo等,常常无法应用,即使能应用也不能给出 ...

  10. matlab2017中工具箱,【2017年整理】matlab工具箱介绍.ppt

    [2017年整理]matlab工具箱介绍 第六讲 Matlab工具箱;一.工具箱简介;领域型工具箱 -- 专用型 领域型工具箱是学科专用工具箱,其专业性很强,比如控制系统工具箱( Control Sy ...

最新文章

  1. Python:Spider
  2. ef mysql自动更新_EF Core中怎么实现自动更新实体的属性值到数据库
  3. 请说明一下MyBatis中命名空间(namespace)的作用是什么?
  4. Modbus RTU 通信应用案例
  5. HDFS2.x之RPC流程分析
  6. Spring 基于构造函数的依赖注入
  7. 双十一囤点知识干货!
  8. zTree入门实例(一眼就看会)
  9. Docker详解(二)——Docker技术原理与架构
  10. 压力测试与负载测试的区别
  11. ctrl+d与ctrl+c
  12. InstallShield 软件打包完整教程
  13. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(八)——反馈
  14. “衣带渐宽终不悔,为伊消得人憔悴”的赏析
  15. QCC512x QCC302x 打开 BLE 功能
  16. 老年人智能手机APP开发界面设计因素
  17. 解决CPU风扇噪音故障
  18. Python Tkinter Canvas该如何使用
  19. 九宫格游戏c语言代码,C++代码实现寻找九宫格游戏所有答案
  20. html制作百度页面

热门文章

  1. iOS Firebase如何上传.dSYM包
  2. 时间序列研(part11)--EG两步法
  3. delphi问题归档(转载摘录)
  4. 揭开银行U盾的秘密---签发CA证书:单向认证+双向认证(含java代码)
  5. 嵌入式开发比单片机开发难?
  6. 下载安装php详细教程(在安装配置apache之后)
  7. 计算机网络强制100M,网络连通性故障分析与排除二例
  8. 单片机原理与c语言程序设计付先成版答案,单片机原理与C语言程序设计
  9. 浅谈如何提高电子海图拼图的正确率
  10. 计算机图形图像学研究,计算机图形学与图形图像处理技术