导航:首页 > 源码编译 > 加速遗传算法

加速遗传算法

发布时间:2022-08-01 01:23:03

A. 王慧的研究介绍

1、1992.1~1994.7 短纤维沥青混凝土加强路面的疲劳寿命与材料的本构关系研究 国家自然科学资金课题 经费3.0万元,本人为主要参加人;
2、1994.1~1996.12 非赫芝接触定律及短纤维加强路面材料研究 国家自然科学资金课题 经费5.0万元,本人为主要参加人;
3、1995.3~1995.6 怀洪新河杨庵橡胶坝可研论证 省水利厅项目 经费10.0万元,本人担任坝址总平面图设计及坝平面、纵断面设计论证;
4、1996.10~1996.12 青弋江东干渠花园渡槽充水试验 宣城地区水电局项目 经费5.9万元,本人为项目负责人;
5、1999.1~2001.12 水工混凝土的(亚)表层缺陷与磨损关系研究 国家自然科学资金课题 经费13.5万元,本人为主要参加人;
6、1999.1~2001.2 我国水泥制品发展对策与研究 安徽省公路局项目 经费10.0万元,本人为主要参加人;
7、1999.9~2000.2 芜湖市扁担河堤防加固工程可行性研究 芜湖市投资公司项目 经费60.0万元, 本人为项目负责人;
8、2001.1~2003.12 水泥路面发展对策及修筑技术研究 安徽省交通厅项目 经费15.5万元,本人为主要参加人;
9、2004.6~2005.12 斜拉桥检测方法研究项目 安徽省交通厅项目 10.0万元 本人为主要参加人;
10、2007.9~2007.12 淮北市中水资源可利用量评价项目 安徽省水文局项目 经费4.5万,本人为主要参加人;
11、2009.10~2010.9 霍山中小学房屋检测项目 霍山县教育局项目 总经费20万,本人为项目负责人;
12、1010.1~2011.2 抗冲磨混凝土试验研究 中水十六局项目 经费9.66万,本人为项目负责人;
13、2009.10~2010.6 驻马店东高国际住宅结构检测项目 经费10万,本人为项目负责人;
14、2009.8~2010.12 大别山水库群优化调度研究 安徽省水利厅项目 经费40万,本人为主要参加人;
15、1011.8~2012.6 庐江县马槽河汤池镇河道治理研究 庐江县项目 经费22.4万 本人为项目负责人;
16、2011.10~2012.9 沿淮洼地涝灾成因研究 水利部淮委项目 经费50万,本人为技术负责人。 1、发表的论文
(1)混凝土及纤维混凝土的断裂分析《合肥工业大学学报》1996.4期 独作;
(2)剪切效应和转动惯性对基桩动力稳定性的影响《合肥工业大学学报》1996.2期 独作;
(3)直杆的动力稳定性与结构物桩基的动荷性能《工程力学》1995增刊 第一作者;
(4)混凝土、纤维混凝土裂纹扩展分析 《工业建筑》1997.1期 独作;
(5)短纤维复合材料纤维对基体裂纹的桥联作用 第九届全国复合材料学术会议论文集 世界图书出版公司北京公司出版 1996.8 第二作者;
(6)短纤维对基体微裂纹扩展的阻滞效应分析《复合材料学报》1995.3期 第三作者;
(7)桩周围地基横向抗力的有关问题探讨《岩土力学与工程》文集 大连理工大学出版 1995.9 第二作者;
(8)短纤维加强混凝土纤维对基体裂纹的桥架作用 全国第五届纤维水泥与纤维混凝土学术会议论文集 广东科技出版社 1994.11 第二作者;
(9)沥青混凝土粘弹性和时温等效性《复合材料进展》文集 航空工业出版社 1994.3 第三作者;
(10)The Fatigue Life and a Failure Criterion For Short Fiber Composite ISCM/2(北京召开)论文集 北京大学出版社 1992.8 第三作者;
(11)短纤维增强复合材料的裂纹阻滞分析 全国第七届复合材料学术会议论文集 大连理工大学出版 1992.6 第二作者
(12)Mechanics of Crack Arrest in Short Fiber Reinforced Composite ICCM/9(西班牙马德里召开)论文集 西班牙科技出版社 1993.7 第四作者;
(13)水工混凝土点测技术的几点改进措施 《合肥工业大学学报》2000.04期 第一作者;
(14)基于神经网络的水工混凝土冲刷损伤评估 《第11届华东固体力学学术讨论会文集》中国科学技术大学出版社 2001.10 第二作者;
(15)外贴碳纤维增强材料加固混凝土梁的抗弯设计方法《合肥工业大学学报》 2003.03期 第一作者;
(16)外贴碳纤维粘贴界面应力集中《合肥工业大学学报》 2004.04期 第二作者;
(17)结构破坏模糊可靠度计算 《江淮水利科技》2007.2期 第二作者
(18)加速遗传算法在水工结构可靠度分析中的应用《合肥工业大学学报》2008.8期 第二作者;
(19)基于MATLAB实现模糊综合指数法在水质评价中的应用 江淮水利科技 2011.01期 第二作者。
2、编写教材
《水利水电专业导论》 中国水利水电出版社 2012.1 主编 2009年8月 指导设计作品获全国首届水利学科大学生创新设计大赛二等奖(南京)
2011月7月 指导设计作品获全国第二届水利学科大学生创新设计大赛一等奖(武汉)
2012月2月 指导设计作品获第二届安徽省百所高校百万大学生创意创新大赛二等奖

