第四节 遗传算法

合集下载

遗传算法_精品文档

遗传算法_精品文档
几种方法求得: • 预先指定的一个较大的数。 • 进化到当前代为止的最大目标函数值。 • 当前代或最近几代群体中的最大目标函数值。
遗传算法
2.名词解释
(3)染色体与基因
染色体(chromosome) 就是问题中个体的某种字符串形式的编码表示。字符串
中的字符也就称为基因(gene)。
例如:
个体
染色体
• 预先指定的一个较小的数。 • 进化到当前代为止的最小目标函数值。 • 当前代或最近几代群体中的最小目标函数值。
遗传算法
➢ 个体适应度评价
方法二:对于求目标函数最小值的优化问题,变换方法为:
F(X) =
Cmax - f(X) if f(X) Cmax
0
if f(X) Cmax
其中,Cmax是一个适当地相对比较大的数,它可用下面
遗传算法
➢ 选择-复制操作
[论盘选择示例]
个体序号 适应度
适应度累计值 随机数
被选中的个体号
1 2 3 4 5 6 7 8 9 10 8 2 17 7 2 12 11 7 3 7 8 10 27 34 36 48 59 66 69 76 1 9 17 25 33 41 49 57 65 73 1 2 3 3 4 6 7 7 8 10
种群
繁殖
变异
交叉
后种群
遗传算法
1. 处理步骤
(1)对优化问题构造初始可行解解集并对其编码,每个可行 解的编码对应于遗传中的一条染色体,编码的目的是为了方便 后续处理。
→ 种群 (2)对每个可行解进行评价,淘汰一部分较差的可行解,剩 下的可行解构成一个可以繁殖下一代的群体。
→ 繁殖 (3)淘汰后剩下的可行解两两交叉繁殖出新的子代解。

遗传算法的原理与应用

遗传算法的原理与应用

遗传算法的原理与应用1. 简介遗传算法(Genetic Algorithm,GA)是一种以模拟自然界的进化过程为基础的优化算法。

它模拟了遗传、变异和适应度评估等生物进化过程,通过对个体的基因编码和基因操作,以达到解决优化问题的目的。

遗传算法具备全局搜索能力、自适应性和并行计算特性,广泛应用于求解多样化且复杂的优化问题。

2. 基本原理遗传算法的基本原理是通过模拟自然界的进化过程,逐代优胜劣汰,最终得到适应度最高的个体。

具体步骤如下: - 初始化种群:随机生成一组个体作为初始种群。

- 评估适应度:根据问题的目标函数,对每个个体进行适应度评估。

- 选择:根据个体的适应度值,进行选择操作,保留适应度较高的个体。

- 交叉:随机选取父代个体,通过交叉操作产生新的个体。

- 突变:对新个体的基因进行变异操作。

- 替换:根据一定的替换策略,将新个体替换原有个体。

- 终止条件:达到预定的终止条件,例如迭代次数达到上限或适应度达到一定阈值。

3. 应用领域3.1 优化问题求解遗传算法广泛应用于各类优化问题的求解,如: - 旅行商问题:通过遗传算法求解旅行商问题,即在给定的城市集合中,找出使得旅行路径最短的路径。

- 装箱问题:通过遗传算法解决一维装箱问题,即如何将多个物品放入尽量少的箱子中。

- 车辆路径问题:通过遗传算法优化车辆路径,以达到降低成本和提高效率的目的。

- 工程优化问题:利用遗传算法对工程设计参数进行优化,使系统性能最优化。

3.2 机器学习与数据挖掘遗传算法在机器学习和数据挖掘领域也得到了广泛应用,常见的应用有: - 特征选择:通过遗传算法筛选出最优的特征子集,提高模型性能。

- 参数调优:利用遗传算法搜索最优的模型参数组合,提高模型准确度。

- 聚类分析:通过遗传算法对无标签数据进行聚类,发现数据内部的隐含结构。

