文档视界 最新最全的文档下载
当前位置:文档视界 › 遗传算法——理论、应用与软件实现1

遗传算法——理论、应用与软件实现1

遗传算法——理论、应用与软件实现1
遗传算法——理论、应用与软件实现1

遗传算法的基本原理

第二章 遗传算法的基本原理 2.1 遗传算法的基本描述 2.1.1 全局优化问题 全局优化问题的定义:给定非空集合S 作为搜索空间,f :S —>R 为目标函数,全局优化问题作为任务)(max x f S x ∈给出,即在搜索空间中找到至少一个使目标函数最大化的点。 全局最大值(点)的定义:函数值+∞<=)(**x f f 称为一个全局最大值,当且仅当x ? S x ∈,(ρi i b a <,i 12)定义适应度函数f(X); 3)确定遗传策略,包括群体规模,选择、交叉、变异算子及其概率。 4)生成初始种群P ; 5)计算群体中各个体的适应度值; 6)按照遗传策略,将遗传算子作用于种群,产生下一代种群; 7)迭代终止判定。 遗传算法涉及六大要素:参数编码,初始群体的设定,适应度函数的设计,遗传操作的设计,控制参数的设定,迭代终止条件。

2.1.3 遗传编码 由于GA 计算过程的鲁棒性,它对编码的要求并不苛刻。原则上任何形式的编码都可以,只要存在合适的对其进行操作的遗传算子,使得它满足模式定理和积木块假设。 由于编码形式决定了交叉算子的操作方式,编码问题往往称作编码-交叉问题。 对于给定的优化问题,由GA 个体的表现型集合做组成的空间称为问题(参数)空间,由GA 基因型个体所组成的空间称为GA 编码空间。遗传算子在GA 编码空间中对位串个体进行操作。 定义:由问题空间向GA 编码空间的映射称为编码,而有编码空间向问题空间的映射成为译码。 1)2)3)它们对1) 2) k =1,2,…,K; l =1,2,…,L; K=2L 其中,个体的向量表示为),,,(21kL k k k a a a a =,其字符串形式为kL k k k a a a s 21=,s k 称为个体a k 对应的位串。表示精度为)12/()(--=?L u v x 。 将个体又位串空间转换到问题空间的译码函数],[}1,0{:v u L →Γ的公式定义为: 对于n 维连续函数),,2,1](,[),,,,(),(21n i v u x x x x x x f i i i n =∈=,各维变量的二进制

谈谈遗传算法的原理

谈谈遗传算法的原理 发表时间:2011-08-24T09:52:45.450Z 来源:《魅力中国》2011年7月上供稿作者:朱小宝 [导读] 从上表中可以看出,群体经过一代进化之后,其适应度的最大值、平均值都得到了明显的改进。 朱小宝 (南昌航空大学飞行器工程学院江西南昌 330029) 中图分类号:TP301.6 文献标识码:A 文章编号:1673-0992(2011)07-0000-01摘要:自从霍兰德于1975年在他的著作《Adaption im Natural and artificial Systems》中首次提出遗传算法以来,经过了近30年的研究,现在已经发展到了一个比较成熟的阶段,并且在实际中得到了很好的应用。为了更好的了解遗传算法,本文通过最简单的一个手工计算实例来还原遗传算法的全过程。 关键词:遗传算法生物进化染色体种群 自然界的生物进化是按“适者生存,优胜劣汰”规律进行的,而遗传算法就是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。其基本思想是力求充分模仿这一自然寻优过程的随机性、鲁棒性和全局性,这是一种全局优化搜索算法,因为其直接对结构对象进行操作,不存在求导和函数连续性的限定。 遗传算法采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。遗传算法的操作对象是一群二进制串(称为染色体),即种群。这里每一个染色体都对应问题的一个解。从初始种群出发,采用基于适应值比例的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。如此模仿生命的进化一代代演化下去,直到满足期望的终止条件为止。 遗传算法主要步骤: (1)编码:由于遗传算法不能直接处理解空间的数据,必须通过编码将它们表示成遗传空间的基因型串结构数据。 (2)选择初始种群:随机产生N个初始串结构数据,每个串结构数据称为一个个体,也称为染色体,N个个体体构成了一个种群。 (3)选择适应度函数:遗传算法在搜索过程中一般不需要其他外部信息或知识,仅用适应度函数来评价个体的适应度。 (4)选择:利用选择概率再随机的选择个体和复制数量。选择算子的设计可依据达尔文适者生存的进化论原则,选择概率大的被选中的机会较多。 (5)杂交:对被选中的个体进行随机配对并随机的选择基因交换位,交换基因后产生新的个体,全体新个体构成新的(下一代)种群。 (6)变异:变异操作是按位进行求反,对二二进制编码的个体而言,就是对随机选中的某位进行求反运算,即“0”变“1”,“1”变大“0”。 (7)一代种群通过遗传,即选择、杂交和变异产生下一代种群。新种群又可重复上述的选择、杂交和变异的遗传过程。 为更好地理解遗传算法的运算过程,下面用手工计算来简单地模拟遗传算法的各个主要执行步骤。 求下述二元函数的最大值: Max f(x1,x2)= x12+ x22 S,t, x1∈{1,2,3,4,5,6,7} x2∈{1,2,3,4,5,6,7} (1) 个体编码 遗传算法的运算对象是表示个体的符号串,所以必须把变量 x1, x2 编码为一种符号串。本题中,用无符号二进制整数来表示。因 x1, x2 为 0 ~ 7之间的整数,所以分别用3位无符号二进制整数来表示,将它们连接在一起所组成的6位无符号二进制数就形成了个体的基因型,表示一个可行解。例如,基因型 X=101110 所对应的表现型是:x=[5,6]。个体的表现型x和基因型X之间可通过编码和解码程序相互转换。 (2) 初始群体的产生 群体规模的大小取为4,即群体由4个个体组成,每个个体可通过随机方法产生。 如:011101,101011,011100,111001 (3) 适应度汁算 目标函数总取非负值,并且是以求函数最大值为优化目标,故可直接用目标函数值作为个体的适应度。 (4) 选择运算 我们采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。其具体操作过程是: 1.先计算出群体中所有个体的适应度的总和 fi ( i=1.2,…,M ); 2.fi其次计算出每个个体的相对适应度的大小 fi / ,它即为每个个体被遗传到下一代群体中的概率, 3.每个概率值组成一个区域,全部概率值之和为1; 4.最后再产生一个0到1之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体被选中的次数。

遗传算法的基本原理

遗传算法的基本原理 LG GROUP system office room 【LGA16H-LGYY-LGUA8Q8-LGA162】

第二章 遗传算法的基本原理 遗传算法的基本描述 2.1.1 全局优化问题 全局优化问题的定义:给定非空集合S 作为搜索空间,f :S —>R 为目标函数,全局优化问题作为任务)(max x f S x ∈给出,即在搜索空间中找到至少一个使目标函数最大化的点。 全局最大值(点)的定义:函数值+∞<=)(**x f f 称为一个全局最大值,当且仅当)()(*x f x f S x ≤?∈?成立时,S x ∈*被称为一个全局最大值点(全局最大解)。 局部极大值与局部极大值点(解)的定义: 假设在S 上给定了某个距离度量ρ,如果对S x ∈',0>?ε,使得对S x ∈?, )()(),(''x f x f x x ≤?<ερ,则称x ’为一个局部极大值点,f (x ’)为一个局部极大值。当目标函数有多个局部极大点时,被称为多峰或多模态函数(multi-modality function )。 主要考虑两类搜索空间: 伪布尔优化问题:当S 为离散空间B L ={0,1}L ,即所有长度为L 且取值为0或1的二进制位串的集合时,相应的优化问题在进化计算领域称为伪布尔优化问题。 连续参数优化问题:当取S 伪n 维实数空间R n 中的有界集合],[1i i n i b a S =∏=,其中i i b a <,i = 1, 2, … , n 时,相应的具有连续变量的优化问题称为连续参数优化问题。 对S 为B L ={0,1}L ,常采用的度量时海明距离,当],[1i i n i b a S =∏=时,常采用的度量就是欧氏距离。 2.1.2 遗传算法的基本流程 遗传算法的基本步骤如下: 1)选择编码策略,把参数集合X 和域转换为位串结构空间S ; 2)定义适应度函数f(X); 3)确定遗传策略,包括群体规模,选择、交叉、变异算子及其概率。 4)生成初始种群P ; 5)计算群体中各个体的适应度值; 6)按照遗传策略,将遗传算子作用于种群,产生下一代种群; 7)迭代终止判定。 遗传算法涉及六大要素:参数编码,初始群体的设定,适应度函数的设计,遗传操作的设计,控制参数的设定,迭代终止条件。 2.1.3 遗传编码 由于GA 计算过程的鲁棒性,它对编码的要求并不苛刻。原则上任何形式的编码都可以,只要存在合适的对其进行操作的遗传算子,使得它满足模式定理和积木块假设。 由于编码形式决定了交叉算子的操作方式,编码问题往往称作编码-交叉问题。 对于给定的优化问题,由GA 个体的表现型集合做组成的空间称为问题(参数)空间,由GA 基因型个体所组成的空间称为GA 编码空间。遗传算子在GA 编码空间中对位串个体进行操作。

遗传算法的原理及MATLAB程序实现

1 遗传算法的原理 1.1 遗传算法的基本思想 遗传算法(genetic algorithms,GA)是一种基于自然选择和基因遗传学原理,借鉴了生物进化优胜劣汰的自然选择机理和生物界繁衍进化的基因重组、突变的遗传机制的全局自适应概率搜索算法。 遗传算法是从一组随机产生的初始解(种群)开始,这个种群由经过基因编码的一定数量的个体组成,每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,其内部表现(即基因型)是某种基因组合,它决定了个体的外部表现。因此,从一开始就需要实现从表现型到基因型的映射,即编码工作。初始种群产生后,按照优胜劣汰的原理,逐代演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样,后代种群比前代更加适应环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。 计算开始时,将实际问题的变量进行编码形成染色体,随机产生一定数目的个体,即种群,并计算每个个体的适应度值,然后通过终止条件判断该初始解是否是最优解,若是则停止计算输出结果,若不是则通过遗传算子操作产生新的一代种群,回到计算群体中每个个体的适应度值的部分,然后转到终止条件判断。这一过程循环执行,直到满足优化准则,最终产生问题的最优解。图1-1给出了遗传算法的基本过程。 1.2 遗传算法的特点 1.2.1 遗传算法的优点 遗传算法具有十分强的鲁棒性,比起传统优化方法,遗传算法有如下优点: 1. 遗传算法以控制变量的编码作为运算对象。传统的优化算法往往直接利用控制变量的实际值的本身来进行优化运算,但遗传算法不是直接以控制变量的值,而是以控制变量的特定形式的编码为运算对象。这种对控制变量的编码处理方式,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地处理各种变量和应用遗传操作算子。 2. 遗传算法具有内在的本质并行性。它的并行性表现在两个方面,一是遗传

遗传算法基本原理111

第二章遗传算法的基本原理 2.1 遗传算法的基本描述 2.1.1 全局优化问题 全局优化问题的定义:给定非空集合S作为搜索空间,f:S—>R为目标函数,全局优化问题作为任务给出,即在搜索空间中找到至少一个使目标函数最大化的点。 全局最大值(点)的定义:函数值称为一个全局最大值,当且仅当成立时,被称为一个全局最大值点(全局最 大解)。 局部极大值与局部极大值点(解)的定义: 假设在S上给定了某个距离度量,如果对,,使得对, ,则称x’为一个局部极大值点,f(x’)为一个局部极大 值。当目标函数有多个局部极大点时,被称为多峰或多模态函数(multi-modality function)。 主要考虑两类搜索空间: 伪布尔优化问题:当S为离散空间B L={0,1}L,即所有长度为L且取值为0或1的二进制位串的集合时,相应的优化问题在进化计算领域称为伪布尔优化问题。 连续参数优化问题:当取S伪n维实数空间R n中的有界集合,其中,i = 1, 2, … , n时,相应的具有连续变量的优化问题称为连续参数优化问题。 对S为B L={0,1}L,常采用的度量时海明距离,当时,常采用的度量就是欧氏距离。 2.1.2 遗传算法的基本流程

遗传算法的基本步骤如下: 1)选择编码策略,把参数集合X和域转换为位串结构空间S; 2)定义适应度函数f(X); 3)确定遗传策略,包括群体规模,选择、交叉、变异算子及其概率。 4)生成初始种群P; 5)计算群体中各个体的适应度值; 6)按照遗传策略,将遗传算子作用于种群,产生下一代种群; 7)迭代终止判定。 遗传算法涉及六大要素:参数编码,初始群体的设定,适应度函数的设计,遗传操作的设计,控制参数的设定,迭代终止条件。 2.1.3 遗传编码 由于GA计算过程的鲁棒性,它对编码的要求并不苛刻。原则上任何形式的编码都可以,只要存在合适的对其进行操作的遗传算子,使得它满足模式定理和积木块假设。 由于编码形式决定了交叉算子的操作方式,编码问题往往称作编码-交叉问题。 对于给定的优化问题,由GA个体的表现型集合做组成的空间称为问题(参数)空间,由GA基因型个体所组成的空间称为GA编码空间。遗传算子在GA

