文档详情

基于C++遗传算法实现及其在连续最优化问题中的性能检测.doc

发布:2018-10-10约6.54千字共11页下载文档
文本预览下载声明
基于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,…,).这种编码方式可以直接
显示全部
相似文档