- 分类模型优化:通过遗传算法优化分类模型的参数,提高模型的分类准确度。

4. 优点与不足4.1 优点•全局搜索能力:通过不断进化和选择,遗传算法具备较好的全局搜索能力,能够搜索到问题可能的最优解。

遗传算法

遗传算法
在实际问题中,许多优化问题都是非线性、多峰值的复杂函数优化问题,遗传算法 为解决这类问题提供了有效的工具。
遗传算法在人工智能领域具有重要的意义,它提供了一种模拟人类自然选择和遗传 学原理的优化搜索方法,为解决复杂问题提供了新的思路。
02
遗传算法基础概念
染色体与基因表示
染色体
在遗传算法中,染色体是用来表 示问题解决方案的一种编码方式 ,通常是一个字符串或数字数组

基因
基因是染色体的基本组成单位,表 示问题解决方案中的特定特征或参 数。
编码方式
根据问题的性质,可以选择二进制 编码、实数编码、排列编码等不同 的编码方式来表示染色体和基因。
适应度函数设计
适应度函数
用来评价染色体优劣的函数,通常根据问题的目标函数来设计。适 应度值较高的染色体在遗传过程中有更大的概率被保留和传承。
函数优化问题求解
求解非线性、非凸函数优化问题
遗传算法通过模拟生物进化过程,能够在复杂的搜索空间中找到全局最优解或近似最优解,特别 适用于求解非线性、非凸函数优化问题。
处理多峰值函数优化
遗传算法具有隐式并行性和全局搜索能力,能够同时搜索多个峰值,并找到全局最优解所在的区 域。
约束处理机制
针对约束优化问题,遗传算法可以通过罚函数法、修复法、解码法等机制处理约束条件,将约束 问题转化为无约束问题进行求解。
并行遗传算法
通过并行计算技术,将遗传算法的搜索过程分配到多个处理单元 上同时进行,显著提高了算法的运行速度和求解效率。
分布式遗传算法
在分布式系统中实现遗传算法,可以利用多台计算机的资源进行协 同优化,扩大了算法的搜索范围和应用领域。
云计算与遗传算法的结合
云计算平台为遗传算法提供了强大的计算能力和存储资源,使得处 理大规模优化问题成为可能。

遗传算法原理及其应用

遗传算法原理及其应用

遗传算法原理及其应用遗传算法原理及其应用《遗传算法原理及其应用》Chap1 序论一. 遗传算法的生物学基础1.1 遗传与变异基本概念 Cell:细胞Chromosome:染色体 Gene:基因 Locus:基因座 Allele:等位基因 Genotype:基因型Phenotype:表现型 Genome:基因组 Reproduction:复制 Crossover:交叉 Mutation:变异1.2 进化基本术语Evolution:进化 Population:群体 Individual:个体 Fitness:适应度1.3 遗传与进化的系统观1) 生物的所有遗传信息都包含在其染色体中,染色体决定了生物的性状;2) 染色体是基因及其有规律的排列所构成,遗传和进化过程发生在染色体上; 3) 生物的繁殖过程是由其基因的复制过程完成的;4) 通过同源染色体之间的交叉或染色体的变异会产生新的物种,使生物呈现新的性状;5) 对环境适应性好的基因或者染色体会经常比适应性差的基因或染色体有更多的机会遗传到下一代。

二. 遗传算法简介遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率2.1 遗传算法概要对于一个求函数最大值的优化问题(求函数最小值也类同),一般可描述为下述数学规t划模型:s..f(X)X∈R R⊆U式中,X=[x1,x2,...,xn] 为决策变量,f(X)为目标函数,第2,3式为约束条件,U是基本空间,R是U的一个子集。

满足约束条件的解X称为可行解,集合R表示由所有满足约束条件的解所组成的一个集合,叫做可行解集合。

对上述最优化问题,目标函数和约束条件种类繁多,由的是线性的,有的是非线性的;有的是连续的,有的是离散的;有点是单峰的,有的是多峰的。

