matlab环境下的遗传算法程序设计及优化问题求解

matlab环境下的遗传算法程序设计及优化问题求解

ID:17423978

大小:28.00 KB

页数:4页

时间:2018-08-31

matlab环境下的遗传算法程序设计及优化问题求解_第1页
matlab环境下的遗传算法程序设计及优化问题求解_第2页
matlab环境下的遗传算法程序设计及优化问题求解_第3页
matlab环境下的遗传算法程序设计及优化问题求解_第4页
资源描述:

《matlab环境下的遗传算法程序设计及优化问题求解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Matlab环境下的遗传算法程序设计及优化问题求解摘要:本文介绍了遗传算法的流程及几个算子,给出了在matlab语言环境下实现编码、译码、选择、重组和变异各算子的编程方法,最后用一个实例来说明遗传算法在寻找全局最优解中的应用。关键词:遗传算法;matlab;程序设计中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)04-11049-03遗传算法(GA)是借鉴生物界自然选择和群体进化机制而形成的一种全局寻优算法,其本质上是一种基于概率的随机搜索算法。与其它的优化算法相比较,遗传算法具有以下优点:(1)通用性;(2)并行性;(3

2、)简单性和可操作性;(4)稳定性和全局性。1遗传算法概述在遗传算法中,首先将空间问题中的决策变量通过一定的编码表示成遗传空间的一个个体,它是一个基因型串结构数据;然后将目标函数转换成适应度值,用来评价每个个体的优劣,并将其作为遗传操作的依据。遗传操作包括三个算子:选择、重组和变异。选择是从当前群体中选择适应值高的个体以生成交配池的过程,交配池是当前代与下一代之间的中间群体。选择算子的作用是用来提高群体的平均适应度值。重组算子的作用是将原有的优良基因遗传给下一代个体,并生成包含更复杂基因的新个体,它先从交配池中的个体随机配对,然后将两两配对的个体按一定

3、方式相互交换部分基因。变异算子是对个体的某一个或几位按某一较小的概率进行反转其二进制字符,模拟自然界的基因突变现象。遗传算法的基本程序实现流程如下:(1)先确定待优化的参数大致范围,然后对搜索空间进行编码;(2)随机产生包含各个个体的初始种群;(3)将种群中各个个体解码成对应的参数值,用解码后的参数求代价函数和适应度函数,运用适应度函数评估检测各个个体适应度;(4)对收敛条件进行判断,如果已经找到最佳个体,则停止,否则继续进行遗传操作;(5)进行选择操作,让适应度大的个体在种群中占有较大的比例,一些适应度较小的个体将会被淘汰;(6)随机交叉,两个个体

4、按一定的交叉概率进行交叉操作,并产生两个新的子个体;(7)按照一定的变异概率变异,使个体的某个或某些位的性质发生改变;(8)重复步骤(3)至(7),直至参数收敛达到预定的指标。使用遗传算法需要确定的运行参数有:编码串长度、交叉和变异概率、种群规模。编码串长度由问题的所要求的精度来决定。交叉概率控制着交叉操作的频率,交叉操作是遗传算法中产生新个体的主要方法,所以交叉概率通常应取较大值,但如果交叉概率太大的话又可能反过来会破坏群体的优良模式,一般取0.4,0.99。变异概率也是影响新个体产生的一个因素,如果变异概率太小,则产生新个体较少;如果变异概率太大

5、,则又会使遗传算法变成随机搜索,为保证个体变异后与其父体不会产生太大的差异,通常取变异概率为0.0001,0.1以保证种群发展的稳定性。种群规模太大时,计算量会很大,使遗传算法的运行效率降低,种群规模太小时,可以提高遗传算法的运行速度,但却种群的多样性却降低了,有可能找不出最优解,通常取种群数目20,100。从理论上讲,不存在一组适用于所有问题的最佳参数值,随着问题参数的变化,有效问参数的差异往往是十分显著的。2用Matlab语言来实现遗传算法Matlab是一个高性能的计算软件,配备有功能强大的数学函数支持库,适用范围大,编程效率高,语句简单,功能齐

6、备,是世界上顶级的计算与仿真程序软件。利用Matlab来编写遗传算法程序简单而且易于操作。2.1编码编码就是把一个问题的可行解从其解空间转换到遗传算法能够处理的搜索空间的转化方法,编码形式决定了重组算子的操作。遗传算法是对编码后的个体作选择与交叉运算,然后通过这些反复运算达到优化目标。遗传算法首要的问题是通过编码将决策变量表示成串结构数据。我们常用的是二进制编码,即用二进制数构成的符号串来表示每个个体。通常根据搜索精度(sca_var)、决策变量上界(range(2))的和下界(range(1))来确定各个二进制字符串的长度(bit_n),搜索精度为

7、sca_var=(range(2),range(1))./(2^bit_n—1),然后再随机产生一个的初始种群(be_gen),其规模为popusize。下面用encoding函数来实现编码和产生初始的种群:function[be_gen,bit_n]=encoding(sca_var,range(1),range(2),popusize)bit_n=ceil(log2((range(2),range(1))./sca_var));be_gen=randint(popusize,sum(bit_n));2.2译码决策变量经过编码之后,各个个体构成的种

8、群be_gen要通过解码才能转换成原问题空间的决策变量构成的种群vgen,这样才能计算其相应的各个适应度值。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。