B. 什么是遗传(要详细的资料和图片解说)

摘要
遗传是指经由基因的传递,使后代获得亲代的特征。遗传学是研究此一现象的学科,目前已知地球上现存的生命主要是以DNA作为遗传物质。除了遗传之外,决定生物特征的因素还有环境,以及环境与遗传的交互作用。
[编辑本段]特点
遗传算法是一类可用于复杂系统优化的具有鲁棒性的搜索算法,与传统的优化算法相比,主要有以下特点:[1]
1、 遗传算法以决策变量的编码作为运算对象。传统的优化算法往往直接决策变量的实际植本身,而遗传算法处理决策变量的某种编码形式,使得我们可以借鉴生物学中的染色体和基因的概念,可以模仿自然界生物的遗传和进化机理,也使得我们能够方便的应用遗传操作算子。
2、 遗传算法直接以适应度作为搜索信息,无需导数等其它辅助信息。
3、 遗传算法使用多个点的搜索信息,具有隐含并行性。
4、 遗传算法使用概率搜索技术,而非确定性规则。
[编辑本段]应用
由于遗传算法的整体搜索策略和优化搜索方法在计算是不依赖于梯度信息或其它辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学,下面我们将介绍遗传算法的一些主要应用领域:
1、 函数优化。
函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标的函数优化问题,用其它优化方法较难求解,而遗传算法可以方便的得到较好的结果。遗传与生育
2、 组合优化
随着问题规模的增大,组合优化问题的搜索空间也急剧增大,有时在目前的计算上用枚举法很难求出最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。例如遗传算法已经在求解旅行商问题、 背包问题、装箱问题、图形划分问题等方面得到成功的应用。
此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。
[编辑本段]现状
进入90年代,遗传算法迎来了兴盛发展时期,无论是理论研究还是应用研究都成了十分热门的课题。尤其是遗传算法的应用研究显得格外活跃,不但它的应用领域扩大,而且利用遗传算法进行优化和规则学习的能力也显着提高,同时产业应用方面的研究也在摸索之中。此外一些新的理论和方法在应用研究中亦得到了迅速的发展,这些无疑均给遗传算法增添了新的活力。遗传算法的应用研究已从初期的组合优化求解扩展到了许多更新、更工程化的应用方面。儿童孤独症可能来自遗传
随着应用领域的扩展,遗传算法的研究出现了几个引人注目的新动向:一是基于遗传算法的机器学习,这一新的研究课题把遗传算法从历来离散的搜索空间的优化搜索算法扩展到具有独特的规则生成功能的崭新的机器学习算法。这一新的学习机制对于解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。二是遗传算法正日益和神经网络、模糊推理以及混沌理论等其它智能计算方法相互渗透和结合,这对开拓21世纪中新的智能计算技术将具有重要的意义。三是并行处理的遗传算法的研究十分活跃。这一研究不仅对遗传算法本身的发展,而且对于新一代智能计算机体系结构的研究都是十分重要的。四是遗传算法和另一个称为人工生命的崭新研究领域正不断渗透。所谓人工生命即是用计算机模拟自然界丰富多彩的生命现象,其中生物的自适应、进化和免疫等现象是人工生命的重要研究对象,而遗传算法在这方面将会发挥一定的作用,五是遗传算法和进化规划(Evolution Programming,EP)以及进化策略(Evolution Strategy,ES)等进化计算理论日益结合。EP和ES几乎是和遗传算法同时独立发展起来的,同遗传算法一样,它们也是模拟自然界生物进化机制的只能计算方法,即同遗传算法具有相同之处,也有各自的特点。目前,这三者之间的比较研究和彼此结合的探讨正形成热点。
1991年D.Whitey在他的论文中提出了基于领域交叉的交叉算子(Adjacency based crossover),这个算子是特别针对用序号表示基因的个体的交叉,并将其应用到了TSP问题中,通过实验对其进行了验证。
D.H.Ackley等提出了随即迭代遗传爬山法(Stochastic Iterated Genetic Hill-climbing,SIGH)采用了一种复杂的概率选举机制,此机制中由m个“投票者”来共同决定新个体的值(m表示群体的大小)。实验结果表明,SIGH与单点交叉、均匀交叉的神经遗传算法相比,所测试的六个函数中有四个表现出更好的性能,而且总体来讲,SIGH比现存的许多算法在求解速度方面更有竞争力。
H.Bersini和G.Seront将遗传算法与单一方法(simplex method)结合起来,形成了一种叫单一操作的多亲交叉算子(simplex crossover),该算子在根据两个母体以及一个额外的个体产生新个体,事实上他的交叉结果与对三个个体用选举交叉产生的结果一致。同时,文献还将三者交叉算子与点交叉、均匀交叉做了比较,结果表明,三者交叉算子比其余两个有更好的性能。
国内也有不少的专家和学者对遗传算法的交叉算子进行改进。2002年,戴晓明等应用多种群遗传并行进化的思想,对不同种群基于不同的遗传策略,如变异概率,不同的变异算子等来搜索变量空间,并利用种群间迁移算子来进行遗传信息交流,以解决经典遗传算法的收敛到局部最优值问题
2004年,赵宏立等针对简单遗传算法在较大规模组合优化问题上搜索效率不高的现象,提出了一种用基因块编码的并行遗传算法(Building-block Coded Parallel GA,BCPGA)。该方法以粗粒度并行遗传算法为基本框架,在染色体群体中识别出可能的基因块,然后用基因块作为新的基因单位对染色体重新编码,产生长度较短的染色体,在用重新编码的染色体群体作为下一轮以相同方式演化的初始群体。
2005年,江雷等针对并行遗传算法求解TSP问题,探讨了使用弹性策略来维持群体的多样性,使得算法跨过局部收敛的障碍,向全局最优解方向进化。
[编辑本段]一般算法
遗传算法是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型。它的思想源于生物遗传学和适者生存的自然规律,是具有“生存+检测”的迭代过程的搜索算法。遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。 作为一种新的全局优化搜索算法,遗传算法以其简单通用、鲁棒性强、适于并行处理以及高效、实用等显着特点,在各个领域得到了广泛应用,取得了良好效果,并逐渐成为重要的智能算法之一。遗传算法是基于生物学的,理解或编程都不太难。下面是遗传算法的一般算法:
��
[编辑本段]创建一个随机的初始状态
��初始种群是从解中随机选择出来的,将这些解比喻为染色体或基因,该种群被称为第一代,这和符号人工智能系统的情况不一样,在那里问题的初始状态已经给定了。
��评估适应度
��对每一个解(染色体)指定一个适应度的值,根据问题求解的实际接近程度来指定(以便逼近求解问题的答案)。不要把这些“解”与问题的“答案”混为一谈,可以把它理解成为要得到答案,系统可能需要利用的那些特性。
��繁殖(包括子代突变)
��带有较高适应度值的那些染色体更可能产生后代(后代产生后也将发生突变)。后代是父母的产物,他们由来自父母的基因结合而成,这个过程被称为“杂交”。
��下一代
��如果新的一代包含一个解,能产生一个充分接近或等于期望答案的输出,那么问题就已经解决了。如果情况并非如此,新的一代将重复他们父母所进行的繁衍过程,一代一代演化下去,直到达到期望的解为止。
��并行计算
��非常容易将遗传算法用到并行计算和群集环境中。一种方法是直接把每个节点当成一个并行的种群看待。然后有机体根据不同的繁殖方法从一个节点迁移到另一个节点。另一种方法是“农场主/劳工”体系结构,指定一个节点为“农场主”节点,负责选择有机体和分派适应度的值,另外的节点作为“劳工”节点,负责重新组合、变异和适应度函数的评估。
[编辑本段]遗传算法-基本框架
1 GA的流程图
GA的流程图如下图所示
2 编码
遗传算法不能直接处理问题空间的参数,必须把它们转换成遗传空间的由基因按一定结构组成的染色体或个体。这一转换操作就叫做编码,也可以称作(问题的)表示(representation)。
评估编码策略常采用以下3个规范:
a)完备性(completeness):问题空间中的所有点(候选解)都能作为GA空间中的点(染色体)表现。
b)健全性(soundness): GA空间中的染色体能对应所有问题空间中的候选解。
c)非冗余性(nonrendancy):染色体和候选解一一对应。
目前的几种常用的编码技术有二进制编码,浮点数编码,字符编码,变成编码等。
而二进值编码是目前遗传算法中最常用的编码方法。即是由二进值字符集{0, 1}产生通常的0, 1字符串来表示问题空间的候选解。它具有以下特点:
a)简单易行;
b)符合最小字符集编码原则;
c)便于用模式定理进行分析,因为模式定理就是以基础的。
3 适应度函数
进化论中的适应度,是表示某一个体对环境的适应能力,也表示该个体繁殖后代的能力。遗传算法的适应度函数也叫评价函数,是用来判断群体中的个体的优劣程度的指标,它是根据所求问题的目标函数来进行评估的。
遗传算法在搜索进化过程中一般不需要其他外部信息,仅用评估函数来评估个体或解的优劣,并作为以后遗传操作的依据。由于遗传算法中,适应度函数要比较排序并在此基础上计算选择概率,所以适应度函数的值要取正值.由此可见,在不少场合,将目标函数映射成求最大值形式且函数值非负的适应度函数是必要的。
适应度函数的设计主要满足以下条件:
a)单值、连续、非负、最大化;
b) 合理、一致性;
c)计算量小;
d)通用性强。
在具体应用中,适应度函数的设计要结合求解问题本身的要求而定。适应度函数设计直接影响到遗传算法的性能。
4 初始群体的选取
遗传算法中初始群体中的个体是随机产生的。一般来讲,初始群体的设定可采取如下的策略:
a)根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,在此分布范围内设定初始群体。
b)先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。这种过程不断迭代,直到初始群体中个体数达到了预先确定的规模。
[编辑本段]遗传算法-遗传操作
遗传操作是模拟生物基因遗传的做法。在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。从优化搜索的角度而言,遗传操作可使问题的解,一代又一代地优化,并逼进最优解。
遗传操作包括以下三个基本遗传算子(genetic operator):选择(selection);交叉(crossover);变异(mutation)。这三个遗传算子有如下特点:
个体遗传算子的操作都是在随机扰动情况下进行的。因此,群体中个体向最优解迁移的规则是随机的。需要强调的是,这种随机化操作和传统的随机搜索方法是有区别的。遗传操作进行的高效有向的搜索而不是如一般随机搜索方法所进行的无向搜索。
遗传操作的效果和上述三个遗传算子所取的操作概率,编码方法,群体大小,初始群体以及适应度函数的设定密切相关。
1 选择
从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算子(reproction operator)。选择的目的是把优化的个体(或解)直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的,目前常用的选择算子有以下几种:适应度比例方法、随机遍历抽样法、局部选择法、局部选择法。
其中轮盘赌选择法 (roulette wheel selection)是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n,其中个体i的适应度为,则i 被选择的概率,为
显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例.个体适应度越大。其被选择的概率就越高、反之亦然。计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间均匀随机数,将该随机数作为选择指针来确定被选个体。个体被选后,可随机地组成交配对,以供后面的交叉操作。
2 交叉
在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。
交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:
a)实值重组(real valued recombination)
1)离散重组(discrete recombination);
2)中间重组(intermediate recombination);
3)线性重组(linear recombination);
4)扩展线性重组(extended linear recombination)。
b)二进制交叉(binary valued crossover)
1)单点交叉(single-point crossover);
2)多点交叉(multiple-point crossover);
3)均匀交叉(uniform crossover);
4)洗牌交叉(shuffle crossover);
5)缩小代理交叉(crossover with reced surrogate)。
最常用的交叉算子为单点交叉(one-point crossover)。具体操作是:在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体。下面给出了单点交叉的一个例子:
个体A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新个体
个体B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新个体
3 变异
变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法:
a)实值变异;
b)二进制变异。
一般来说,变异算子操作的基本步骤如下:
a)对群中所有个体以事先设定的编译概率判断是否进行变异;
b)对进行变异的个体随机选择变异位进行变异。
遗传算法导引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加速向最优解收敛。显然,此种情况下的变异概率应取较小值,否则接近最优解的积木块会因变异而遭到破坏。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。此时收敛概率应取较大值。
遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。所谓相互配合.是指当群体在进化中陷于搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。所谓相互竞争,是指当通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。如何有效地配合使用交叉和变异操作,是目前遗传算法的一个重要研究内容。
基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座的基因值做变动(以变异概率P.做变动),(0,1)二值码串中的基本变异操作如下:
基因位下方标有*号的基因发生变异。
变异率的选取一般受种群大小、染色体长度等因素的影响,通常选取很小的值,一般取0.001-0.1。
终止条件
当最优个体的适应度达到给定的阀值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。预设的代数一般设置为100-500代。
[编辑本段]遗传算法-求解算法的特点分析
遗传算法作为一种快捷、简便、容错性强的算法,在各类结构对象的优化过程中显示出明显的优势。与传统的搜索方法相比,遗传算法具有如下特点:
a)搜索过程不直接作用在变量上,而是在参数集进行了编码的个体。此编码操作,使得遗传算法可直接对结构对象(集合、序列、矩阵、树、图、链和表)进行操作。
b)搜索过程是从一组解迭代到另一组解,采用同时处理群体中多个个体的方法,降低了陷入局部最优解的可能性,并易于并行化。
c)采用概率的变迁规则来指导搜索方向,而不采用确定性搜索规则。
d)对搜索空间没有任何特殊要求(如连通性、凸性等),只利用适应性信息,不需要导数等其它辅助信息,适应范围更广。
[编辑本段]术语说明
由于遗传算法是由进化论和遗传学机理而产生的搜索算法,所以在这个算法中会用到很多生物遗传学知识,下面是我们将会用来的一些术语说明:
一、染色体(Chronmosome)
染色体又可以叫做基因型个体(indivials),一定数量的个体组成了群体(population),群体中个体的数量叫做群体大小。
二、基因(Gene)
基因是串中的元素,基因用于表示个体的特征。例如有一个串S=1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(Alletes)。
三、基因地点(Locus)
基因地点在算法中表示一个基因在串中的位置称为基因位置(Gene Position),有时也简称基因位。基因位置由串的左向右计算,例如在串 S=1101 中,0的基因位置是3。
四、基因特征值(Gene Feature)
在用串表示整数时,基因的特征值与二进制数的权一致;例如在串 S=1011 中,基因位置3中的1,它的基因特征值为2;基因位置1中的1,它的基因特征值为8。
五、适应度(Fitness)
各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数. 这个函数是计算个体在群体中被使用的概率。
[编辑本段]参考资料
1.《计算机教育》第10期 作者:王利
2.遗传算法——理论、应用与软件实现 王小平、曹立明着
3.同济大学计算机系 王小平编写的程序代码