求最优解或近似最优解的方法主要有三种:枚举法,启发式算法和搜索算法:枚举法:枚举出可行解集合内的所有的可行解,以求出精确最优解。

对于连续1)函数,首先要求对其进行离散化处理。

遗传算法

遗传算法

遗传算法一、概念二、遗传算法的特点遗传算法是解决搜索问题的一种通用算法,对于各种通用问题都可以使用。

搜索算法的共同特征为:①首先组成一组候选解②依据某些适应性条件测算这些候选解的适应度③根据适应度保留某些候选解,放弃其他候选解④对保留的候选解进行某些操作,生成新的候选解。

在遗传算法中,上述几个特征以一种特殊的方式组合在一起:基于染色体群的并行搜索,带有猜测性质的选择操作、交换操作和突变操作。

这种特殊的组合方式将遗传算法与其它搜索算法区别开来。

遗传算法还具有以下几方面的特点:(1)遗传算法从问题解的串集开始搜索,而不是从单个解开始。

这是遗传算法与传统优化算法的极大区别。

传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。

遗传算法从串集开始搜索,覆盖面大,利于全局择优。

(2)遗传算法同时处理群体中的多个个体,即对搜索空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。

(3)遗传算法基本上不用搜索空间的知识或其它辅助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。

适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。

这一特点使得遗传算法的应用范围大大扩展。

(4)遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导他的搜索方向。

(5)具有自组织、自适应和自学习性。

遗传算法利用进化过程获得的信息自行组织搜索时,适应度大的个体具有较高的生存概率,并获得更适应环境的基因结构。

(6)此外,算法本身也可以采用动态自适应技术,在进化过程中自动调整算法控制参数和编码精度,比如使用模糊自适应法三、算法原理遗传操作是模拟生物基因遗传的做法。

在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。

从优化搜索的角度而言,遗传操作可使问题的解,一代又一代地优化,并逼近最优解。

遗传操作包括以下三个基本遗传算子(genetic operator):选择(selection);交叉(crossover);变异(mutation)。

遗传算法 算法原理

遗传算法 算法原理

遗传算法算法原理(原创实用版)目录1.遗传算法的概述2.遗传算法的原理3.遗传算法的应用正文一、遗传算法的概述遗传算法(Genetic Algorithm,简称 GA)是一种模拟自然界生物进化过程的优化算法。

其核心思想是基于自然选择、遗传和突变等生物学原理,通过群体中的个体在不断迭代中进行优胜劣汰,达到解决问题和优化目标的效果。

遗传算法在解决复杂问题、非线性问题和全局最优解问题等方面具有较强的优势,广泛应用于各个领域。

二、遗传算法的原理1.遗传操作遗传算法的基本操作包括选择、交叉和变异。

选择操作是根据适应度函数对当前群体中的个体进行评估,选择优秀个体进行繁殖。

交叉操作是将选中的优秀个体进行染色体互换,产生新的后代。

变异操作是在后代中随机选择某个位点进行变异,以一定的概率产生新的特性。

2.适应度函数适应度函数是遗传算法中的重要概念,用于评估每个个体的优劣程度。

适应度函数的取值范围为 [0, 1],其中 1 表示最优解,0 表示最劣解。

在遗传算法中,适应度函数的取值会直接影响到个体的选择和淘汰。

3.遗传算法的基本流程遗传算法的基本流程如下:(1)初始化种群:创建一个初始种群,包括多个随机生成的个体,每个个体表示一个解。

(2)评估适应度:计算种群中每个个体的适应度值。

(3)选择操作:根据适应度值对种群进行选择,选择一定数量的优秀个体进行繁殖。

(4)交叉操作:对选中的优秀个体进行染色体互换,生成新的后代。

(5)变异操作:在后代中随机选择某个位点进行变异,以一定的概率产生新的特性。

