Matlab 环境下的遗传算法程序设计及优化问题求解
■ 梁 科 夏定纯
《电脑知识与技术》 2007 年第 6 期
摘要:本文介绍了遗传算法的流程及几个算子,给出了在 matlab 语言环境下实现编码、译
码、选择、重组和变异各算子的编程方法,最后用一个实例来说明遗传算法在寻找全局最
优解中的应用。
关键词:遗传算法 ;matlab ;程序设计
中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2007)04-11049-03
遗传算法(GA)是借鉴生物界自然选择和群体进化机制而形成的一种全局寻优算法,
其本质上是一种基于概率的随机搜索算法 。与其它的优化算法相比较,遗传算法具有以下
优点:(1)通用性;(2)并行性;(3)简单性和可操作性;(4)稳定性和全局性。
1 遗传算法概述
在遗传算法中,首先将空间问题中的决策变量通过一定的编码表示成遗传空间的一个
个体,它是一个基因型串结构数据;然后将目标函数转换成适应度值,用来评价每个个体
的优劣,并将其作为遗传操作的依据。遗传操作包括三个算子:选择、重组和变异 。选择
是从当前群体中选择适应值高的个体以生成交配池的过程,交配池是当前代与下一代之间
的中间群体。选择算子的作用是用来提高群体的平均适应度值。重组算子的作用是将原有
的优良基因遗传给下一代个体,并生成包含更复杂基因的新个体,它先从交配池中的个体
随机配对,然后将两两配对的个体按一定方式相互交换部分基因。变异算子是对个体的某
一个或几位按某一较小的概率进行反转其二进制字符,模拟自然界的基因突变现象。
遗传算法的基本程序实现流程如下:
(1)先确定待优化的参数大致范围,然后对搜索空间进行编码;
(2)随机产生包含各个个体的初始种群;
(3)将种群中各个个体解码成对应的参数值,用解码后的参数求代价函数和适应度函
数,运用适应度函数评估检测各个个体适应度;
(4)对收敛条件进行判断,如果已经找到最佳个体,则停止,否则继续进行遗传操作;
(5)进行选择操作,让适应度大的个体在种群中占有较大的比例,一些适应度较小的
个体将会被淘汰;
(6)随机交叉,两个个体按一定的交叉概率进行交叉操作,并产生两个新的子个体;
(7)按照一定的变异概率变异,使个体的某个或某些位的性质发生改变;
(8)重复步骤(3)至(7),直至参数收敛达到预定的指标。
使用遗传算法需要确定的运行参数有:编码串长度、交叉和变异概率、种群规模。编
码串长度由问题的所要求的精度来决定。交叉概率控制着交叉操作的频率,交叉操作是遗
传算法中产生新个体的主要方法,所以交叉概率通常应取较大值,但如果交叉概率太大的
话又可能反过来会破坏群体的优良模式,一般取 0.4-0.99 。变异概率也是影响新个体产生