社区
数据结构与算法
帖子详情
遗传算法
WQ
2001-10-29 04:59:52
你好: 我是一名编程爱好者,特别是对计算机算法有浓厚兴趣,最近想寻找一些有关计算机遗传算法的资料,烦请提供(附原码最好),不胜感激.
...全文
214
3
打赏
收藏
遗传算法
你好: 我是一名编程爱好者,特别是对计算机算法有浓厚兴趣,最近想寻找一些有关计算机遗传算法的资料,烦请提供(附原码最好),不胜感激.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
starfish
2001-10-30
打赏
举报
回复
发信人: yinsoft (流浪者), 信区: AI
标 题: 浅说遗传算法(1)
发信站: 南京大学小百合站 (Fri Mar 24 10:45:28 2000), 转信
一、 前言
从本世纪40年代起,生物模拟构成了计算科学的一个组成部分。近三
十年来,计算机学者对模拟自然过程的浓厚兴趣和研究,形成了今天的一个
交叉研究领域——进化算法(Evolutionary Algorithm, EA)。它是一类用
机器模拟自然过程来求解复杂问题的随机搜索算法(或称为问题求解方法)
。生物体所面临的问题以混沌、随机、瞬间和非线性为典型特征。遗传算
法(Genetic Algorithms, GAs)只是进化算法的一种,它主要是对生物界自
然选择和自然遗传机制进化过程的模拟,如借鉴达尔文进化论中的"适者生
存,不适应者淘汰"观点等,而且是在分子水平级上的模拟。遗传算法最初由
美国的J.H Holland 提出,但当时是为自适应系统设计的一般框架,后来由
De Jong, J. Grefenstette, L. Davis和D. Goldberg等人进行了大量的
改进,使遗传算法应用于更广泛的范围。KOZA则将GA扩充到程序设计形成
了遗传程序设计(Genetic Programming, GP),成为遗传算法的一个非常重
要的分支,并为自动程序设计提供了一种有效途径。
目前,遗传算法作为一种实用和健壮的优化和搜索方法,已应用到许多
领域,如:并行与分布式系统中的任务平衡与调度、网络中的路由选择、大
规模集成电路的设计、策略规划、基因合成、机器学习、问题优化、经济
规划以及解决一些NP困难问题等。
--
二、 遗传算法框架
在遗传算法中,将问题的求解的过程,看成一个在候选解空间寻找满足
问题要求的解或近似解的搜索过程。遗传算法的重点在适应规划和适应度
量方面。遗传算法的适应规划用于指导算法怎么样在空间进行搜索,一般
采用遗传算子(或称遗传操作)诸如交配(Crossover)和变异(Mutation)等,
以及模拟自然过程的选择机制,而适应度量采用计算适应值的方法来评估
一个候选解的优劣。
遗传算法求解问题的过程如下:
1. 首先生成一组初始的候选解群体(假设为M个候选解个体),称为第
0代;
2. 计算群体中各个候选解的适应值;
3. 如果有候选解满足算法终止条件,算法终止,否则继续4;
4. 根据交配概率,将候选解群体中的个体随机两两配对,进行交配操
作以生成新的候选解;
5. 根据变异概率,对4中生成的候选解群中的每个个体进行变异操作;
6. 使用选择机制形成新一代候选解;转2。
从上面的算法过程中,我们可以知道,用遗传算法来求解问题有四个基
本要素:1候选解的表示方式;2适应值的定义及度量方法;3算法的控制参数
与变量;4算法终止准则。
候选取解的表示方式,最简单的就是采用定长二进制编码。如我们可
以将十进制的40转换成二进制的串,(40)10=(101000)2,反过来就可以将一
个二进制串解码为一个十进制整数。
适应值的定义及度量方法与要解决的问题有关,通常用目标函数来评
估候选取解的优劣。
算法的控制参数与变量。通常,我们把每一代中的候选解个数M称为群
体规模,群体规模M在整个算法中一般是不变的一个常数。遗传操作主要是
杂交和变异两个算子,并有其相应的概率参数(Pc:杂交概率,Pm变异概率)
来进行控制。遗传算法求解问题时,并不保证能找到满足问题要求的解,所
以,还要设定算法的最大迭代次数(或称为代数)。
算法终止准则一般有:找到了满足问题的解;候选取群体已收敛于某一
点;算法已达到了设定的代数等。
这样,一个简单遗传算法的框架可非形式化地表示如下:
Simple_Genetic_algorithm(){
t:=1; /*变量t表示迭代代数*/
初始化候选解群体Population(t);
计算各个解的适应值;
do while(终止条件不满足)
{
随机地将群中的个体两两配对,进行交配操作;
执行变异操作;
利用选择机制形成下一代候选取:Population(t+1):=Selection(Population(t));
t:=t+1;
}
}
三、 交配、变异及选择
我们以二进制的表示方式来解释遗传算子及选择机制。
在自然生物界,一个生物个体的特征通常被认为是由其父辈遗传下来的,
当然也可能有部分变异。而遗传是由DNA来决定的。我们现在将一个候选解
看成为生物个体中的一条DNA(假设该种生物的遗传物质只有一条DNA,并且不
存在性别差异,即任意两个个体都可以进行交配),DNA链上的基因只有两种类
型,可以分别将其定义为0或1。交配操作就是将两个父辈串随机从同一个位
置分成两段,然后进行相应段的交换,生成两个相应的子女。两个父辈来进行
的单点交配算子图表如下:
表1
变异算子相对就要简单些,从个体串中随机将某一位按变异概率进行翻
转(0翻转为1,1翻转为0,即所谓的基因变)。变异操作图表如下:
表2
在实际算法中,双亲进行交配操作是由交配概率Pc来控制,交配点的选择
也是随机产生的。变异操作由变异概率进行控制。
在群体规模为M的算法中,由M个个体的父辈群通过交配生成M个后代,M个
后代再经过变异操作又生成M个子代,这样就要从M个父辈和M个子代中选择M
个个体来形成下一代解群体。简单遗传算法就从M个子代中选择M个个体来生
成下一代。借鉴达尔文的进化论的观点,适者生存,不适应者被淘汰,那么,适
应值高的个体就应该有更高的机会生存下来,而适应值很低的个体就被淘汰。
也就是说,适应值高的个体应该有更多的机会来繁殖多个后代,适应值低的个
体就没有机会繁殖后代。
在遗传算法中,采用按比选择的机制来形成下一代。设整个解群的平均
适应值为f avg,则一个适应值为 f I的个体将被分配到f i/ f avg个后代。
这样,高出平均适应值的个体将会获得多于一个的子女,而低于平均适应值的
个体最多只能得到一个后代。
简单遗传算法采用一种称为"轮转法"的方法来实现按比例选择机制。在
一个圆中,整个圆的弧度角为2л。根据适应值,每个个体串f I在圆中分配这
一个扇区(如图1),扇区弧度的大小为(2лf i/f avg)。所有扇区分配后,只要
在0到2л之间产生一个随机数,该随机数落在哪个扇区内,则该个体将被选中
一次,有期望获得繁殖以产生后代。在群体规模为M的算法中,只要重复地产生
M个这样的随机数,就可以从经过遗传操作生成的M个子代中选择出M个体来形
成下一代(当然,有些个体一次都可能不会被选中,而有些个体被重复选中多次,
下一代中就出现了多个同样的父辈)。
四、 一个例子
我们以一个极简单的函数优化的例子来说明遗传算法的工作过程。
设函数f(x)=x2,x为整数且0≤x≤15,求Max(f(x))。由于0≤x≤15,所以
一个解个体采用二进制编码时,只要4位长度就可以了(因为(15)10=(1111)2)。
我们直接将x2作为个体x的适应值,适应值越大,解的满意度就越高。其他的参
数分别如下:表3
解的群体规模M=4;交配概率Pc=1.0;变异概率Pm=0.01。选择机制采用"轮
转法",整个算法的计算过程如表3所示。
整个算法共执行了五代,在第五代中找到了一个满足要求的解。整个过程
中,只有第三代中的S4的第二位发生了变异操作(Pm=0.01是个很小的值)。第一
代的结果中,S3的适应值为0而被淘汰,S4则被选择两次。所以第二代中S4的个
体出现了两个。同样地,后续代中,S4被选择两次,相应的S1及S3被淘汰。
Arter
2001-10-29
打赏
举报
回复
陈国良、王煦法《遗传算法及其应用》
http://master.chinatelecom.com.cn/tel_learn/tel_learn_mingci/tel_learn_mingci-genetic-algorithm.htm
遗传算法(Genetic Algorithm)
——遗传算法(Genetic Algorithm,缩写为GA)是一种有效的解决最优化问题的方法。它最先是由John Holland于1975年提出的。从那以后,它逐渐发展成为一种通过模拟自然进化过程解决最优化问题的计算模型。
——最优化问题通常可归结为极大化问题,利用数字公式描述就写作:
——其中f(x)为目标函数,S为可行域,它们是由工程实际问题的具体条件决定的。
——利用遗传算法解最优化问题,首先应对可行域中的点进行编码(一般采用二进制编码),然后在可行域中随机挑选一些编码组成作为进化起点的第一代编码组,并计算每个解的目标函数值,也就是编码的适应度。接着就像自然界中一样,利用选择机制从编码组中随机挑选编码作为繁殖过程前的编码样本。选择机制应保证适应度较高的解能够保留较多的样本;而适应度较低的解则保留较少的样本,甚至被淘汰。在接下去的繁殖过程中,遗传算法提供了交叉和变异两种算子对挑选后的样本进行交换。交叉算子交换随机挑选的两个编码的某些位,变异算子则直接对一个编码中的随机挑选的某一位进行反转。这样通过选择和繁殖就产生了下一代编码组。重复上述选择和繁殖过程,直到结束条件得到满足为止。进化过程最后一代中的最优解就是用遗传算法解最优化问题所得到的最终结果。
——从以上介绍可以看出,GA算法具有下述特点:
GA是对问题参数的编码组进行进货,而不是直接对参数本身。
GA的搜索是从问题解的编码组开始搜索,而不是从单个解开始。
GA使用目标函数值(适应度)这一信息进行搜索,而不需导数等其他信息。
GA算法使用的选择、交叉、变异这三个算子都是随机操作,而不是确定规则。
——实践表明,遗传算法解最优化问题的计算效率比较高、适用范围相当广。为了解释这一现象,Holland给出了图式定理。所谓图式,就是某些码位取相同值的编码的集合。图式定理说明在进化过程的各代中,属于适应度高、阶数低且长度短的图式的编码数量将随代数以指数形式增长。另外,Holland还发现遗传算法具有隐含的并行计算特性。最近的研究则表明,上述遗传算法经适当改进后对任意优化问题以概率1收敛于全局最优解。
——将遗传算法用于解决各种实际问题后,人们发现遣传算法也会由于各种原因过早向目标函数的局部最优解收敛,从而很难找到全局最优解。其中有些是由于目标函数的特性造成的,例如函数具有欺骗性,不满足构造模块假说等等;另外一些则是由于算法设计不当。为此,不断有人对遗传算法提出各种各样的改进方案。例如:针对原先的定长二进制编码方案;提出了动态编码、实数编码等改进方案;针对按比例的选择机制,提出了竞争选择、按续挑选等改进方案;针对原先的一点交叉算子,提出了两点交叉、多点交叉、均匀交叉等算子;针对原先遗传算法各控制参数在进化过程中不变的情况,提出了退化遗传算法、自适应遗传算法等。另外,针对不同问题还出现了分布式遗传算法、并行遗传算法等等。
——近年来,随着对于遗传算法研究的不断深入完善,有越来越多的人认识了解了遗传算法,并把它应用到越来越广泛的领域,例如机器学习、模式识别、图像处理、神经网络、工业优化控制和社会科学等方面。特别是在解决旅行商问题、煤气管道的最优控制、通信网络链接长度的优化问题、铁路运输计划优化、喷气式收音机涡轮机的设计、VLSI版面设计、键盘排列优化等问题上遗传算法都取得了很大的成功。
——目前国际国内有关GA的研究热潮方兴未艾。除从1985年起每两年举办一届GA国际会议外,还有MIT从1993年开始出版的《Evolutionary Computatio》和《Adaptive Behavior》两种杂志、IEEE从今年起出版的专门关于进化计算的汇刊。另外,各种AI类的杂志不断出版有关进化计算的专辑。其它有关GA理论和工程应用的文章也在各种不同类型杂志上不断涌现。国内有关GA的研究也正在不断深入地展开。
Arter
2001-10-29
打赏
举报
回复
http://www.csdn.net/expert/topic/265/265915.shtm
遗传算法
的基本理论与应用
本书旨在系统地介绍
遗传算法
的理论、应用和发展,共包括9个章节的内容.首先,本书讲述了
遗传算法
的起源、历程和主要研究方向,介绍了
遗传算法
的基本原理。其次,讨论了
遗传算法
的一般收敛性理论,
遗传算法
的马尔可夫链模型和收敛性分析,
遗传算法
的随机泛函分析。还介绍了
遗传算法
的模式理论,特别是
遗传算法
的模式欺骗性理论,以及欺骗问题的实验分析;并详细讨论了微观遗传策略-遗传算子的分析与设计,以及微观遗传策略中的参数设置和适应性微观遗传策略的设计。讨论了宏观遗传策略-
遗传算法
结构分析与设计。接下来介绍了
遗传算法
带有约束条件的
遗传算法
程序
带有约束条件的
遗传算法
MATLAB源程序
十天精通matlab优化算法实战篇
精通matlab优化算法实战篇,主要包括决策树与随机森林算法、
遗传算法
、免疫算法、极限学习机、贝叶斯分类器和BP_ADABOOST算法强分类器和弱分类器、支持向量机、蚁群算法、模拟退火算法、降维与特征选择包括最小二乘法...
遗传算法
求解TSP旅行商问题C语言源代码
遗传算法
求解TSP旅行商问题,C语言源代码。人工智能经典算法
C#
遗传算法
(常用7种
遗传算法
源码实例)
该资源包含了常用的7种C#
遗传算法
源码实例集,和
遗传算法
C#五子棋游戏程序
数据结构与算法
33,009
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章