(6)更新种群:将新产生的后代替换掉原种群中一些适应度较低的个体,形成新的种群。

(7)重复步骤 2-6,直至满足停止条件。

三、遗传算法的应用遗传算法在许多领域都取得了显著的应用成果,如机器学习、控制系统、信号处理、图像处理、运筹学等。

遗传算法简介与基本原理

遗传算法简介与基本原理遗传算法是一种模拟自然进化过程的优化算法,它通过模拟生物进化中的遗传、交叉和变异等过程,来寻找问题的最优解。

遗传算法在解决复杂问题、优化搜索和机器学习等领域有广泛的应用。

一、遗传算法的基本原理遗传算法的基本原理是受到达尔文进化论的启发,模拟了自然界中的生物进化过程。

它通过对候选解进行编码、选择、交叉和变异等操作,逐代迭代,不断优化求解的问题。

1. 编码:遗传算法首先需要对问题的解进行编码,将问题的解表示为染色体或基因的形式。

染色体通常由二进制串组成,每个基因代表一个问题的解。

2. 选择:在每一代中,遗传算法通过选择操作,根据适应度函数的评估结果,选择一部分优秀的个体作为父代,用于产生下一代的个体。

选择操作通常使用轮盘赌算法或竞争选择算法。

3. 交叉:在选择操作之后,遗传算法通过交叉操作,将父代个体的染色体进行交叉配对,产生新的个体。

交叉操作可以通过单点交叉、多点交叉或均匀交叉等方式实现。

4. 变异:为了增加算法的多样性和搜索空间,遗传算法引入了变异操作。

变异操作通过对个体的染色体进行随机的变换,以引入新的解,并防止算法陷入局部最优解。

5. 评估:在每一代中,遗传算法需要根据问题的特定要求,对每个个体的适应度进行评估。

适应度函数用于度量个体的优劣程度,通常越优秀的个体具有越高的适应度。

6. 迭代:通过不断地进行选择、交叉、变异和评估等操作,遗传算法逐代迭代,直到满足停止条件或达到最大迭代次数。

最终,遗传算法将输出找到的最优解或近似最优解。

二、遗传算法的应用遗传算法在许多领域都有广泛的应用,尤其是在复杂问题求解和优化搜索方面。

1. 组合优化问题:遗传算法可以用于求解组合优化问题,如旅行商问题、背包问题等。

通过编码问题的解和适应度函数的设计,遗传算法可以在大规模的搜索空间中找到最优解或近似最优解。

2. 机器学习:遗传算法可以用于机器学习中的特征选择、参数优化和模型优化等问题。

通过对候选解的编码和适应度函数的设计,遗传算法可以帮助机器学习算法找到更好的模型和参数组合。

遗传算法的详解及应用

遗传算法的详解及应用遗传算法(Genetic Algorithm,GA)是一种模拟自然选择和遗传过程的算法。

在人工智能和优化问题中得到了广泛的应用。

本文将详细介绍遗传算法的基本原理和优化过程,并探讨它在实际应用中的价值和局限性。

一、遗传算法的基本原理遗传算法的基本原理是通过模拟生物进化的过程来寻找一个问题的最优解。

在遗传算法中,优秀的解决方案(也称为个体,Individual)在进化中拥有更高的生存几率,而劣质的解决方案则很快被淘汰。

在遗传算法的过程中,每个个体由若干个基因组成,每个基因代表某种特定的问题参数或者状态。

通过遗传算法,我们可以找到问题最优的解或者其中一个较优解。

遗传算法的基本流程如下:1. 初始化群体(Population):首先,我们需要随机生成一组初始解作为群体的个体。

这些个体被称为染色体(chromosome),每一个染色体都由一些基因(gene)组成。

所以我们可以认为群体是由很多染色体组成的。

2. 选择操作(Selection):选择运算是指从群体中选出一些个体,用来繁殖后代。

其目的是让优秀的个体留下更多的后代,提高下一代的平均适应度。

