Ⅰ 有关怎么应用matlab遗传算法工具箱GUI
GA就是钙的意识,如果是CA 则是癌症的意识。
Ⅱ 求matlab遗传算法工具箱GA Toolbox。。并求解释如下
GA自己写一个就好了,也挺简单的。
虽然很多函数都能知道表达式,但是仍然版有很多函数不能用倒权数来求解,所以要知道空间的极值和最值就必须用遍历的方法。然而对于实数范围内或者大规模数据的离散数据情况下,遍历画图的方法会耗费很大的计算复杂度,因为你并不知道是在参数范围的边缘还是中间有最值,有多少个最值也不知道。GA就提供了一种基于种群的搜索优化方法,可以快速的收敛到优秀的解的个体,但是要防止陷入局部最优。
简而言之就是遍历的搜索方法要用时10小时完成的事情,GA快速优化可能1分钟或者10分钟搞定,占用内存也少。
Ⅲ 如何用遗传算法实现多变量的最优化问题
是不是像求函数最值那样子?建议你了解一下遗传算法的实数编码,这个对于求函数最值很方便,不用像二进制那样需要转换。
简单介绍一下思路:
最重要的是确定适应度函数,只要确定这个函数就很容易了,就用你不会编程,直接调用matlab的工具箱就行了。
1st.设置种群规模,并初始化种群p,并计算各个个体的适应度。
例如,20个个体,每个个体包含5个变量,x1,x2,x3,x4,x5.
如果你用matlab来编程的话,这个可以很容易实现,会用到random('unif',a,b)这个函数吧。
例如x1的取值范围是[0,1],那么x1=random('unif',0,1).
2nd.采用轮盘赌选出可以产生后代的父本,p_parents。
额,轮盘赌的实质就是适应度大的被选出的概率大。这个不难,但说起来比较长,你可以自己去看一下。
3rd.杂交过程的思路随机将p_parents中的个体随机两两配对,然后随机产生一个1到n的数(n为变量的个数),设为i,交换每对父本中i之后的变量值。交换以后的p_parents成为后代p_offspring.
这里变起来有点点复杂,不过只要耐心一点,编好配对过程和交换过程。
4th.变异过程,这个比较简单,不过需要自己把握的较好。
基本的思路是设置一个概率,例如0.05,然后产生一个随机数如果随机数比0.05小那么这个变量值就要产生微小的增加或减少。
这个变异过程要历遍p_offspring所有的变量喔。
5th.将p和p_offspring合并起来,然后选出适应度大的,重新构成一个如原始种群规模相等的种群。
Ⅳ Matlab问题--如何用遗传算法优化BP神经网络这篇文献(中文)是如何做的
MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.在新的版本中也加入了对C,FORTRAN,c++ ,JAVA的支持.可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用,非常的方便。
MATLAB的基础是矩阵计算,但是由于他的开放性,并且mathwork也吸收了像maple等软件的优点,使MATLAB成为一个强大的数学软件
当前流行的MATLAB 6.5/7.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.
开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.
Matlab的官方网站:http://www.mathworks.com
Matlab的优势和特点
(1)友好的工作平台和编程环境
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
(2)简单易用的程序语言
Matlab一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
(3)强大的科学计算机数据处理能力
MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如距阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
(4)出色的图形处理功能
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和距阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使他不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
(5)应用广泛的模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,他们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
(6)实用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。
MATLAB的一个重要特色就是他有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
(7)应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5。
(8) Matlab常用工具箱介绍(英汉对照)
Matlab Main Toolbox——matlab主工具箱
Control System Toolbox——控制系统工具箱
Communication Toolbox——通讯工具箱
Financial Toolbox——财政金融工具箱
System Identification Toolbox——系统辨识工具箱
Fuzzy Logic Toolbox——模糊逻辑工具箱
Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱
Image Processing Toolbox——图象处理工具箱
LMI Control Toolbox——线性矩阵不等式工具箱
Model predictive Control Toolbox——模型预测控制工具箱
μ-Analysis and Synthesis Toolbox——μ分析工具箱
Neural Network Toolbox——神经网络工具箱
Optimization Toolbox——优化工具箱
Partial Differential Toolbox——偏微分方程工具箱
Robust Control Toolbox——鲁棒控制工具箱
Signal Processing Toolbox——信号处理工具箱
Spline Toolbox——样条工具箱
Statistics Toolbox——统计工具箱
Symbolic Math Toolbox——符号数学工具箱
Simulink Toolbox——动态仿真工具箱
System Identification Toolbox——系统辨识工具箱
Wavele Toolbox——小波工具箱
例如:控制系统工具箱包含如下功能:
连续系统设计和离散系统设计
状态空间和传递函数以及模型转换
时域响应(脉冲响应、阶跃响应、斜坡响应)
频域响应(Bode图、Nyquist图)
根轨迹、极点配置
1.补充新的内容:
MATLAB R2007b正式发布了!MATLAB 2007b于2007年秋节正式发布,TMW正式发布了MATLAB R2007b,新版本涵盖:Simulink 7、新产品Simulink Design Verifier、Link for Analog Devices VisualDSP以及82个产品模块的更新升级及Bug修订。从现在开始,MathWorks公司将每年进行两次产品发布,时间分别在每年的3月和9 月,而且,每一次发布都会包含所有的产品模块,如产品的new feature、bug fixes和新产品模块的推出。
在R2007b中(MATLAB 7.4,Simulink 6.6),主要更新了多个产品模块、增加了多达350个新特性、增加了对64位Windows的支持,并新推出了.net工具箱。R2007b, released on March 1, 2007, includes updates to MATLAB and Simulink, two new procts released since R2007b, and updates and bug fixes to 82 other procts. R2007b adds support for the Intel® based Mac, Windows Vista™, and 64-bit Sun Solaris™ SPARC platforms.
这次的升级做了重大的增强,也升级了以下各版本,提供了MATLAB、SIMULINK的升级以及其他最新的模块的升级。这个Matlab 2007版本不仅仅提高了产品质量,同时也提供了新的用于数据分析、大规模建模、固定点开发、编码等新特征。
其中MATLAB Builder for .net扩展了MATLAB Compiler的功能,主要有:
可以打包MATLAB函数,使网络程序员可以通过C#,VB.net等语言访问这些函数;
创建组件来保持MATLAB的灵活性;
创建COM组件;
将源自MATLAB函数的错误作为一个标准的管理异常来处理。
R2007b 提供了重大的新功能: 直接在命令行使用 Real-Time Workshop 的 嵌入式 MATLAB 函数的 C 代码生成。 另外,Simulink 中的嵌入式 MATLAB 函数块支持多 M 文件中的算法。
MATLAB R2007b新版本中,产品模块进行了一些调整,MATLAB Builder for COM的功能集成到MATLAB Builder for .net中去了,Finacial Time Series Toolbox的功能集成到Financial Toolbox中了。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用 MATLAB 产品的开放式结构,可以非常容易地对 MATLAB 的功能进行扩充,从而在不断深化对问题认识的同时,不断完善 MATLAB 产品以提高产品自身的竞争能力。
作为和Mathematica、Maple并列的三大数学软件。其强项就是其强大的矩阵计算以及仿真能力。要知道Matlab的由来就是Matrix + Laboratory = Matlab,所以这个软件在国内也被称作《矩阵实验室》。每次MathWorks发布Matlab的同时也会发布仿真工具Simulink。在欧美很多大公司在将产品投入实际使用之前都会进行仿真试验,他们所主要使用的仿真软件就是Simulink。Matlab提供了自己的编译器:全面兼容C++以及 Fortran两大语言。所以Matlab是工程师,科研工作者手上最好的语言,最好的工具和环境。Matlab 已经成为广大科研人员的最值得信赖的助手和朋友!
Ⅳ (遗传算法)已知一系列多元函数的点(如A、B、C到D的函数点),如何用matlab的遗传算法工具箱求其最大值
首先要有一个目标函数,如:y=x1^2-1+x2^3,变量个数,如 2
再有不等式、等式、边界约束 ,如无则为[]
用命令求最小值点:
[x,fva]=ga(@y,2,A,b,Aeq,beq,Lb,Ub)
Ⅵ 如何使用遗传算法工具箱
you matlab么???如果有的话,先看看怎么用,先入门再请教哦。不然不知道怎么说
Ⅶ 如何用遗传算法实现多变量的最优化问题
将多个变量的数值编码编排进去,进行组合,只需要增长基因个体的长度,但是要明确每个变量具体的位置,然后让每个变量转化成二进制的等长编码,组合在一起,就可以来运算了。
具体操作步骤如下:
1、首先要利用一个矩阵去跟踪每组迭代的结果的大小:
2、然后,要构造一个译码矩阵FieldD,由bs2rv函数将种群Chrom根据译码矩阵换成时值向量,返回十进制的矩阵:
且FieldD矩阵的结构如下:
3、要先将目标函数显示出来,看看基本的函数的形式:
4、设计遗传算法的参数估计:
5、经遗传算法之后,这个最优解的位置是:(图中标记蓝点的位置)
Ⅷ MATLAB遗传算法工具箱该怎么使用呢
直接在命令窗口里边输入gatool就行了,用遗传算法还可以使用ga函数,具体使用格式可以在help系统里看ga,你还可以按照如下步骤打开遗传算法工具箱:1,打开MATLAB,2点击左下方的START按钮 3,点toolboxes,打开后选择Genetic Algorithm and Direct Search 然后就可以进入gatool了,然后就会弹出ga工具箱(注:我的版本是7.7的,不同版本可能不同),希望对你有用哈!
Ⅸ 遗传算法工具箱的具体使用
matlab遗传算法工具箱函数及实例讲解 核心函数:
(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--交叉函数名称表,以空格分开,如['arithXover heuristicXover simpleXover']
xOverOps--传递给交叉函数的参数表,如[2 0;2 3;2 0]
mutFNs--变异函数表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']
mutOps--传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]
【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9
【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为0.95,变异概率为0.08
【程序清单】
%编写目标函数
function[sol,eval]=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函数存储为fitness.m文件并放在工作目录下
initPop=initializega(10,[0 9],'fitness');%生成初始种群,大小为10
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',...
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遗传迭代
运算借过为:x =
7.8562 24.8553(当x为7.8562时,f(x)取最大值24.8553)
注:遗传算法一般用来取得近似最优解,而不是最优解。
遗传算法实例2
【问题】在-5<=Xi<=5,i=1,2区间内,求解
f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。
【分析】种群大小10,最大代数1000,变异率0.1,交叉率0.3
【程序清单】
%源函数的matlab代码
function [eval]=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%适应度函数的matlab代码
function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%遗传算法的matlab代码
bounds=ones(2,1)*[-5 5];
[p,endPop,bestSols,trace]=ga(bounds,'fitness')
注:前两个文件存储为m文件并放在工作目录下,运行结果为
p =
0.0000 -0.0000 0.0055
大家可以直接绘出f(x)的图形来大概看看f(x)的最值是多少,也可是使用优化函数来验证。matlab命令行执行命令:
fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9])
Ⅹ MATLAB遗传算法工具箱优化变量定义问题
你定义的目标函数有问题。应把h1、h2、h3看成一个变量组,即h=[h1,h2,h3],即
function y=Fitfun1(h)
y=25*h(1)+50*h(2)-10*h(3) %为了说回明问题,把函数表达答式写成该形式
如还不能理解,最好把具体问题贴出来,包括其约束条件,以便我们帮助你。