MATLAB调用遗传算法的迭代次数求参数的函数中,迭代次数怎么改啊

matlab遗传算法求函数最小值_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
matlab遗传算法求函数最小值
&&matlab遗传算法求函数最小值
你可能喜欢本帖子已过去太久远了,不再提供回复功能。遗传算法求解函数优化问题的Matlab实现_文档库
文档库最新最全的文档下载
当前位置: & 遗传算法求解函数优化问题的Matlab实现
遗传算法求解函数优化问题的Matlab实现
2010年第6期福建电脑
2个新的子代个体childl年tlchild2。GADr中提供的交叉函数有:
离散重组(Scattered)、线性重组圆k“廊斑J、单点交叉侈咖如
pDi叫等五种交叉方式,也a--I以自定义。交叉操作还需设置交叉
概率Pc,此参数控制着交叉操作的频率,Pc太大,会使高适应度
局部极小值.但只有一个全局最小点(0,0),最小值为O。其三维几何特性如图2所示。
l、编写Schaffer函数的M文件Schaffer.m:
function
z=Schatter(x)
值的结构很快被破化掉;PcX'l、,搜索会停滞不前,一般取D.笱至
z=((x(1心+x(2)2舯.25)+((sin(50+((x(1)-2+x(2)-2F0.1))心+1.o);
(5)变异甬数mutationfunction)
变异操作有利于保持种群的多样性、跳出局部极值,防止未成熟收敛。GAOT中提供的变异函数有高斯变异(Gaussian)、均匀变异(Uniform),也可以自定义。变异操作还需设置变异概率Pm,它是增大种群多样性的第二因素,P_太小,不会产生新的基因块,P太大.会使GA变成随机搜索,一般取0,01至0.20。
(6)停止条件(Stoppingconditions)
停止条件定义了算法终止的条件.GAOT中设置的参数有最大代数(Generationl、停止执行前的最大时问O'imelimited)、适应度限(Fitnesslimited)、停滞代数(Stall
2、设置参数和调用遗传算法的主程序:fitnessFunction=@Schaffer;
nvaLrs=2:
options=gaopfimseg%设置需要更改的参数结构体。不更改就采用缺省值
options
gaoptimset(options,"PoplnitRange',卜10;10】);%设
置初始范围
options=gaoptinmet(options。"PopulationSize',100);%设置种群大小
options
generation)、停滞时间(S讪
gaoptimset(options,"CrossoverFraction',O.9);%设置gaoptimset(opfions."Generations',100);%最大遗传
options
time)。
(7)主程序函数Ⅲainfunction)
主程序甬数的作用是调用相应的遗传操作甬数,完成遗传优化。主程序既ur编写为M文件。然后在MATLAB的Command窗1-3运行,也可从命令行运行遗传算法函数ga。Ga函数的用法为:
[xfval]2ga(@fitnessfcn,nval篙,options)
其中,输出参数:x为返回的最终点即最后变量值;fval为适应度函数在x点的值即最优值。输人参数:@fitnessfcn是计算适应度函数值的M文件的函数:nvars是适应度函数中独立变量的个数;opfions是参数结构体,可以缺省。
每一个参数的值都存放在参数结构体options中,例女flop.tions.Populationsize在结构体中的缺省值为20.如果需要设置Populationsize的值等于100,可以通过下面的语句进行修改:叩一fions=gaoptimset('PopulationSize',100)。这样,参Populationsize的值变为100.而其他参数的值仍为缺省值或当前值。这时,再输入ga(@fitnessfun,nval"8,options),函数ga将以种群中个体为100运行遗传算法。为了得到遗传算法更多的输出结果,可以使用下面的语句调用ga:
reason
gaoptimset(options,"CrossoverFcn',{@crossover-
heuristic,0.91);%交叉设置
options
gaoptimset(options,"MutationFcn',{@mutationuniform,
0.011);%变异设置
options
【xfval]=ga(@Schaffer,nvars,options)
经过100次遗传迭代后.得到近似最优解为0.054966,仿真实验结果如图3所示.图中有2条曲线分别是最佳适应度值曲线和平均适应度值曲线。由图3可见,随迭代数的增加,种群的平均值呈现出曲折下降的趋势.而且解向最优解方向靠拢。
outputpopulation
scores]2ga(@fitnessfcn,
nvars)
除了x和fval之外增加了四个输出变量:reason.算法停止的原因;output,算法每一代的性能;population,最后种群;scores,最后得分值。3、优化实例
图3最佳适应度值与平均适应度值曲线图
3、算法的改进测试
对于以上算法.可以做进一步改进,使算法能更有效地搜索出最优解来.改进的遗传算法流程如下:
Stepl初始化种群.在定义域范围内随机产t:l=popsize/l"@
体:{置={-'5,毛,…?‘},f=1,2,..?,pops拓e}作为初始种群,将该
种群记为oldpop:
Step2计算种群的目标函数值.并按线性排序方法计算个体的适应度值,并记录最优个体;
Step3根据适应度从种群oldpopdP利用随机遍历抽样选取m个个体组成子代种群。记为newpop(1);
Schaffer函数的几何特性图
函数优化问题是遗传算法经典的应用领域,也是对遗传算法进行性能评价的常用算例。本文选取了一个典型的多峰函数,分别采用两种方法对函数进行优化.以测试基于MaflabSE具箱的遗传算法的有效性。
本文选用SchafferFuncfion为测试函数.其函数表达式为:
Step4对m个个体组成的子代种群newp叩(1)分别以概率Pc进行交叉操作和以概率Pm进行变异操作,得到新的子代种群,记为newpop(2);
steD5将原种群中的最优个体取代交叉变异后的子代种群newpop(2)@的最差个体,得到新的子代种群,记为newpop(3);
Step6计算子代群newpop(3)的适应度值;
Step7将子代种群newpop(3)基于适应度取代原oldpop种群中适应度最差的m个个体得到下一代群newpop。
(下转第107页)
‘(x,y)=(】f+y_)…[sin(50(x。+y_)~)+1.o],-lO一<x,y≤10
它是一个非线性、对称、可分离、多峰的二维函数,有大量的
Word文档免费下载:
遗传算法求解函数优化问题的Matlab实现_数学_自然科学_专业资料。遗传算法72 福建电脑 2010年第6期 遗传算法求解函数优化问题的Matlab实现石丽娟(苏州大学电子信息学院江...遗传算法求解函数优化问题的Matlab实现_数学_自然科学_专业资料 暂无评价|0人阅读|0次下载|举报文档 遗传算法求解函数优化问题的Matlab实现_数学_自然科学_专业资料。...遗传算法求解函数优化问题的Matlab实现_理学_高等教育_教育专区。关于MATLAB的 ,对数模有帮助维普资讯
第 2卷 6 第2 期 吉首大学学报( ...遗传算法求解函数优化问题的Matlab实现_工学_高等教育_教育专区。遗传算法求解函数优化问题的Matlab实现72 福 建 电 脑 遗传算法求解函数优化问题的 Matlab 实现石丽娟...如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 遗传算法求解函数优化问题的Matlab实现 隐藏&& 特别说明此资料来自豆丁网(...基于Matlab遗传算法工具箱的函数优化问题求解_其它考试_资格考试/认证_教育专区。...遗传算法工具箱使用 Matlab矩阵函数,为实现广泛的遗传算法应用建立了 一套通用的...基于Matlab遗传算法工具箱的函数优化问题求解基于Matlab遗传算法工具箱的函数优化问题...传算法工具箱对一个典型的函数优化问题进行求解,证 了该 工具箱在解决函数 验...遗传算法优化相关MATLAB算法实现_工学_高等教育_教育专区。MATLAB实现遗传算法,...度计算函数—ranking 选择函数—select 交叉算子函数—recombin 变异算子函数—mut...结合典型的二雏 和高维多峰测试函数,在MATI.AB环境中有效地解决了用遗传算法求解函数优化问题,验证了MATLAB遗传算法工具箱的 有效性和灵活性。 【关键词】:遗传...故采用Matlab 工具的遗传算法,对有约束最优化问题进行求解。 其中,bound=[xm,...MATLAB7.0 T具箱也提供了ga()函数,其基 l基于Matlab工具的遗传算法1.1求解...72福建电脑2010年第6期;遗传算法求解函数优化问题的Matlab实现;石丽娟;(苏州大学电子信息学院江苏苏州215021);【摘要】:本文介绍了遗传算法的基本原理,并重点分;【关键词】:遗传算法Matlab函数优化遗传算法;遗传算法提供了一个求解复杂系统优化问题的通用框架;遗传算法的基本流程图如图1所示;fá;Pá????i?1,2,3,L,N;?fá;
72福建电脑2010年第6期
遗传算法求解函数优化问题的Matlab实现
(苏州大学电子信息学院江苏苏州215021)
【摘要】:本文介绍了遗传算法的基本原理,并重点分析了Matlab遗传算法工具箱的使用方法。在此基础上,给出了一个函数优化问题的实例,以验证Matlab遗传算法工具箱在解决基于遗传算法的函数优化问题上的有效性和实用性。
【关键词】:遗传算法Matlab函数优化遗传算法(GeneticAlgorithm,缩写为GA),最先由JohnHol-land教授于1975年提出,它是一种借鉴生物界自然选择和遗传原理的随机优化搜索策略。遗传算法几乎渗透到从工程到社会科学的诸多领域,广泛用于组合优化、机器学习、自适应控制、规划设计和人工生命等领域,是21世纪有关智能计算中的关键技术之一。Matlab语言是一种高效率的用于科学工程计算的高级语言,它的语法规则简单、更贴近人的思维方式,通俗易懂。Matlab语言有着丰富的各种工具箱,Matlab的优化工具箱就是其中之一。采用Matlab遗传算法优化工具箱,不仅具有简单、易用、易于修改的特点,且为解决许多传统的优化方法难以解决的参数优化、非线性、多峰值之类的复杂问题提供有效的途径,为遗传算法的研究和应用提供很好的应用前景。1、遗传算法的描述
遗传算法提供了一个求解复杂系统优化问题的通用框架,它以适应度函数为依据,通过对群体中的个体施加遗传操作,实现群体内个体结构重组的迭代处理过程。
遗传算法的基本流程图如图1所示。
Pá????i?1,2,3,L,N
并以上式的概率分布从当前一代群体popi(t)中随机选择一些染色体遗传到下一代群体中构成一个新种群
newpop(t?1)??popá(t)j?1,2LN?;
5.交叉操作
以概率Pc交配,得到一个有N个染色体组成的群体crosspop(t+1);
6.变异操作
用某一较小的概率Pm使染色体的基因发生变异,形成新的
群体mutpop(t+1);该新的群体即为完成一次遗传操作后的子代记为pop(t)=mutpop(t+1),同时它又作为下一次遗传操作的父代,返回2。
带选择、交叉、变异的标准遗传算法并不一定收敛于全局最优解。在实际的应用过程中,要对SGA进行适当的改进,才能使遗传算法具有良好的收敛性能。
2、Matlab的遗传算法工具箱(GAToolbox)
遗传算法在应用过程中必须要编制大量的程序进行优化计算,利用Matlab遗传算法优化工具箱编程是最有效的方法和途径。MATLAB遗传算法工具箱的主要函数有如下几类:
(1)初始化种群创建函数(Creationfunction)
GAOT提供了3种创建初始种群的方法,它们为二进制编码、实值编码和整数编码函数,用户还可以自定义初始化函数。创建初始种群的主要参数是数据类型(populationtype)、变量的维数(sizeofvariables)、种群的大小(sizeofpopulation),初始种群取值的范围(initialrange)等。其中,种群的大小会影响GA的有效性,太小,GA会很差或根本找不出问题的解,因为太小的种群数目不能提供足够的采样点,太大,则会增加计算量,使收敛时间延长。一般种群大小选在20至160之间较合适。
(2)适应度函数(Fitnessfunction)
适应度是遗传算法引导搜索的主要依据,改变种群内部结
图1遗传算法(GA)流程图
构的遗传操作均要通过评价函数加以控制。原适应度函数根据
算法的主要运算过程如下:
实际问题由用户自定义,遗传算法工具箱总是使目标函数或适
1.编码和产生初始群体
应度函数最小化即minf(x),若要求函数f(x)的最大值,则要进行变
根据问题选择相应的编码方法,并随机产生一个确定长度
换,取g(x)=-f(x),转而求g(x)的最小值。工具箱提供了适应度的尺
的N个染色体组成的初始群体:
度变换函数,如排列(Rank)、比率(Proportional)、线性变换(Shift
i?1,2,3,L,N
linear),也可以自定义。
2.计算适应度值
(3)选择操作函数(Selectionfunction)
对群体pop(t)中的每一个染色体popi(t)计算它的适应度:
选择操作决定哪些个体可以进入下一代。GAOT提供了随机均匀分布选择法(Stochasticuniform)、赌轮盘选择法(Roulette)、剩fi?fitness(popi(t))
余(Remainder)选择法、锦标赛选择法(Tournament),也可以自定
3.判断算法收敛准则是否满足。若满足输出搜索结果,否则义。继续执行以下步骤;
(4)交叉操作函数(Crossoverfunction)
4.选择操作交叉操作是选取2个个体作为父代parent1和parent2,
产生出根据各个个体的适应度值计算选择概率:
2010年第6期福建电脑
2个新的子代个体child1和child2。GAOT中提供的交叉函数有:离散重组(Scattered)、线性重组(Sheuristic)、单点交叉(Simplepoint)等五种交叉方式,也可以自定义。交叉操作还需设置交叉概率PC,此参数控制着交叉操作的频率,PC太大,会使高适应度
值的结构很快被破化掉;PC太小,搜索会停滞不前,一般取0.25至
局部极小值,但只有一个全局最小点(0,0),最小值为0。其三维几何特性如图2所示。
1、编写Schaffer函数的M文件Schaffer.m:
functionz=Schaffer(x)
z=((x(1)^2+x(2)^2)^0.25)*((sin(50*((x(1)^2+x(2)^2)^0.1)))^2+1.0);
(5)变异函数(Mutationfunction)
变异操作有利于保持种群的多样性、跳出局部极值,防止未成熟收敛。GAOT中提供的变异函数有高斯变异(Gaussian)、均匀变异(Uniform),也可以自定义。变异操作还需设置变异概率Pm,它是增大种群多样性的第二因素,Pm太小,不会产生新的基因块,P太大,会使GA变成随机搜索,一般取0,01至0.20。m
(6)停止条件(Stoppingconditions)
停止条件定义了算法终止的条件,GAOT中设置的参数有最大代数(Generation)、停止执行前的最大时间(Timelimited)、适应度限(Fitnesslimited)、停滞代数(Stallgeneration)、停滞时间(Stalltime)。
(7)主程序函数(Mainfunction)
主程序函数的作用是调用相应的遗传操作函数,完成遗传优化。主程序既可编写为M文件,然后在MATLAB的Command窗口运行,也可从命令行运行遗传算法函数ga。Ga函数的用法为:
[xfval]=ga(@fitnessfcn,nvars,options)
其中,输出参数:x为返回的最终点即最后变量值;fval为适应度函数在x点的值即最优值。输入参数:@fitnessfcn是计算适应度函数值的M文件的函数;nvars是适应度函数中独立变量的个数;options是参数结构体,可以缺省。
每一个参数的值都存放在参数结构体options中,例如op-tions.Populationsize在结构体中的缺省值为20,如果需要设置Populationsize的值等于100,可以通过下面的语句进行修改:op-tions=gaoptimset('PopulationSize',100)。这样,参数Populationsize的值变为100,而其他参数的值仍为缺省值或当前值。这时,再输入ga(@fitnessfun,nvars,options),函数ga将以种群中个体为100运行遗传算法。为了得到遗传算法更多的输出结果,可以使用下面的语句调用ga:
[xfvalreasonoutputpopulationscores]=ga(@fitnessfcn,
2、设置参数和调用遗传算法的主程序:fitnessFunction=@Snvars=2;
options=%设置需要更改的参数结构体,不更改
就采用缺省值
options=gaoptimset(options,'PopInitRange',[-10;10]);%设
置初始范围
options=gaoptimset(options,'PopulationSize',100);%设置种
options=gaoptimset(options,'CrossoverFraction',0.9);%设置
options=gaoptimset(options,'Generations',100);%最大遗传
options=gaoptimset(options,'CrossoverFcn',{@crossover-heuristic,0.9});%交叉设置
options=gaoptimset(options,'MutationFcn',{@mutationuniform,0.01});%变异设置
[xfval]=ga(@Schaffer,nvars,options)
经过100次遗传迭代后,得到近似最优解为0.054966,仿真实验结果如图3所示,图中有2条曲线分别是最佳适应度值曲线和平均适应度值曲线。由图3可见,随迭代数的增加,种群的平均值
呈现出曲折下降的趋势,而且解向最优解方向靠拢。
除了x和fval之外增加了四个输出变量:reason,算法停止的原因;output,算法每一代的性能;population,最后种群;scores,最后得分值。3、优化实例
图3最佳适应度值与平均适应度值曲线图
3、算法的改进测试
图2Schaffer函数的几何特性图
函数优化问题是遗传算法经典的应用领域,也是对遗传算法进行性能评价的常用算例。本文选取了一个典型的多峰函数,分别采用两种方法对函数进行优化,以测试基于Matlab工具箱的遗传算法的有效性。
本文选用SchafferFunction为测试函数,其函数表达式为:
f3(x,y)=(x+y)
[sin(50(x+y))+1.0],-10≤x,y≤10
它是一个非线性、对称、可分离、多峰的二维函数,有大量的
对于以上算法,可以做进一步改进,使算法能更有效地搜索出最优解来,改进的遗传算法流程如下:
Step1初始化种群,在定义域范围内随机产生popsize个个
??xá,x?,L??x?L??popsize?作为初始种群,将该?,i?1,2??体:?Xá
种群记为oldpop;
Step2计算种群的目标函数值,并按线性排序方法计算个体的适应度值,并记录最优个体;
Step3根据适应度从种群oldpop中利用随机遍历抽样选取m个个体组成子代种群,记为newpop(1);
Step4对m个个体组成的子代种群newpop(1)分别以概率Pc进行交叉操作和以概率Pm进行变异操作,得到新的子代种群,记为newpop(2);
Step5将原种群中的最优个体取代交叉变异后的子代种群newpop(2)中的最差个体,得到新的子代种群,记为newpop(3);
Step6计算子代种群newpop(3)的适应度值;
Step7将子代种群newpop(3)基于适应度取代原oldpop种群中适应度最差的m个个体得到下一代种群newpop
(下转第107页)
2010年第6期
每个规则语法树的构造都是根据需求来确定的,由于内存数据库注重的是存取速度和节省内存容量,所以本文只对最常用的语句进行构造,如SELECT语句构造查询整张表和按一个条件进行查询,当然,使用YACC进行语法分析,可以根据需要,很容易进行扩展。
构成出SQL的语法规则,接下来需要编写SQL的规则动作。本系统的语法分析程序完成的主要功能是识别出SQL语句的类型,所以动作部分只需返回SQL语句的类型,即可调用相应的内存数据库API。因此,需要对所有类型的SQL语句定义一个整数标识符,如:
%tokenINSERT_STATESELECT_ALL_STATE
定义了一个插入类型的SQL语句的标识符IN-SERT_STATE和一个全表查询的SQL语句的标识符SE-LECT_ALL_STATE。规则动作的代码只需把SQL语句的标识符
返回,如:
分析程序,根据所构造的语法规则分析出这是SE-LECT_ALL_STATE语句,最后调用SELECT_ALL_STATE的API函数,把记录在wordPorperty中的tableName赋给API函数的参数,就完成了该语句的执行。6、结束语
本文主要讨论了基于WinCE系统的内存数据库的SQL解析器的设计与实现。首先设计词法分析程序,然后选用YACC工具,讨论了YACC的工作原理,并利用YACC完成语法分析程序,最后根据分析结果调用内存数据库API函数来完成SQL语句的执行。本文根据具体的平台,分析实际情况,选取适当的YACC工具,完成SQL解析,使得原本只提供API函数的内存数据库可以支持SQL语言,大大提高了该内存数据库的实用性。当然,本文设计的SQL语法还不够完善,可以根据具体的需要,重写部分YACC语法,以满足需求。
参考文献:
[1]JobnR.Levine,TonyMason,DougBrown.Lex与yacc[M].北京:机械工业出版社,2003
[2]张家友.基于WinCE的内存数据库系统分析和设计[D].厦门大学硕士毕业论文,2009
[3]Lex&Yacc从入门到精通[Z]./view/bff4ec335af97.html
[4]姚泽勤,柏又青等.利用LEX及YACC实现嵌入式SQL分析器[J].-58
[5]夏铭,陆阳等.嵌入式数据库中利用Lex,Yacc设计SQL编译器[J].-124
[6]徐爱华.大唐电信&话务统计子系统&中内存数据库SQL解析器的设计与实现[D].西安电子科技大学,2006
insert_statement;{returnINSERT_STATE}
这样就完成了SQL的语法构造。5、生成目标代码及调用内存数据库API
经过词法分析和语法分析后,一条SQL语句就被解析出来了,利用分析的结果,调用相应的API函数就完成了一条SQL
语句的执行。如:
SELECT*FROMtableName
经过词法分析,得到包含的关键字有SELECT、'*'、FROM和NAME,其中NAME的属性值是tbName。把关键词解析出来供语法分析调用,并且把tableName作为关键字NAME的属性,记录在ParseSQL类型的全局变量wordProperty中,然后进入语法
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(上接第73页)
Step8Step2。
若满足收敛条件,输出最优解并退出;否则转向4、结论
随着遗传算法作为一种全局优化算法在各个领域的应用越来越广泛,Matlab的遗传算法优化工具箱提供了一个标准、可扩展、简单的算法。利用Matlab强大的矩阵运算能力,对传统优化算法难以实现全局最优解的非线性、多峰值函数最值问题进行优化。结果表明,对于非线性、多峰值函数的寻优问题,遗传算法不仅不会陷入局部最优点,而且有较强的搜索能力、收敛速度快、精度也较高,用法也比较灵活,完全避免一般优化算法的局部最优、收敛较慢等问题的不足。
参考文献:
[1]陈国良,王煦法等.遗传算法及其应用[M].人民邮电出版社,-14
[2]周正武,丁同梅,田毅红,王晓峰.Matlab遗传算法优化工具箱(GATO)的研究与应用[J].机械研究与应用,-71.
[3]金芬.Matlab遗传算法工具箱在函数优化中的应用[J].福建电脑,-24
用改进的遗传算法重新运行SchafferFunction函数,可得到如图4的仿真结果。
从图中可看出该算法在运行到第25代时就已找到函数的最佳解,而且收敛效率及稳定程度均优于上一算法,效果显著。
图4算法改进后函数适应度值曲线图
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(上接第172页)
师都采用仅对理论部分进行考查,忽略了操作部分掌握情况在学生成绩中的反映,这是很不全面的。为此我编制了一套理论与操作的考试批阅软件。特别是操作题的计算机自动批阅包括Word、Excel、PowerPoint、FrontPage和Access五种文档。通过这个软件在几秒种内准确判断学生的理论解答和操作文档,立即了解学生的答题结果,及时发现学生在操作中所存在的问题,从而得以及时纠正,提高了教学效率,同时也规范了操作课的教学。
总之,学校在围绕信息技术这门课程组织教学时,一方面要教会学生如何使用计算机这个工具,提高学生运用信息工具的技能,获取有效信息的技能,分析处理信息的技能,创造信息的
技能,发挥信息效益的技能。从而提高学生使用信息技术学习其他专业课程的能力。另一方面也是更为重要的就是要通过这门课的教学,培养学生良好的信息素养,提高把信息技术应用到学习和工作的意识,极大的发挥信息技术在日常生活中的作用。参考文献:
[1]张福炎.大学计算机信息技术教程(第四版第三次修订)[M].南京:南京大学出版社,2009.
[2]戴锐青陈燕.大学计算机信息技术实验实训指导[M].南京:河海大学出版社,2009.
三亿文库包含各类专业文献、文学作品欣赏、幼儿教育、小学教育、外语学习资料、专业论文、中学教育、行业资料、遗传算法求解函数优化问题的Matlab实现_图文16等内容。 

我要回帖

更多关于 遗传算法迭代次数 的文章

 

随机推荐