遗传算法的特点及其应用

遗传算法的特点及其应用 上海复旦大学附属中学张宁 目录 【关键词】 【摘要】 【正文】 §1遗传算法的基本概念 §2简单的遗传算法 1.选择 2.交换 3.变异 §3简单的遗传算法运算示例 1.计算机公司的经营策略优化问题 2.函数优化问题 §4遗传算法应用举例 1.子集和问题 2.TSP(旅行商)问题 §5结束语 【附录】 1.子集和问题源程序 2.TSP(旅行商)问题源程序 【参考文献】

【关键词】 遗传算法遗传变异染色体基因群体 【摘要】 遗传算法是基于达尔文进化论,在计算机上模拟生命进化机制而发展起来的一门新学科。它根据适者生存,优胜劣汰等自然进化规则来进行搜索计算和问题求解。 文章的第一部分介绍了遗传算法的基本概念。第二部分介绍了遗传算法的原理以及三种运算:选择、交换、变异。第三部分着重介绍三种运算的具体实现,以及简单实例,主要体现遗传算法的实现过程。第四部分介绍了两个具体问题,都是属于NP-完全问题,如何用遗传算法来解决,以及实现时的一些基本问题。 文章在介绍遗传算法的原理以及各种运算的同时,还分析了一些应用中出现的基本问题,对于我们的解题实践有一定的指导意义。 【正文】 遗传算法作为一门新兴学科,在信息学竞赛中还未普及,但由于遗传算法对许多用传统数学难以解决或明显失效的复杂问题,特别是优化问题,提供了一个行之有效的新途径,且能够较好地解决信息学竞赛中的NP难题,因此值得我们进行深入的讨论。 要掌握遗传算法的应用技巧,就要了解它的各方面的特点。首先,让我们来了解一下什么是遗传算法。 §1遗传算法的基本概念 遗传算法(Genetic Algorithms,简称GA)是人工智能的重要新分支,是基于达尔文进化论,在计算机上模拟生命进化机制而发展起来的一门新学科。它

