基于C++遗传算法实现及其在连续最优化问题中的性能检测.doc
文本预览下载声明
基于C++遗传算法实现及其在连续最优化问题中的性能检测
2004年第20卷第1期
2004.Vo1.20No.1
电子机械工程
Electro—MechanicalEngineering53
基于C++遗传算法实现及其在
连续最优化问题中的性能检测
岳振兴,李莉
(南京电子技术研究所,江苏南京210013)
摘要:对遗传算法在解连续优化问题中的关键技术进行了讨论.运用C/C++实现了遗传算法的程序
编制.数值仿真结果验证了遗传算法计算性能稳健,能够对复杂,非线性的多峰连续函数进行全局寻
优.
关键词:遗传算法;优化;凸交叉;动态变异
中图分类号:TP391.9文献标识码:B文章编号:1008—5300(2004)O1—0053—04
ProgramofGeneticAlgorithmUsingC++and
ItsApplicationinContinuousOptimization
YUEZhen-xingLILi
(NaResearchInstituteofElectronicsTechnology,Nanjing210013,China)
Abstract:Thekeytechniqueaboutgeneticalgorithmappliedtocontinuousoptimizationisdiscussedinthispa.
per.AndthesourcecodeforgeneticalgorithmisprogrammedusingC/C++.Simulationshowsthatthegenetic
algorithmisrobustandcanfindtheglobaloptimumforanon-linearmulti-peakcontinuousfunction.
Keywords:geneticalgorithm;optimization;convex-crossover;dynamicmutation
0引言
遗传算法是一种借鉴生物界自然选择和自然遗传
机制的高度并行,随机,自适应搜索算法,其隐含的对
全局信息的有效利用能力使遗传算法具有稳健性,能
够很好地处理传统优化方法解决不了的复杂和非线性
问题¨I.遗传算法的执行过程可以简单描述为随机地
在参变量空间中进行搜索,由串组成的群体在遗传算
子的作用下,同时对空间中不同的区域进行采样计算,
从而构成一个不断迭代进化的群体序列.遗传算法的
突出表现能力是能够把注意力集中到搜索空间中期望
值最高的部分,这是遗传算法中杂交算子作用的直接
结果.杂交过程就是模拟生物界中的有性繁殖,它是
遗传算法中最重要的部分,是遗传算法区别于其它优
化算法的根本所在.遗传算法以迭代群体中的所:有个
体为操作对象,从本质上讲属于一种群体操作算法,其
基本流程如图1所示.一个标准的遗传算法程序包含
收稿日期:2003—04—11
4个基本组成部分:(1)参数编码;(2)初始群体生成;
(3)适应值检测;(4)遗传操作.其中遗传操作是遗传
算法的核心,它由3个基本操作算子组成,即选择算
子,交叉算子和变异算子,不同的遗传算子对算法的运
行性能有着各不相同的影响.
文章主要从遗传算法在求解连续最优化问题中的
设计与实现环节上对遗传算法进行研究.根据所求解
问题的性质,设计合理的遗传算法程序,使之满足求解
问题的要求.
1基于C/C++遗传算法设计与实现
1.1连续最优化问题
连续最优化通常是极大或极小某个多变量的连续
函数并使其满足一些等式/不等式约束.在实际工程
应用中大多数优化问题都属于约束优化类型,但是对
无约束优化问题的研究是求解约束优化问题的基础,
因此这里取无约束优化模型为优化算法设计求解的目
54电子机械工程第20卷
选出两个个体
执行交叉
I
lgen=O
..........l一
初始群体
初始化
回
两赫一
出个体执行变
制父代到群体空『日
插入到群体空闽lll插入到群体空间
Il
L———_.J扩大的群体空间———_J
执行选择更新群体
图1遗传算法基本流程图
标函数.一般,无约束优化问题可用如下数学模型描
述:
minf()
s.t.X∈力
其中是实值函数,可行域力是E的子集.若点
∈力是上/的局部最优点,如果存在占gt;0使得所有
X∈力与距离不大于占的点满足f(X)≥/(X),
则点是/在力上的全局最优点.
1.2算法的设计与实现
在遗传算法的实现上,编码方法,遗传算子选择,
控制参数选取等都是十分关键的问题.下面针对这些
问题进行设计并实现遗传算法源代码程序编制].
(1)编码方法
遗传算法的编码方式有多种,这里采用实数编码
技术来表达给定问题的解.在实数编码中,每个染
色体编码为一个和解向量维数相同的实向量X=(,,
x,…,).这种编码方式可以直接
显示全部