参考资料
1. 中新网:英13岁少女患家族遗传怪病 满脸皱纹像老人,2010年01月27日

http://www.chinanews.com.cn/gj/gj-ywdd2/news/2010/01-27/2094204.shtml

C. 遗传算法的运算过程

遗传操作是模拟生物基因遗传的做法。在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。从优化搜索的角度而言,遗传操作可使问题的解,一代又一代地优化,并逼近最优解。
遗传操作包括以下三个基本遗传算子(genetic operator):选择(selection);交叉(crossover);变异(mutation)。这三个遗传算子有如下特点:
个体遗传算子的操作都是在随机扰动情况下进行的。因此,群体中个体向最优解迁移的规则是随机的。需要强调的是,这种随机化操作和传统的随机搜索方法是有区别的。遗传操作进行的高效有向的搜索而不是如一般随机搜索方法所进行的无向搜索。
遗传操作的效果和上述三个遗传算子所取的操作概率,编码方法,群体大小,初始群体以及适应度函数的设定密切相关。 从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算子(reproction operator)。选择的目的是把优化的个体(或解)直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的,目前常用的选择算子有以下几种:适应度比例方法、随机遍历抽样法、局部选择法。
其中轮盘赌选择法 (roulette wheel selection)是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n,其中个体i的适应度为,则i 被选择的概率,为遗传算法
显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例。个体适应度越大。其被选择的概率就越高、反之亦然。计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间均匀随机数,将该随机数作为选择指针来确定被选个体。个体被选后,可随机地组成交配对,以供后面的交叉操作。 在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。
交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:
a)实值重组(real valued recombination)
1)离散重组(discrete recombination)
2)中间重组(intermediate recombination)
3)线性重组(linear recombination)
4)扩展线性重组(extended linear recombination)。
b)二进制交叉(binary valued crossover)
1)单点交叉(single-point crossover)
2)多点交叉(multiple-point crossover)
3)均匀交叉(uniform crossover)
4)洗牌交叉(shuffle crossover)
5)缩小代理交叉(crossover with reced surrogate)。
最常用的交叉算子为单点交叉(one-point crossover)。具体操作是:在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体。下面给出了单点交叉的一个例子:
个体A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新个体
个体B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新个体 变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法:
a)实值变异
b)二进制变异。
一般来说,变异算子操作的基本步骤如下:
a)对群中所有个体以事先设定的变异概率判断是否进行变异
b)对进行变异的个体随机选择变异位进行变异。
遗传算法引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加速向最优解收敛。显然,此种情况下的变异概率应取较小值,否则接近最优解的积木块会因变异而遭到破坏。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。此时收敛概率应取较大值。
遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。所谓相互配合.是指当群体在进化中陷于搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。所谓相互竞争,是指当通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。如何有效地配合使用交叉和变异操作,是目前遗传算法的一个重要研究内容。
基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座的基因值做变动(以变异概率P.做变动),(0,1)二值码串中的基本变异操作如下:
基因位下方标有*号的基因发生变异。
变异率的选取一般受种群大小、染色体长度等因素的影响,通常选取很小的值,一般取0.001-0.1。 当最优个体的适应度达到给定的阈值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。预设的代数一般设置为100-500代。