遗传算法的基本原理

遗传算法的基本原理 遗传算法类似于自然进化,通过作用于染色体上的基因寻找好的染色体来求解问题。与自然界相似,遗传算法对求解问题的本身一无所知,它所需要的仅是对算法所产生的每个染色体进行评价,并基于适应值来选择染色体,使适应性好的染色体有更多的繁殖机会。在遗传算法中,通过随机方式产生若干个所求解问题的数字编码,即染色体,形成初始群体;通过适应度函数给每个个体一个数值评价,淘汰低适应度的个体,选择高适应度的个体参加遗传操作,经过遗传操作后的个体集合形成下一代新的种群。对这个新种群进行下一轮进化。这就是遗传算法的基本原理。 下面就是遗传算法思想: (1) 初始化群体; (2) 计算群体上每个个体的适应度值; (3) 按由个体适应度值所决定的某个规则选择将进入下一代的个体; (4) 按概率PX进行交叉操作; (5) 按概率PM进行突变操作; (6) 没有满足某种停止条件,则转第(2)步,否则进入(7)。 (7) 输出种群中适应度值最优的染色体作为问题的满意解或最优解。 程序的停止条件最简单的有如下二种:完成了预先给定的进化代数则停止;种群中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。 根据遗传算法思想可以画出如右图所示的简单遗传算法框图: 图 3.22 简单遗传算法框图 遗传算法的选择算子 选择即从当前群体中选择适应值高的个体以生成交配池的过程. 遗传算法中最常用的选择方式是轮盘赌(Roulette Wheel)选择方式, 也称比例选择或复制. 在该方法中, 各个个体被选择的概率和其适应度值成比例. 设群体规模大小为N, 个体i 的适应度值为Fi , 则这个个体

