遗传算法求解函数优化问题的Matlab实现

遗传算法求解函数优化问题的Matlab实现

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

popÁ(t), t 1 , 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,

遗传算法求解函数优化问题的Matlab实现

产生出根据各个个体的适应度值计算选择概率:

你可能喜欢

  • 算法入门
  • matlab遗传算法实例
  • matlab遗传算法代码
  • 遗传算法matlab程序
  • Matlab遗传算法工具箱
  • matlab实例教程
  • 数据整理

遗传算法求解函数优化问题的Matlab实现相关文档

最新文档

返回顶部