D. 加速遗传算法为什么不稳定了我编了很多回还是不稳定,不知道是怎么回事了

遗传算法本身就是一种随机搜索算法,其所得最优值在实际最优值附近波动
而且对于大部分问题,得到最优解的变量组合是可以有多个的
所以每次都会有不同的结果
只要每次运行所得的适应度函数值相差不大,就说明结果是对的,
否则不是算子的操作方法不当就是遗传算法的程序实现过程有表达的错误。

E. matlab用遗传算法解决TSP的问题,求帮助

把下面的(1)-(7)依次存成相应的.m文件,在(7)的m文件下运行就可以了
(1) 适应度函数fit.m
function fitness=fit(len,m,maxlen,minlen)
fitness=len;
for i=1:length(len)
fitness(i,1)=(1-(len(i,1)-minlen)/(maxlen-minlen+0.0001)).^m;
end
(2)个体距离计算函数 mylength.m
function len=myLength(D,p)
[N,NN]=size(D);
len=D(p(1,N),p(1,1));
for i=1:(N-1)
len=len+D(p(1,i),p(1,i+1));
end

end
(3)交叉操作函数 cross.m
function [A,B]=cross(A,B)
L=length(A);
if L<10
W=L;
elseif ((L/10)-floor(L/10))>=rand&&L>10
W=ceil(L/10)+8;
else
W=floor(L/10)+8;
end
p=unidrnd(L-W+1);
fprintf('p=%d ',p);
for i=1:W
x=find(A==B(1,p+i-1));
y=find(B==A(1,p+i-1));
[A(1,p+i-1),B(1,p+i-1)]=exchange(A(1,p+i-1),B(1,p+i-1));
[A(1,x),B(1,y)]=exchange(A(1,x),B(1,y));
end