在选择操作中,我们通常采用轮盘赌选择(Roulette Wheel Selection)法、锦标赛(Tournament)法、排名选择(Ranking Selection)法等方法。

3. 交叉操作(Crossover):交叉运算是指随机地从两个个体中选出一些基因交换,生成新的染色体。

例如,我们可以将染色体A和B中的第三个基因以后的基因交换,从而产生两个新的染色体。

4. 变异操作(Mutation):变异运算是指随机改变染色体中的个别基因,以增加多样性。

例如,我们随机将染色体A的第三个基因改变,从而产生一个新的染色体A'。

5. 适应度评估(Fitness Evaluation):适应度评估是指给每一个个体一个适应度分数,该分数是问题的目标函数或者优化函数。

《遗传算法》PPT课件


遗传算法
学习过程如下:
选择适应度最好的4个
11 01001101 -4 13 01001101 -4 14 00111001 -4 15 00101111 -5
11与13交叉
16 01001101 -4 17 01001101 -4
14与15交叉
18 00111011 -4 19 00101101 -5
遗传算法
遗传算法是一种通过模拟自然进化过程搜索最优解 的方法。 遗传算法是一类随机算法通过作用于染色体上的基 因,寻找好的染色体来求解问题。 遗传算法对求解问题的本身一无所知,它所需要的 仅是对算法所产生的每个染色体进行评价,并基于适 应值来选择染色体,使适应性好的染色体比适应性差 的染色体有更多的繁殖机会。 遗传算法通过有组织地而且是随机地信息交换来重 新结合那些适应性好的串,在每一个新的串的群体中 作为额外增添,偶尔也要在串结构中尝试用新的位和 段来代替原来的部分。
遗传算法
要做的第一件事是将染色体转换成二进制串, 00表示0 01表示1 10表示2 11表示3 交叉位置:6,即父代染色体被复制下来产生两个后代 然后两个后代交换他们的最后两位 变异:由随机选择一位、求反
遗传算法
例如,染色体0223的适应度为4。 若所有7个规则都满足(也就是当染色体是0133),则 适应度为7。 适应度值可以求负操作,以使任务成为最小化搜索。 因此,目标染色体具有-7的适应度。 要做的第一件事是将染色体转换成二进制串, 这可通过由00表示0,01表示1,10表示2,11表示3来完 成。现在每个基因由两位表示,目标染色体有00011111 表示。 为了简化例子,总是在位置6处应用单点交叉。 父染色体被复制下来产生两个后代,然后两个后代交换 他们的最后两位。 变异由随机选择一位且对他求反组成。

遗传算法(精讲)