(完整版)遗传算法的基本原理

遗传算法的基本原理和方法 一、编码 编码:把一个问题的可行解从其解空间转换到遗传算法的搜索空间的转换方法。 解码(译码):遗传算法解空间向问题空间的转换。 二进制编码的缺点是汉明悬崖(Hamming Cliff),就是在某些相邻整数的二进制代码之间有很大的汉明距离,使得遗传算法的交叉和突变都难以跨越。 格雷码(Gray Code):在相邻整数之间汉明距离都为1。 (较好)有意义的积木块编码规则:所定编码应当易于生成与所求问题相关的短距和低阶的积木块;最小字符集编码规则,所定编码应采用最小字符集以使问题得到自然的表示或描述。 二进制编码比十进制编码搜索能力强,但不能保持群体稳定性。 动态参数编码(Dynamic Paremeter Coding):为了得到很高的精度,让遗传算法从很粗糙的精度开始收敛,当遗传算法找到一个区域后,就将搜索现在在这个区域,重新编码,重新启动,重复这一过程,直到达到要求的精度为止。 编码方法:

1、二进制编码方法 缺点:存在着连续函数离散化时的映射误差。不能直接反映出所求问题的本身结构特征,不便于开发针对问题的专门知识的遗传运算算子,很难满足积木块编码原则 2、格雷码编码:连续的两个整数所对应的编码之间仅仅只有一个码位是不同的,其余码位都相同。 3、浮点数编码方法:个体的每个基因值用某一范围内的某个浮点数来表示,个体的编码长度等于其决策变量的位数。 4、各参数级联编码:对含有多个变量的个体进行编码的方法。通常将各个参数分别以某种编码方法进行编码,然后再将他们的编码按照一定顺序连接在一起就组成了表示全部参数的个体编码。 5、多参数交叉编码:将各个参数中起主要作用的码位集中在一起,这样它们就不易于被遗传算子破坏掉。评估编码的三个规范:完备性、健全性、非冗余性。 二、选择 遗传算法中的选择操作就是用来确定如何从父代群体中按某种方法选取那些个体遗传到下一代群体中的一种遗传运算,用来确定重组或交叉个体,以及被选个体将产生多少个子代个体。 常用的选择算子: 1、轮盘赌选择(Roulette Wheel Selection):是一种回放式随机采样方法。每个个体进入下一代的概率等于它的适应度值与整个种群中个体适应度值和的比例。选择误差较大。