end
(4)对调函数 exchange.m
function [x,y]=exchange(x,y)
temp=x;
x=y;
y=temp;

end
(5)变异函数 Mutation.m
function a=Mutation(A)
index1=0;index2=0;
nnper=randperm(size(A,2));
index1=nnper(1);
index2=nnper(2);
%fprintf('index1=%d ',index1);
%fprintf('index2=%d ',index2);

temp=0;
temp=A(index1);
A(index1)=A(index2);
A(index2)=temp;
a=A;
end
(6)连点画图函数 plot_route.m
function plot_route(a,R)
scatter(a(:,1),a(:,2),'rx');
hold on;
plot([a(R(1),1),a(R(length(R)),1)],[a(R(1),2),a(R(length(R)),2)]);
hold on;
for i=2:length(R)
x0=a(R(i-1),1);
y0=a(R(i-1),2);
x1=a(R(i),1);
y1=a(R(i),2);
xx=[x0,x1];
yy=[y0,y1];
plot(xx,yy);
hold on;
end

end
(7)主函数
clear;
clc;
%%%%%%%%%%%%%%%输入参数%%%%%%%%
N=50; %%城市的个数
M=100; %%种群的个数
C=100; %%迭代次数
C_old=C;
m=2; %%适应值归一化淘汰加速指数
Pc=0.4; %%交叉概率
Pmutation=0.2; %%变异概率
%%生成城市的坐标
pos=randn(N,2);
%%生成城市之间距离矩阵
D=zeros(N,N);
for i=1:N
for j=i+1:N
dis=(pos(i,1)-pos(j,1)).^2+(pos(i,2)-pos(j,2)).^2;
D(i,j)=dis^(0.5);
D(j,i)=D(i,j);
end
end
%%如果城市之间的距离矩阵已知,可以在下面赋值给D,否则就随机生成