6
适应值
三、遗传算法的基本流程(1) 遗传算法的基本流程( )
基本步骤:
确定实际问题参数集 对参数进行编码 (1)选择编码策略,把参数集合X和域转换为相应编码空间S。 选择编码策略,把参数集合X和域转换为相应编码空间S (2)定义适应值函数f(x)。 定义适应值函数f(x)。 f(x) 初始化群体P(t) 定义遗传策略,包括选择群体大小、交叉、 (3)定义遗传策略,包括选择群体大小、交叉、变异方法以及确定交 叉概率Pc、变异概率Pm等遗传参数。 叉概率P 变异概率P 等遗传参数。 评价群体 随机初始化生成群体P(t) P(t)。 (4)随机初始化生成群体P(t)。 (5)计算群体中个体的适应值f(X)。 计算群体中个体的适应值f(X)。 f(X) 群体P(t+1) 满足停止准则? 按照遗传策略,运用选择、交叉和变异操作作用于群体, (6)按照遗传策略,运用选择、交叉和变异操作作用于群体,形成下 三个基本操作: 一代群体。 一代群体。 结束 群体P(t) 1、选择 判断群体性能是否满足某一指标,或者已完成预定跌代次数, (7)判断群体性能是否满足某一指标,或者已完成预定跌代次数,不 遗传操作 2、交叉 满足则返回第6 或者修改遗传算法再返回第6 满足则返回第6步,或者修改遗传算法再返回第6步。 3、变异 其他高级操作 标准遗传算法基本流程框图 7
2
一、遗传算法概述(2) 遗传算法概述(
基本思想 使用模拟生物和人类进化的方法求 解复杂的优化问题,因而也称为模拟 解复杂的优化问题, 进化优化算法。 进化优化算法。将择优与随机信息交 换结合在一起。在每一代中, 换结合在一起。在每一代中,使用上 一代中最好的, 一代中最好的,即最适应环境的位或 片段,形成新的人工生物集。 片段,形成新的人工生物集。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四节遗传算法遗传算法是仿真生物遗传学和自然选择机理,通过人工方式所构造的一类搜索算法,从某种程度上说遗传算法是对生物进化过程进行的数学方式仿真。

霍兰德(Holland )于1975年在他的著作《Adaptation in Natural and Artificial Systems》首次提出遗传算法,并主要由他和他的学生发展起来的。

生物种群的生存过程普遍遵循达尔文进化准则,群体中的个体根据对环境的适应能力而被大自然所选择或淘汰。

进化过程的结果反映在个体的结构上,其染色体包含若干基因,相应的表现型和基因型的联系体现了个体的外部特性与内部机理间逻辑关系。

通过个体之间的交叉、变异来适应大自然环境。

生物染色体用数学方式或计算机方式来体现就是一串数码,仍叫染色体,有时也叫个体;适应能力是对应着一个染色体的一个数值来衡量;染色体的选择或淘汰则按所面对的问题是求最大还是最小来进行。

遗传算法自从1975年提出以来,在国际上已经形成了一个比较活跃的研究领域,已召开了多次比较重要的国际会议和创炝撕芏嘞喙氐墓 士 铩?/p>遗传算法已用于求解带有应用前景的一些问题,例如遗传程序设计、函数优化、排序问题、人工神经网络、分类系统、计算机图像处理和机器人运动规划等。

一、遗传算法的结构霍兰德(Holland )的遗传算法通常被称为“简单遗传算法”简称SGA ),我们以此作为讨论主要对象,加上适应的改进,分析遗传算法的结构和机理。

我们首先介绍主要的概念。

我们在讲解中会结合如下的货郎担问题(Travelling Salesman Problem,简记为TSP):设有n个城市,城市i和城市j 之间的距离为d(i,j)i,j=1,…,n。

TSP问题是要找遍访每个域市恰好一次的一条回路,且其路径总长度为最短。

1.编码与译码许多应用问题结构很复杂,但可以化为简单的位串形式编码表示,我们将问题结构变换为位串形式编码表示的过程叫编码;而相反将位串形式编码表示变换为原问题结构的过程叫译码或解码。

我们把位串形式编码表示叫染色体,有时也叫个体。

对TSP可以按一条回路城市的次序进行编码,比如码串134567829表示从城市1开始,依次是城市3,4,5,6,7,8,2,9,最后回到城市1。

一般情况是从城市w1开始,依次经过城市w2,……,wn,最后回到城市w1,我们就有如下编码表示:w1 w2 …… wn由于是回路,记wn+1=w1。

它其实是1,……,n的一个循环排列。

要注意w1,w2,……,wn是互不相同的。

2.适应度函数为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数。

通过适应度函数来决定染色体的优、劣程度,它体现了自然进化中的优利劣汰原则。

对优化问题,适应度函数就是目标函数。

TSP 的目标是路径总长度为最短,路径总长度的倒数就可以为TSP的适应度函数:请注意其中wn+1=w1。

适应度函数要有效反映每一个染色体与问题的最优解染色体之间的差距,一个染色体与问题的最优解染色体之间的差距小,则对应的适应度函数值之差就小,否则就大。

适应度函数的取值大小与求解问题对象的意义有很大的关系。