遗传算法搜索最优解

实验一:基于遗传算法的函数优化 1、实验目的 1) 掌握Matlab子函数的编写与调用。 2) 理解基本遗传算法的原理,并利用程序实现利用遗传算法优化非线性函数的解。 2、实验内容与实验要求 1) 掌握基本遗传算法方法原理。 2) 掌握matlab子函数的编写方法及调用方法。 3) 根据基本遗传算法方法原理,编写Matlab程序,优化非线性函数的解。 4) 设f(x) = -x^2 - 4x + 1,求max f(x), x [-2, 2],解的精度保留二位小数 3、遗传算法原理 遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。

4、主程序及子函数: 主函数: clear clc my_scale=80; %种群规模 gen_len=22; %基因长度 M=100; %迭代次数 pc=0.7; %交叉概率 pm=0.05; %变异概率 new_scale=produscale(my_scale,gen_len); %产生初始种群 fitfit=[]; fittimer=[]; best_f1=[]; best_x1=[]; for i=1:M my_f=cal_my_f(new_scale); %计算函数值 my_fit=cal_my_fit(my_f); %计算适应度值 next_scale=my_sellect(new_scale,my_fit); %采用赌轮盘法选择 cross_scale=my_cross(next_scale,pc); %按概率交叉 mut_scale=my_mutat(cross_scale,pm); %按概率变异 %寻找每一代中的最优适应度值所对应的个体 best_fit=my_fit(1); [sx,sy]=size(new_scale); for j=2:length(my_fit) if best_fit