%%生成初始群体
popm=zeros(M,N);
for i=1:M
popm(i,:)=randperm(N);
end
%%随机选择一个种群
R=popm(1,:);

figure(1);
scatter(pos(:,1),pos(:,2),'rx');
axis([-3 3 -3 3]);
figure(2);
plot_route(pos,R); %%画出种群各城市之间的连线
axis([-3 3 -3 3]);
%%初始化种群及其适应函数
fitness=zeros(M,1);
len=zeros(M,1);
for i=1:M
len(i,1)=myLength(D,popm(i,:));
end
maxlen=max(len);
minlen=min(len);
fitness=fit(len,m,maxlen,minlen);
rr=find(len==minlen);
R=popm(rr(1,1),:);
for i=1:N
fprintf('%d ',R(i));
end
fprintf('\n');
fitness=fitness/sum(fitness);

distance_min=zeros(C+1,1); %%各次迭代的最小的种群的距离
while C>=0
fprintf('迭代第%d次\n',C);
%%选择操作
nn=0;
for i=1:size(popm,1)
len_1(i,1)=myLength(D,popm(i,:));
jc=rand*0.3;
for j=1:size(popm,1)
if fitness(j,1)>=jc
nn=nn+1;
popm_sel(nn,:)=popm(j,:);
break;
end
end
end
%%每次选择都保存最优的种群
popm_sel=popm_sel(1:nn,:);
[len_m len_index]=min(len_1);
popm_sel=[popm_sel;popm(len_index,:)];

%%交叉操作
nnper=randperm(nn);
A=popm_sel(nnper(1),:);
B=popm_sel(nnper(2),:);
for i=1:nn*Pc
[A,B]=cross(A,B);
popm_sel(nnper(1),:)=A;
popm_sel(nnper(2),:)=B;
end
%%变异操作
for i=1:nn
pick=rand;
while pick==0
pick=rand;
end
if pick<=Pmutation
popm_sel(i,:)=Mutation(popm_sel(i,:));
end
end
%%求适应度函数
NN=size(popm_sel,1);
len=zeros(NN,1);
for i=1:NN
len(i,1)=myLength(D,popm_sel(i,:));
end
maxlen=max(len);
minlen=min(len);
distance_min(C+1,1)=minlen;
fitness=fit(len,m,maxlen,minlen);
rr=find(len==minlen);
fprintf('minlen=%d\n',minlen);
R=popm_sel(rr(1,1),:);
for i=1:N
fprintf('%d ',R(i));
end
fprintf('\n');
popm=[];
popm=popm_sel;
C=C-1;
%pause(1);
end
figure(3)
plot_route(pos,R);
axis([-3 3 -3 3]);

F. 用遗传算法求解配送路线优化问题时,交叉率和变异率怎么设定