3.遗传操作简单遗传算法的遗传操作主要有三种:选择(selection )、交叉(crossover)、变异(mutation)。

改进的遗传算法大量扩充了遗传操作,以达到更高的效率。

选择操作也叫复制操作,根据个体的适应度函数值所度量的优、劣程度决定它在下一代是被淘汰还是被遗传。

一般地说,选择将使适应度较大(优良)个体有较大的存在机会,而适应度较小(低劣)的个体继续存在的机会也较小。

简单遗传算法采用赌轮选择机制,令表示群体的适应度值之总和,表示种群中第i个染色体的适应度值,它产生后代的能力正好为其适应度值所占份额。

交叉操作的简单方式是将被选择出的两个个体P1和P2作为父母个体,将两者的部分码值进行交换。

假设有如下八位长的二个体:产生一个在1到7之间的随机数c,假如现在产生的是3,将P1和P2的低三位交换:P1的高五位与P2的低三位组成数串10001001,这就是P1和P2的一个后代Q1个体;P2的高五位与P1的低三位组成数串11011110,这就是P1和P2的一个后代Q2个体。

其交换过程如下图所示:图5-4-1 交叉示意图让我们来讨论TSP的交叉操作作为较复杂的例子,举例如下:以下标作为交叉位置的编号,设已选择了如下两个染色体:w1 w2 …… wn z1 z2 …… zn随机产生一个1和n-1之间的数k,将此二染色体中前k个城市作交换,得到:z1 z2 …… zk wk+1 wk+2 …… wnw1 w2 …… wk zk+1 zk+2 …… zn但这两个可能不是合法的染色体,因为可能有重复的数码,要进行如下的合法化处理:首先对z1 z2 …… zk wk+1 wk+2 …… wn进行改造。

将z1 z2 ……zk 和wk+1 wk+2 …… wn中的数字进行比较,如果在wk+1 wk+2 …… wn中出现了z1 z2 …… zk的数字,就在wk+1 wk+2 …… wn中删除这些数字,剩下来的总数串就没有n个了,也就是说不是1,……,n的一个全排列,其中缺少的数字是w1 w2 ……wk中的某些数字,因此按w1 w2 ……wk的顺序将缺少的数字取出来补到z1 z2 …… zk wk+1 wk+2 …… wn的后面。

如此繁杂的过程可以简化如下,首先将w1 w2 …… wk加到z1 z2 …… zk wk+1 wk+2 …… wn后面,得到:z1 z2 …… zk wk+1 wk+2 …… wn w1 w2 …… wk从这个数串的wk+1 wk+2 …… wn中删除wk+1 wk+2 …… wn已出现在z1z2 …… zk 中的数字,接着从w1 w2 …… wk 部分中删除已出现在z1 z2…… zk wk+1 wk+2 …… wn中的那些数字,得到的是一个合法的染色体。

同样对另一个不合法染色体进行类似合法化。

变异操作的简单方式是改变数码串的某个位置上的数码。

我们先以最简单的二进制编码表示方式来说明,二进制编码表示的每一个位置的数码只有0与1这两个可能,比如有如下二进制编码表示:其码长为8,随机产生一个1至8之间的数k,假如现在k=5,对从右往左的第5位进行变异操作,将原来的0变为1,得到如下数码串(红色的数字1是被变异操作后出现的):二进制编码表示时的简单变异操作是将0与1互换:0变异为1,1变异为0。

现在对TSP的变异操作作简单介绍,随机产生一个1至n之间的数k,决定对回路中的第k个城市的代码wk作变异操作,又产生一个1至n之间的数w,替代wk,并将wk加到尾部,得到:w1 w2 …… wk-1 w wk+1 …… wn wk你发现这个串有n+1个数码,注意数w其实在此串中出现重复了,必须删除与数w相重复的,得到合法的染色体。

