遗传算法matlab工具箱及其应用
前言
为了省略艰深难懂的遗传算法数学理论和降低程序开发的难度,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工具箱及其应用相关推荐
- matlab多目标遗传算法,MOGA多目标遗传算法Matlab工具箱 NSGA-II
本来想找MOPSO多目标粒子群算法的matlab工具箱的,但是还没找到.只是有人看到用Matlab的MOGA工具箱. 也挺好的,至少可以直接拿过来做MOP多目标问题的求解. NSGA-II is a ...
- 遗传算法MATLAB工具箱的下载与安装
一. 工具箱下载 1.gatbx(英国设菲尔德大学遗传算法工具箱)下载地址 http://www.shef.ac.uk/acse/research/ecrg/gat.html 在页面上的下部 ...
- 粒子群matlab工具箱,科学网—PSO粒子群优化算法Matlab工具箱 - 白途思的博文
PSO做实数优化有自身特性优势.而且全局寻优性能比较好. 只是该工具箱中的Trelea, Clerc两种类型的PSO我不了解,正在找这方面的资料看看. Robust Particle Swarm to ...
- matlab中alw,MATLAB环境下遗传算法优化工具箱的应用_刘万林
M A T LAB 环境下遗传算法优化工具箱的应用 刘万林,张新燕,晁勤 (新疆大学电气工程学院,新疆乌鲁木齐830008)摘 要:用M A T L AB 语言及M A T L AB 语言编制的优化工 ...
- matlab遗传算法Sheffield工具箱下载及安装
matlab遗传算法Sheffield工具箱下载及安装 资源下载 安装包也在我的博客里(可以免费下载,如果被修改了积分下载可以Si_xin_wo),地址: matlab遗传算法Sheffield工具箱 ...
- 90多款matlab工具箱打包放送
为了方便小伙伴们更加便捷地使用matlab,少造轮子.今天特地给大家分享小编收集整理的matlab工具箱,内容丰富多彩,涵盖内容广泛.废话不多说,直接上工具箱菜单,获取方式见文末. 1 2/3维图像分 ...
- 最全的Matlab工具箱免费分享
最全的Matlab工具箱免费分享 (2009-09-24 15:35:08) 标签:资源下载 Gerald Recktenwald <Numerical Methods with MATL ...
- MATLAB工具箱大全
MATLAB工具箱大全 [MATLAB工具箱大全]信号处理,图像处理,人工智能,神经网络,支持向量机,优化计算,混沌分析,模式识别,人脸识别,指纹识别等MATLAB工具箱源代码下载大全 严正声明: ( ...
- 非线性整数规划的遗传算法Matlab程序
非线性整数规划的遗传算法Matlab程序 通常,非线性整数规划是一个具有指数复杂度的NP问题,如果约束较为复杂,Matlab优化工具箱和一些优化软件比如lingo等,常常无法应用,即使能应用也不能给出 ...
- matlab2017中工具箱,【2017年整理】matlab工具箱介绍.ppt
[2017年整理]matlab工具箱介绍 第六讲 Matlab工具箱;一.工具箱简介;领域型工具箱 -- 专用型 领域型工具箱是学科专用工具箱,其专业性很强,比如控制系统工具箱( Control Sy ...
最新文章
- Python:Spider
- ef mysql自动更新_EF Core中怎么实现自动更新实体的属性值到数据库
- 请说明一下MyBatis中命名空间(namespace)的作用是什么?
- Modbus RTU 通信应用案例
- HDFS2.x之RPC流程分析
- Spring 基于构造函数的依赖注入
- 双十一囤点知识干货!
- zTree入门实例(一眼就看会)
- Docker详解(二)——Docker技术原理与架构
- 压力测试与负载测试的区别
- ctrl+d与ctrl+c
- InstallShield 软件打包完整教程
- 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(八)——反馈
- “衣带渐宽终不悔,为伊消得人憔悴”的赏析
- QCC512x QCC302x 打开 BLE 功能
- 老年人智能手机APP开发界面设计因素
- 解决CPU风扇噪音故障
- Python Tkinter Canvas该如何使用
- 九宫格游戏c语言代码,C++代码实现寻找九宫格游戏所有答案
- html制作百度页面