以下是问题的详细回答,文字有些长,请你耐心看希望对你有帮助。
传算法可以很好的解决物流配送路径优化问题。但是由于遗传算法交配算子操作可能会使最好解遗失,所以将遗传算法和模拟退火算法结合来解决这一问题。实验结果表明:用这种有记忆功能的遗传模拟退火算法求解物流配送路径优化问题,可以在一定程度上解决上述问题,从而得到较高质量的解。
一 物流系统简介
物流系统是以客户满意为目标,根据顾客的要求条件,从生产地到销售地,在仓储、包装、配送、运输、装卸等环节有机整合所形成的实物、服务以及信息的流通过程所组成的一个复杂的系统。
物流配送是现代化物流管理中的一个重要环节。它是指按用户的定货要求,在配送中心进行分货、配货,并将配好的货物及时送交收货人的活动。本文讨论物流配送中的路径优化问题,并且通过结合模拟退火算法来解决遗传算法在解决此类问题时的不足。
二 系统模型设计
物流配送路径优化问题可以按这样的情况进行描述:从某物流配送中心用多辆配送车辆向多个客户送货。每个客户的位置和货物需求量一定,每辆车的载重量一定,配送时间一定,其一次配送的最大行驶距离一定。要求合理安排车辆配送路线,使目标函数得到最优。并满足以下条件:(1)每条配送路径上各客户需求量之和不超过配送车辆的载重量;(2)每条配送路径的长度不超过配送车辆一次配送的最大行驶距离;(3)每次配送的货物不能超过客 户要求的时间; (4)每个客户的需求必须满足,且只能由一辆配送车送货。设配送中心需要向k个客户送货,每个客户的货物需求量是g (i=1,2,…..k),每辆配送车的载重量是q,且g 下面建立此问题的数学模型:c 表示点i到点j的运输成本,t 表示从i到s所允许的最大时间。配送中心编号为0,各客户编号为i(i=1,2,….,k),定义变量如下:
x = 1 或 0(其中,当x 等于1时表示车s由i驶向j;0表示没有该路径。)。
y = 1 或 0(其中,当y 等于1时表示点i的货运任务由s车完成;0表示没有。)。
根据上述变量定义可得到的数学模型如下所示:
min Z = ; (1) ;(2)
= 1或 m(其中,当 i = 1,2,……,k时为1,否则为0。);(3)
= y ,j = 1,2,……,k;s = 1,2,……,m; (4)
= y ,i = 0,1,……,k;s = 1,2,……,m; (5)
t > 0;且t t , j = 1,2……,s-1; (6)
上述模型中,式(2)为汽车容量约束;式(3)保证了每个客户的运输任务仅由一辆车完成,而所有运输任务则由m辆车协同完成;式(4)和式(5)限制了到达和离开某一客户的汽车有且仅有一辆。式(6)对配送时间做了约束,即物品到达指定地点的时间不能大于其最大允许时间。
上述模型中还要考虑时间问题,即每个客户对所送物品的时间要求各不相同,故需加入一个时间参数t 。对每个运输路径都加上时间参数t (t 的值可由客户需求中得知,并记录到数据库。),在每个规定的时间内(如一个月),优先配送t 值小的物品,每次在用遗传算法求解前,遍历规定时间内的所有t ,按照t 值由小到大排列染色体,然后再求出最优解,根据最优解制定配送方案。
三 引入退火算法改进求解过程
针对遗传算法的一些不足,将模拟退火算法与之结合,并加入记忆装置,从而构造了物流配送路径优化问题的一种有记忆功能的遗传模拟退火算法。该算法的特点是扩大了原有遗传算法的搜索邻域,在一定概率控制下暂时接受一些恶化解。同时利用记忆装置保证了在一定终止条件下所得的最终解至少是搜索过程中曾得到所有解中的最优解。该算法通过在常规的遗传算法基础上加入模拟退火算子和记忆装置而得到。下面首先介绍此有记忆功能的遗传模拟算法的步骤。根据参考文献[3],给出下面的算法实现步骤:
STEP1 给定群体规模maxpop,将初始群体按照t 所指定的值进行分块, k=0;初始温度t =t ,产生初始群体pop(k),并且初始群体的每个分块中都具有t 满足某一属性的特征值;对初始群体计算目标值f(i), 找出使函数f (t )最小的染色体i和这个函数值f,记i =i,f =f;其中,f (t )为状态i在温度为t 时的目标值。i∈ pop( k),即当代群体中的一个染色体;
STEP2 若满足结束条件则停止计算,输出最优染色体i 和最优解f ;否则,在群体pop(k)的每一个染色体i∈ pop(k)的邻域中随机选一状态j∈N( i ),且t 满足条件要求, 按模拟退火中的接受概率
接受或拒绝j,其中f (t ), f (t )分别为状态i,j的目标值。这一阶段共需maxpop次迭代以选出新群体newpop1;
STEP3 在newpop1(k+1)中计算适应度函数
其中,f 是newpop1(k+1)中的最小值。由适应度函数决定的概率分布从newpop1中随机选maxpop个染色体形成种群newpop2;
STEP4 按遗传算法的常规方法对newpop2进行交叉得到crosspop,再变异得到mutpop;
STEP5 染色体中的每个元素在满足t 的情况下,且具有较大t 值的元素完成时没有破坏具有较小t 值进行计算所需条件的情况下,不必按照由小到大的顺序进行排列,
STEP6 令pop(k+1)=mutpop,对pop(k+1)计算f (t ),找出使函数f (t )最小的染色体i和这个函数值f,如果f < f ,则令i = i, f =f, t = d(t ),k = k+1, 返回 STEP2。
出于表示简单,计算机处理方便的目的,对于VRP问题的遗传算法编码通常都采用自然数编码。上述数学模型的解向量可编成一条长度为k+m+1的染色体(0,i ,i ,…,i ,0,i ,…i ,0,…0,i ,…,i ,0)。在整条染色体中,自然数 i 表示第 j 个客户。0的数目为m+1个,代表配送中心,并把自然数编码分为m段,形成m个子路径,表示由m辆车完成所有运输任务。这样的染色体编码可以解释为:第一辆车从配送中心出发,经过i ,i ,…,i 客户后回到配送中心,形成了子路径1;第2辆车也从配送中心出发,途径i ,…i 客户后回到配送中心,形成子路径2。m辆车依次出发,完成所有运输任务,构成m条子路径。
如染色体0123045067890表示由三辆车完成9个客户的运输任务的路径安排:
子路径1:配送中心→客户1→客户2→客户3→配送中心
子路径2:配送中心→客户4→客户5→配送中心
子路径3:配送中心→客户6→客户7→客户8→客户9→配送中心。
为了使算法收敛到全局最优,遗传群体应具有一定的规模。但为了保证计算效率,群体规模也不能太大。一般取群体规模取值在10到100之间。
在初始化染色体时,先生成 k 个客户的一个全排列,再将 m+1 个 0 随机插入排列中,其中所选的 k 个客户所要求的时间必须在某一个特定的时间段内,且完成任何一个客户配送任务时不能破坏完成其他客户配送任务的条件。需要注意的是必须有两个 0 被安排在排列的头和尾,并且在排列中不能有连续的两个0。这样构成一条满足问题需要的染色体。针对此染色体,随机选择两个位置上的元素进行交换,并用算法对其调整,使其成为新的满足要求的染色体。交换若干次,直至生成满足群体规模数的染色体。
在这里,将容量约束式(2)转为运输成本的一部分,运输成本变为:
其中M为一很大的正数,表示当一辆车的货运量超过其最大载重量时的惩罚系数。M应趋向于无穷大。考虑到计算机处理的问题,参考文献[6],取M为1000000为宜。将此运输成本函数作为我们的目标函数。适应度函数采用一种加速适应度函数:
这种适应度函数加速性能比较好,可以迅速改进适应度的值,缩短算法运行时间。
将每代种群的染色体中适应度最大的染色体直接复制,进入下一代。种群中其他染色体按其适应度的概率分布,采用轮盘赌的方法,产生子代。这样既保证了最优者可生存至下一代,又保证了其余染色体可按生存竞争的方法生成子代,使得算法可收敛到全局最优。选中的染色体按一定的概率—交叉率,产生子代。交叉率在0.6~0.8之间,算法进化效果较好。
四 试验数据与比较
实验数据取自参考文献[6]。
实验1,随机生成1个有8个门店的VRP问题,初始数据如下:
图1八个门店的需求量及其位置
根据各仓库的需求量,计算出需要的汽车数:m=[17.82/(0.85*8)]+1=3。采用传统的遗传算法的各算子,并对其中的交叉算子进行了改造,取群体规模为20,进化代数为50,应用此程序他费时3s得到的结果为:
而我们的算法在上面的算法中加入了一个模拟退火算子,取初始退火温度为10,衰减系数取0.85使用第三节所述算法步骤,在奔腾四的计算机上计算,耗时2s,得结果如下:
实验2,随机生成1个有20个门店的VRP问题,初始数据如下:
图2 20个门店的需求量及其位置
计算得:需6辆车。用参考文献[6]中的算法取群体规模100,进化代数分别设为20,50,100,得到的结果不同:
图3 普通遗传算法的实验结果
而采用本文的算法,初始退火温度取10,衰减系数取0.85,在奔腾四的计算机上计算,则结果如下:
图4 新型算法的实验结果
从以上两个实验可以看出:采用本文中所述的算法,要得到相同的结果可以缩短进化代数,从而节约运算时间。而要增加进化代数必然得到更好的结果。
五 结论
用模拟退火算法与传统的遗传算法相结合来求解物流系统中车辆路径问题,可以使算法所需的进化代数明显减少,问题解可在最短时间内求出。因此在时间特性上有了比较好的改善,耗时较短,获得了较好的结果。根据参考资料所记载的数据表明,此算法在解决诸如车辆路径问题问题确实可行,并有较好的性能。而且随着问题规模的增大,这种对时间性能的改善效果将更加明显。这就非常有助于物流企业根据自己的实际情况科学、有效的指定物流决策,降低风险,降低成本,提高经济效益和自身的竞争力。
参考文献
[1] 郭耀煌 李军着,车辆优化调度,成都:成都科技大学,1994
[2] 邢文训 谢金星编着,现代优化计算方法,北京:清华大学出版社,1999
[3] 郎茂祥,物流配送车辆调度问题的模型和算法研究,北京:北方交通大学,2002
[4] 郎茂祥 胡思继,用混和遗传算法求解物流配送路径优化问题的研究,中国管理科学,2002
[5] 李军 谢秉磊 郭耀煌,非满载车辆调度问题的遗传算法,系统工程理论与实践,2000
[6] 唐坤,车辆路径问题中的遗传算法设计,东北大学学报(自然科学版),2002
[7] 姜大立 杨西龙 杜文等,车辆路径问题的遗传算法研究,系统工程理论与实践,1999
[8] 阎庆 鲍远律,新型遗传模拟退火算法求解物流配送路径问题,计算机科学与发展,2002

G. 基于实数编码的加速遗传算法可以求得理论上的最优解吗

不可以,现代优化算法都不可以求得理论上的最优解,只有较优解

阅读全文

与加速遗传算法相关的资料

热点内容
创建电影源码爬取项目 浏览:453
java多余的空格 浏览:83
手机软件连接云服务器 浏览:888
内圆弧编程实例 浏览:48
饼干pdf 浏览:423
kylin源码大全 浏览:687
android构建工具 浏览:422
zigy命令行选项不兼容 浏览:561
加密系统能录屏吗 浏览:190
安卓淘宝点进去跳链接如何关闭 浏览:786
u盘加密了手机读取不了 浏览:947
oracle11g启动命令 浏览:931
怎么把视频传到自己的文件夹 浏览:700
福州电动车在哪个app上摇号 浏览:818
礼书PDF 浏览:667
什么app看本子 浏览:394
如何学好编译语言 浏览:591
平面编程和切削 浏览:704
phpemoji表情符号 浏览:778
IBM云平台shor算法 浏览:577