4.控制参数并不是所有被选择了的染色体都要进行交叉操作和变异操作,而是以一定的概率进行,一般在程序设计中交叉发生的概率要比变异发生的概率选取得大若干个数量级,交叉概率取0.6 至0.95之间的值;变异概率取0.001至0.01之间的值。

种群的染色体总数叫种群规模,它对算法的效率有明显的影响,规模太小不得于进化,而规模太大将导致程序运行时间长。

对不同的问题可能有各自适合的种群规模,通常种群规模为30至100。

另一个控制参数是个体的长度,有定长和变长两种。

它对算法的性能也有影响。

二、遗传算法的基本原理遗传算法类似于自然进化,通过作用于染色体上的基因寻找好的染色体来求解问题。

与自然界相似,遗传算法对求解问题的本身一无所知,它所需要的仅是对算法所产生的每个染色体进行评价,并基于适应值来选择染色体,使适应性好的染色体有更多的繁殖机会。

在遗传算法中,通过随机方式产生若干个所求解问题的数字编码,即染色体,形成初始群体;通过适应度函数给每个个体一个数值评价,淘汰低适应度的个体,选择高适应度的个体参加遗传操作,经过遗传操作后的个体集合形成下一代新的种群。

对这个新种群进行下一轮进化。

这就是遗传算法的基本原理。

下面就是遗传算法思想,也是简单遗传算法的求解步骤如下:(1)初始化群体;(2)计算群体上每个个体的适应度值;(3)按由个体适应度值所决定的某个规则选择将进入下一代的个体;(4)按概率Pc进行交叉操作;(5)按概率Pc进行突变操作;(6)没有满足某种停止条件,则转第(2)步,否则进入(7)。

(7)输出种群中适应度值最优的染色体作为问题的满意解或最优解。

程序的停止条件最简单的有如下二种:完成了预先给定的进化代数则停止;种群中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。

根据遗传算法思想可以画出如图5-4-2所示的简单遗传算法框图:图5-4-2简单遗传算法框图一般遗传算法的主要步骤如下:(1)随机产生一个由确定长度的特征字符串组成的初始群体。

(2)对该字符串群体迭代地执行下面的步骤①和步骤②钡铰 阃V棺荚蛭 梗?/p>a.计算群体中每个个体字符串的适应值;b.应用复制、交叉和变异等遗传算子产生下一代群体。

(3)把在后代中出现的最好的个体字符串指字为遗传算法的执行结果,这个结果可以表示问题的一个解也可将遗传算法的一般结构表示为如下形式:Procedure:Genetic Algorithmsbegin;initialize P(t);evaluate P(r);while(not termination condition)dobeginrecombine P(t)to yield C(t);evaluate C(t);select P(t+1)from P(t)and C(t);;endend遗传算法求解举例为了便于理解,下面通过一个简单的例子来说明遗传算法的主要内容及其运行步骤。

例5.1用遗传算法求解函数的最大值,其中。

首先用高等数学的方法求解。

先求得函数的导数,令其为0:变换得到:很明显,以上方程无数解:其中表示趋向于0的递减实数序列。

当i为奇数时,达到了它的极大值;当i为偶数时,为极小值。

在区间[-1,2]中,当时,f(x)最大,它仅比稍大。

下面构造一个遗传算法来求解上面的问题。

把遗传算法归纳为5个基本组成部分:(1)方案表示用一个二进制矢量表示一个染色体,由染色体来代表变量x的实数值,每个染色体的每一位二进制数称为遗传因子。

矢量的长度取决于所要求的精度,在此取小数点后6位数。

由于变量X的域长为3,则[-1,2]将被均匀地分为个等长的区间。

这表明每个染色体由22位字节的二进制矢量表示。

因为区间[-1,2]中的x和二进制串<>之间的映射是直接的,并由以下两步进行:(a)将二进制<>转化为相应的十进制:(b)找到相应的实数x:其中-1.0为区间[-1,2]的左边界,3为区间长度。

相关文档
最新文档