遗传算法
!
!"
"
是借鉴生物界自然选择和群体进化机制而形
成的一种全局寻优算法
#
其本质上是一种基于概率的随机搜索算
法
$
与其它的优化算法相比较
#
遗传算法具有以下优点
%!
#
"
通用
性
&!
$
"
并行性
&!
%
"
简单性和可操作性
&!
&
"
稳定性和全局性
$
!
遗传算法概述
在遗传算法中
#
首先将空间问题中的决策变量通过一定的编
码表示成遗传空间的一个个体
#
它是一个基因型串结构数据
&
然后
将目标函数转换成适应度值
#
用来评价每个个体的优劣
#
并将其作
为遗传操作的依据
$
遗传操作包括三个算子
%
选择
’
重组和变异
$
选
择是从当前群体中选择适应值高的个体以生成交配池的过程
#
交配
池是当前代与下一代之间的中间群体
$
选择算子的作用是用来提高
群体的平均适应度值
$
重组算子的作用是将原有的优良基因遗传给
下一代个体
#
并生成包含更复杂基因的新个体
#
它先从交配池中的
个体随机配对
#
然后将两两配对的个体按一定方式相互交换部分基
因
$
变异算子是对个体的某一个或几位按某一较小的概率进行反转
其二进制字符
#
模拟自然界的基因突变现象
$
遗传算法的基本程序实现流程如下
%
!
#
"
先确定待优化的参数大致范围
#
然后对搜索空间进行编码
&
!
’
"
随机产生包含各个个体的初始种群
&
!
%
"
将种群中各个个体解码成对应的参数值
#
用解码后的参
数求代价函数和适应度函数
#
运用适应度函数评估检测各个个体
适应度
&
!
&
"
对收敛条件进行判断
#
如果已经找到最佳个体
#
则停止
#
否则继续进行遗传操作
&
!
(
"
进行选择操作
#
让适应度大的个体在种群中 占有较大的
比例
#
一些适应度较小的个体将会被淘汰
&
!
)
"
随机交叉
#
两个个体按一定的交叉概率进行交叉操作
#
并
产生两个新的子个体
&
!
*
"
按照一定的变异概率变异
#
使个体的某个或 某些位的性
质发生改变
&
!
+
"
重复步骤
!
%
"
至
!
*
"#
直至参数收敛达到预定的指标
$
使用遗传算法需要确定的运行参数有
%
编码串长度
’
交叉和
变异概率
’
种群规模
$
编码串长度由问题的所要求的精度来决定
$
交叉概率控制着交叉操作的频率
#
交叉操作是遗传算法中产生新
个体的主要方法
#
所以交叉概率通常应取较大值
#
但如果交叉概
率太大的话又可能反过来会破坏群体的优良模式
#
一般取
,-&!
,-..
$
变异概率也是影响新个体产生的一个因素
#
如果变异概率
太小
#
则产生新个体较少
&
如果变异概率太大
#
则又会使遗传算法
变成随机搜索
#
为保证个体变异后与其父体不会产生太大的差
异
#
通常取变异概率为
,-,,,#!,-#
以保证种群发展的稳定性
$
种
群规模太大时
#
计算量会很大
#
使遗传算法的运行效率降低
#
种群
规模太小时
#
可以提高遗传算法的运行速度
#
但却种群的多样性
却降低了
#
有可能找不出最优解
#
通常取种群数目
’,!#,,
$
从理论
上讲
#
不存在一组适用于所有问题的最佳参数值
#
随着问题参数
的变化
#
有效问参数的差异往往是十分显著的
$
"
用
#$%&$’
语言来实现遗传算法
/01203
是一个高性能的计算软件
#
配备有功能强大的数学函
数支持库
#
适用范围大
#
编程效率高
#
语句简单
#
功能齐备
#
是世界
上顶级的计算与仿真程序软件
$
利用
/01203
来编写遗传算法程
序简单而且易于操作
$
’-4
编码
编码就是把一个问题的可行解从其解空间转 换到遗传算法
能够处理的搜索空间的转化方法
#
编码形式决定了重组算子的操
作
$
遗传算法是对编码后的个体作选择与交叉运算
#
然后通过这
些反复运算达到优化目标
$
遗传算法首要的问题是通过编码将决
策变量表示成串结构数据
$
我们常用的是二进制编码
#
即用二进
制数构成的符号串来表示每个个体
$
通常根据搜索精度
5670890:;
’
决策变量上界
5:0<=>5’;;
的和下界
5:0<=>54;;
来确定各个二进制字符
串 的 长 度
53?18<;
#
搜 索 精 度 为
670890: @5:0<=> 5’; !:0<=> 54;;-A
5’B3?18<
(
4;C
然后再随机产生 一 个 的初 始种 群
53>8=><;C
其规 模 为
DEDF6?G>
$
下面用
><7EH?<=
函数来实现编码和产生初始的种群
%
IF<71?E< J3>8=>< C 3?18<K@><7EH?<=5670890:C:0<=>54; C :0<=>5$;C
DEDF6?G>;
3?18<@7>?252E=$ 55 :0<=>5$;!:0<=>54;;-A670890:;;L
3>8=><@ :0<H?<15 DEDF6?G>C 6FM53?18<;;L
$-$
译码
决策变量经过编码之后
#
各个个体构成的种群
3>8=><
要通过
解码才能转换成原问题空间的决策变量构成的种群
9=><
#
这样才
收稿日期
!
!""#$"%$"&
作者简介
!
梁科
"
%’(%$
#$
硕士研究生
$
研究方向
!
智能计算与优化方法
%
夏定纯
&
%’#)$
#$
教授
$
研究方向
!
人工智能
$
计算机在线检测
’
!"#$"%
环境下的遗传算法程序设计及优化问题求解
梁科
!
夏定纯
"
武汉科技学院计算机科学学院
$
湖北 武汉
*)""+)
(
摘要
"
本文介绍了遗传算法的流程及几个算子
$
给出了在
,-./-0
语言环境下实现编码
)
译码
)
选择
)
重组和变异各算子的编程方法
$
最
后用一个实例来说明遗传算法在寻找全局最优解中的应用
’
关键词
"
遗传算法
%
,-./-0
%
程序设计
中图分类号
"
()*!"
文献标识码
"
+
文章编号
"
!,,-.*,//0",,12,/.!!,/-.,*
3454%67 +&89:6%;< ):98:$<<658 => #$%&$’ +5? @A%6<6B658 ):9’&4< C9&D658
12345 678 923 :;<=$>?@<
A:7B-C.,7<. DE FD,B@.7C G>;7<>78H@?-< I<;J7CG;.K DE L>;7<>7 MN<=;<77C;<=8H@?-< *)""+)8 F?;<-O
+’E%:$7%FP?7 G7J7C-/ E->.DCG DE =7<7.;> -/=DC;.?, ?-J7 077< BC7G7<.7Q ;< .?;G B-B7C 8 -<Q .?7 BCD=C-,,;<= DE 7<>DQ;<=
)
Q7>DQ;<=
)
>?D;>7
)
>CDGGDJ7C -<Q ,@.-.;D < DE ,-./-0 ?-J7 077< =;J7<8 E;<-//K8 - E@<>.;D< DB.;,;R;<= BCD0/7, ?-G 077< BC7G7<.7Q .D Q7,D<G.C-.7Q .?7 -BB/;>-.;D<
-0D@. =/D0-/ DB.;,;R;<= DE =7<7.;> -/=DC;.?, S
G4> H9:?EF53 T ,- ./-0 T BCD=C-,,;<=
&’()