遗传算法与模拟退火算法比较
遗传算法与模拟退火算法的比较研究

遗传算法与模拟退火算法的比较研究引言:遗传算法和模拟退火算法是两种常见的优化算法,它们在不同的问题领域有着广泛的应用。
本文将对这两种算法进行比较研究,探讨它们的优缺点及适用场景。
一、遗传算法1.1 定义与基本原理遗传算法是一种受自然界进化过程启发的优化算法,通过模拟生物遗传和进化的过程来搜索最优解。
其基本原理包括选择、交叉和变异三个操作。
1.2 优点1) 可以适应多维、多目标、多约束的优化问题;2) 具有全局搜索能力,不易陷入局部最优解;3) 可以通过设置适应度函数对问题进行建模和求解。
二、模拟退火算法2.1 定义与基本原理模拟退火算法是一种随机化搜索算法,模拟了金属退火过程中的原子热运动。
通过在状态空间中随机游走,以一定的概率接受劣解,逐渐降低温度,最终收敛到最优解。
2.2 优点1) 具有较强的全局搜索能力,可以跳出局部最优解;2) 对问题的解空间没有特殊要求,适用范围广;3) 可以通过控制温度参数来平衡全局搜索和局部搜索。
三、比较研究3.1 算法复杂度遗传算法的时间复杂度主要取决于种群规模、迭代次数和个体适应度计算的复杂度。
模拟退火算法的时间复杂度则与迭代次数和单次迭代的计算复杂度有关。
一般情况下,遗传算法的计算复杂度相对较高,而模拟退火算法则相对较低。
3.2 收敛性能遗传算法通过进化的过程逐渐趋于最优解,但其收敛速度相对较慢。
模拟退火算法在初始温度高时有较大的搜索幅度,随着温度的降低,搜索过程逐渐收敛到最优解。
因此,模拟退火算法的收敛速度一般较快。
3.3 精确性遗传算法可以在一定程度上保证找到近似最优解,但在某些复杂问题中可能无法找到全局最优解。
模拟退火算法具有较好的全局搜索能力,但对于精确求解有一定的局限性。
3.4 参数设置遗传算法的效果极大程度上依赖于参数的设置,如交叉概率、变异概率等。
模拟退火算法的参数设置相对简单,主要包括初始温度和退火参数等。
四、适用场景4.1 遗传算法的适用场景1) 多目标优化问题,如组合优化、旅行商问题等;2) 需要全局搜索的问题,如参数优化、函数逼近等;3) 对问题求解的过程进行建模的问题。
遗传算法与模拟退火算法比较

一、遗传算法与模拟退火算法比较分析模拟退火算法的基本原理可以看出,模拟退火算法是通过温度的不断下降渐进产生出最优解的过程,是一个列马尔科夫链序列,在一定温度下不断重复Metropolis H程,目标函数值满足Boltzmann概率分布。
在温度下降足够慢的条件下,Boltzmann分布收敛于全局最小状态的均匀分布,从而保证模拟退火算法以概率为1收敛到全局最优。
另外,不难看出,模拟退火算法还存在计算结构简单、通用性好以及鲁棒性强等优点。
但是,模拟退火算法存在如下缺陷:1.尽管温度参数下降缓慢时理论上可以保证算法以概率为1地收敛到最优值,但是需要的时间过长加之误差积累与时间长度的限制,难以保证计算结果为最优;2.如果降温过程加快,很可能得不到全局最优解,因此,温度的控制是一个需要解决的问题;3.在每一种温度下什么时候系统达到平衡状态,即需要多少次Metropolis 程不易把握,从而影响模拟退火算法的最终结果。
与模拟退火算法相比较,遗传算法具有如下典型特征:这两种算法的相同点是都采用进化控制优化的过程。
主要不同点是模拟退火是采用单个个体进行进化,遗传算法是采用种群进行进化。
模拟退火一般新解优于当前解才接受新解,并且还需要通过温度参数进行选择,并通过变异操作产生新个体。
而遗传算法新解是通过选择操作进行选择个体,并通过交叉和变异产生新个体。
具体说来,遗传算法具有如下特点:(1)与自然界相似,遗传算法对求解问题的本身一无所知, 对搜索空间没有任何要求(如函数可导、光滑性、连通性等),只以决策编码变量作为运算对象并对算法所产生的染色体进行评价,可用于求解无数值概念或很难有数值概念的优化问题,应用范围广泛;(2)搜索过程不直接作用到变量上,直接对参数集进行编码操作,操作对象可以是集合、序列、矩阵、树、图、链和表等;(3)搜索过程是一组解迭代到另一组解,采用同时处理群体屮多个个体的方法,因此,算法具有并行特性;(4)遗传算法利用概率转移规则,可以在一个具有不确定性的空间寻优,与一般的随机性优化方法相比,它不是从一点出发按照一条固定路线寻优,而是在整个可行解空间同时搜索,可以有效避免陷入局部极值点,具有全局最优特性;(5)遗传算法有很强的容错能力.由于遗传算法初始解是一个种群,通过选择、交叉、变异等操作能够迅速排除与最优解相差较大的劣解.与模拟退火算法相比,遗传算法存在局部搜索能力差、容易陷入过早收敛等缺陷,因此,人们将模拟退火算法与遗传算法相结合得到的混合算法可以避免两种算法的缺陷,有利于丰富优化过程的搜索行为,增强全局和局部意义下的搜索能力和效率。
遗传算法与模拟退火算法的优劣对比研究

遗传算法与模拟退火算法的优劣对比研究引言:在现代科学技术的发展中,算法在问题求解和优化过程中扮演着重要的角色。
遗传算法和模拟退火算法作为两种常见的优化算法,具有广泛的应用领域。
本文将对遗传算法和模拟退火算法的优劣进行对比研究,并探讨其在不同问题领域中的适用性。
一、遗传算法的优势1. 广泛适用性遗传算法适用于多种问题的求解,例如优化问题、组合问题、约束问题等。
其基于生物进化的思想,通过模拟自然选择、交叉和变异等过程,能够对复杂问题进行全局搜索和优化。
2. 并行性强遗传算法的并行性使得其在大规模问题求解中具有优势。
通过同时处理多个个体的基因信息,可以加快算法的收敛速度,并提高求解效率。
3. 具有自适应性遗传算法通过不断的进化和自适应调整,能够根据问题的特性和需求进行优化。
通过选择合适的遗传操作和参数设置,可以提高算法的性能和收敛速度。
二、模拟退火算法的优势1. 局部搜索能力强模拟退火算法通过接受概率较低的劣解,能够跳出局部最优解,从而实现全局搜索。
这使得模拟退火算法在求解复杂问题时具有优势,能够找到更优的解。
2. 算法参数易于调整模拟退火算法的参数设置相对简单,调整起来相对容易。
通过调整初始温度、退火速度等参数,可以灵活地控制算法的搜索范围和收敛速度。
3. 适用于连续优化问题模拟退火算法在连续优化问题中表现出色。
通过随机扰动和接受概率的调整,能够在连续空间中进行搜索,找到最优解。
三、遗传算法与模拟退火算法的对比1. 算法思想差异遗传算法基于生物进化的思想,通过模拟自然选择和遗传操作,寻找最优解。
而模拟退火算法则通过模拟固体退火过程,跳出局部最优解,实现全局搜索。
2. 搜索策略不同遗传算法通过种群的进化和遗传操作,同时搜索多个个体的解空间。
而模拟退火算法则通过接受劣解的策略,有选择地搜索解空间。
3. 参数设置不同遗传算法的参数设置相对较复杂,需要调整交叉概率、变异概率等参数。
而模拟退火算法的参数设置相对简单,主要包括初始温度、退火速度等。
模拟退火算法和遗传算法

模拟退⽕算法和遗传算法爬⼭算法在介绍这两种算法前,先介绍⼀下爬⼭算法。
爬⼭算法是⼀种简单的贪⼼搜索算法,该算法每次从当前解的临近解空间中选择⼀个最优解作为当前解,直到达到⼀个局部最优解。
爬⼭算法实现很简单,其主要缺点是会陷⼊局部最优解,⽽不⼀定能搜索到全局最优解。
如图1所⽰:假设C点为当前解,爬⼭算法搜索到A点这个局部最优解就会停⽌搜索,因为在A点⽆论向那个⽅向⼩幅度移动都不能得到更优的解。
模拟退⽕算法(SA)为了解决局部最优解问题, 1983年,Kirkpatrick等提出了模拟退⽕算法(SA)能有效的解决局部最优解问题。
模拟退⽕其实也是⼀种贪⼼算法,但是它的搜索过程引⼊了随机因素。
模拟退⽕算法以⼀定的概率来接受⼀个⽐当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。
算法介绍我们知道在分⼦和原⼦的世界中,能量越⼤,意味着分⼦和原⼦越不稳定,当能量越低时,原⼦越稳定。
“退⽕”是物理学术语,指对物体加温在冷却的过程。
模拟退⽕算法来源于晶体冷却的过程,如果固体不处于最低能量状态,给固体加热再冷却,随着温度缓慢下降,固体中的原⼦按照⼀定形状排列,形成⾼密度、低能量的有规则晶体,对应于算法中的全局最优解。
⽽如果温度下降过快,可能导致原⼦缺少⾜够的时间排列成晶体的结构,结果产⽣了具有较⾼能量的⾮晶体,这就是局部最优解。
因此就可以根据退⽕的过程,给其在增加⼀点能量,然后在冷却,如果增加能量,跳出了局部最优解,这本次退⽕就是成功的。
算法原理模拟退⽕算法包含两个部分即Metropolis算法和退⽕过程。
Metropolis算法就是如何在局部最优解的情况下让其跳出来,是退⽕的基础。
1953年Metropolis提出重要性采样⽅法,即以概率来接受新状态,⽽不是使⽤完全确定的规则,称为Metropolis准则。
状态转换规则温度很低时,材料以很⼤概率进⼊最⼩能量状态模拟退⽕寻优⽅法注意事项理论上,降温过程要⾜够缓慢,使得在每⼀温度下达到热平衡。
人工智能:爬山法、模拟退火法和遗传算法简介

• 局部搜索算法的优点 (1)通常只用很少的内存 (2)在系统化探索算法不适用的很大或无限的状态空间中找到合理的解
(遗传算法)
1. 爬山法
• 只考虑直接后继结点 • 返回结点,没有记录路径 • 用最佳(最大或最小)邻居结点替代
1. 爬山法
2. 模拟退火算法
• 目的:跳出局部最优 • 背景:思想借鉴于固体的退火原理 • 原理:模拟退火算法以一定的概率来接受一个比当前解要差的解(类
局部搜索算法与最优化问题 ——爬山法、模拟退火法和遗传算法
局部搜索算法和最优化问题的背景
系统探索空间 记录路径
前面的搜索算法备注:In many optimization problems, path is irrelevant; the goal state itself is the solution
似于Pagerank算法),因此有可能会跳出这个局部的最优解,达到全局 的最优解。 • 类比:一个锅底凹凸不平有很多坑的大锅,晃动这个锅使得一个小球 使其达到全局最低点。一开始晃得比较厉害,小球的变化也就比较大, 在趋于全局最低的时候慢慢减小晃锅的幅度,直到最后不晃锅,小球 达到全局最低。
3. 遗传算法(Genetic Algorithm )
• 类比:达尔文自然选择
• 核心思想: (1)完全继承原来的,难以获得更加优秀的结果; (2)随机搜素、组合,自己全部重新来过,成功几率太小
继承前人好的部分,并加以改变、优化(联想:面向对象)
8皇后问题过程示意图
BRDF的遗传算法和遗传模拟退火算法建模及比较

GA n AA r s d t i b s a i u i a g e d t fe p rme t t h i ie to a e l c a c i t i u i n a d GS a e u e o ft it tcm l i n l a a o x e i n o t e b d r c in l fe t n e d s rb t t r o f n to ( u c i n BRDF) s a itc l o e .Th a a e e s o h d la d t e 2 a d 3 BRDF a e o t i e . Th t ts i a d 1 m e p r m t r ft e mo e n h D n D r b an d e
a n a i g ag rt m s n e l lo i n h
0 引 言
双 向 反 射 分 布 函 数 ( ii ci a rf ca c i r u bdr t n l el tn eds i — e o e tb
d f e e c s a d c u a i n e we n GA n if r n e n a s to s b t e a d GSAA n t e ie a i e n m b r , t e i h t r tv u e s i ,p e i i n,d t itn n m r cs o a a fti g a d p r m e e s a e c mp r d a d a a y e .GA n AA e d f rBRDF t ts i m o e i g a a tr r o a e n n lz d a d GS h l o sa it d l . c n Ke wo d :b d r c i n lr fe t n e d s r b to u c i n;mo e i g y rs i ie to a e l c a c it i u i n f n t o d l ;g n tc a g rt m s e e i sm u a e n e e i l o i h ;g n tc i l t d
模拟退火算法与遗传算法

模拟退火算法与遗传算法
模拟退火算法(Simulated Annealing,SA)和遗传算法(Genetic Algorithms,GA)是两种常用的优化算法,分别简要介绍如下:
1. 模拟退火算法(Simulated Annealing,SA):模拟退火是一种基于物理退火原理的优化算法。
该算法在搜索过程中,根据某一概率接受一个比当前解要差的解,因此有可能会跳出局部最优解,达到全局最优解。
它的优点是能够在全局范围内搜索到最优解,具有较好的鲁棒性,适用于多峰值、非线性、离散、连续等问题的优化。
在求解组合优化问题和离散优化问题上模拟退火表现良好。
2. 遗传算法(Genetic Algorithms,GA):遗传算法是一种基于自然选择和遗传学原理的优化算法。
它通过模拟生物进化过程中的自然选择和遗传机制,如选择、交叉、变异等操作,在解空间内搜索最优解。
遗传算法具有较好的全局搜索能力,能够处理复杂的、非线性的、离散的优化问题。
在求解连续函数优化问题和组合优化问题上表现良好。
总之,模拟退火算法和遗传算法都是非常有效的优化算法,各有其适用范围和优点。
在实际应用中,可以根据问题的类型和特点选择合适的算法进行优化求解。
模拟退火算法和遗传算法的比较与思考

模拟退火算法和遗传算法的比较与思考作者:解晨韦雄奕来源:《电脑知识与技术》2013年第19期摘要:在目前的计算机学科中,有一大类问题至今还没有快速合理的解决算法,并且其中有很多问题都是在实际应用中所碰到的优化问题。
虽然目前没有能精确解决这些问题的最优算法,但是在实际应用中,人们还是找到了许多能产生近似最优解的有效算法,模拟退火算法和遗传算法便是这一类算法中的经典算法。
该文浅析了此两种算法的原理,并通过一个简单的例子对这两种算法进行了比较和总结。
关键词:组合优化;模拟退火算法;遗传算法中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)19-4418-02组合优化问题是当今世界中非常重要的一类问题,在这类问题中,有一部分问题在如今的计算机性能条件下进行求解往往需要耗费巨大的时间和储存空间,以至于根本无法进行求解,并且其中有很多问题是在人们的生活中产生的实际组合优化应用问题,若能很好地解决这类问题,人们的工作和生活方式便能变的更有效率。
模拟退火算法和遗传算法是人们多年来所找到的两种比较有效的算法,这两个算法虽不能得出优化问题的精确最优解,但是可以给出近似的最优解。
下面,就让我们来看看这两个算法的原理,并根据一个简单的应用来分析和比较这两个算法。
1 模拟退火算法原理模拟退火算法是根据自然界中的固体退火原理而推出的算法。
在自然界中,对于一个固体,将其加热使其温度至充分高,其内部粒子便随温度升变为无序状,此时内能增大,然后再让其徐徐冷却,此时其粒子逐渐趋向为有序状态,在每个温度都达到平衡态,最后,在常温时达到基态,固体的内能减为最小。
根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。
模拟退火算法便是模拟上述的物理退火过程。
在模拟退火算法中,用上述退火原理中的内能E来模拟目标函数值f,温度T为控制参数t,由t和一个初始解开始,对当前的解不断重复产生新解、计算目标函数差、接受或舍弃新解的迭代步骤,同时每一步迭代逐步衰减t值,最终当温度降低,算法终止于特定的温度,便得到近似最优解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、遗传算法与模拟退火算法比较分析模拟退火算法的基本原理可以看出,模拟退火算法是通过温度的不断下降渐进产生出最优解的过程,是一个列马尔科夫链序列,在一定温度下不断重复Metropolis过程,目标函数值满足Boltzmann概率分布。
在温度下降足够慢的条件下,Boltzmann分布收敛于全局最小状态的均匀分布,从而保证模拟退火算法以概率为1收敛到全局最优。
另外,不难看出,模拟退火算法还存在计算结构简单、通用性好以及鲁棒性强等优点。
但是,模拟退火算法存在如下缺陷:1. 尽管温度参数下降缓慢时理论上可以保证算法以概率为1地收敛到最优值,但是需要的时间过长加之误差积累与时间长度的限制,难以保证计算结果为最优;2.如果降温过程加快,很可能得不到全局最优解,因此,温度的控制是一个需要解决的问题;3.在每一种温度下什么时候系统达到平衡状态,即需要多少次Metropolis过程不易把握,从而影响模拟退火算法的最终结果。
与模拟退火算法相比较,遗传算法具有如下典型特征:这两种算法的相同点是都采用进化控制优化的过程。
主要不同点是模拟退火是采用单个个体进行进化,遗传算法是采用种群进行进化。
模拟退火一般新解优于当前解才接受新解,并且还需要通过温度参数进行选择,并通过变异操作产生新个体。
而遗传算法新解是通过选择操作进行选择个体,并通过交叉和变异产生新个体。
具体说来,遗传算法具有如下特点:(1)与自然界相似,遗传算法对求解问题的本身一无所知,对搜索空间没有任何要求(如函数可导、光滑性、连通性等),只以决策编码变量作为运算对象并对算法所产生的染色体进行评价,可用于求解无数值概念或很难有数值概念的优化问题,应用范围广泛;(2)搜索过程不直接作用到变量上,直接对参数集进行编码操作,操作对象可以是集合、序列、矩阵、树、图、链和表等;(3)搜索过程是一组解迭代到另一组解,采用同时处理群体中多个个体的方法,因此,算法具有并行特性;(4)遗传算法利用概率转移规则,可以在一个具有不确定性的空间寻优,与一般的随机性优化方法相比,它不是从一点出发按照一条固定路线寻优,而是在整个可行解空间同时搜索,可以有效避免陷入局部极值点,具有全局最优特性;(5)遗传算法有很强的容错能力.由于遗传算法初始解是一个种群,通过选择、交叉、变异等操作能够迅速排除与最优解相差较大的劣解.与模拟退火算法相比,遗传算法存在局部搜索能力差、容易陷入过早收敛等缺陷,因此,人们将模拟退火算法与遗传算法相结合得到的混合算法可以避免两种算法的缺陷,有利于丰富优化过程的搜索行为,增强全局和局部意义下的搜索能力和效率。
二、混合遗传算法举例遗传算法的不足:如求解精度不尽如意、难以控制、局部搜索能力较差,随之而来的问题就是算法的稳定性较差、算法的收敛速度较慢.这些不足都妨碍了它的进一步推广.因此,如何提高算法的精度、稳定性以及算法摆脱局部最优的能力,成了当前遗传算法研究的难点与热点.另一方面,在一些实际应用中,存在许多含有针对该问题的有效知识型启发式算法,这些算法可以克服遗传算法局部搜索能力弱的缺陷,通常具有局部搜索能力强、计算效率较高的优点(例如,神经网络算法、模拟退火算法、共轭梯度法等),因此,在遗传算法的搜索过程中融入这些专门领域知识或高效局部算法的思想,构成一种混合遗传算法(hybrid genetic algorithm, 简记为Hybrid GA),从而达到提高遗传算法效率和算法质量的一种行之有效的手段.混合遗传算法的主要特点体现在下面两个方面:(1)在遗传算法的执行步骤中增加局部搜索过程.基于种群X t中各个个体的表现形态,进行局部搜索,从而接受为新一代()个体的是()X t中个体所对应在当前环境下的局部最优解.(2)在遗传算法的设计(如编、解码过程、交叉与变异操作)中融入与问题相关的启发式信息.下面通过两个个例子说明混合遗传算法的应用.首先考虑添加局部搜索的混合遗传算法.例1(函数优化问题的混合遗传算法)考虑下列多元函数优化问题min ()X Ef X ∈ 其中1212(,,,),,T n n i X x x x E E E E E ==⨯⨯⨯为某个定义区间,()f X 为多元函数.求解例1 的混合遗传算法与传统遗传算法相比较,其特点是在每一代找到最优个体后并不立即进行下一代操作,而是以当代最优个体为中心的一个固定区域(如半径为ε的圆)进行局部搜索.以便找到更好的个体.算法描述( ε混合遗传算法)第一步:初始化种群;第二步:计算种群中个体适应值,选择最优个体;第三步:以种群中适应值最大的个体为中心,在ε为半径的圆内进行最优寻优(可以采用神经网络或梯度类算法),进入循环过程,直到满足循环停止条件;第四步:将当代最优个体用局部寻优得到的最优值代替; 第五步:种群内部进行选择、交叉、变异;第六步:转入第二步继续算法,直到满足进化条件.利用上面描述的ε混合遗传算法,下面具几个具体案例. 例2 分别用下面的两个测试函数验证ε混合遗传算法的性能.案例1 性能测试函数F222211()[100()(1)][ 5.12,5.12]n i i i i i f X x x x x +==⨯-+-∈-∑ F2 函数是一个单峰函数,极小值点为[1,1,,1]T ,最小值为0,极小值点的位置既不位于定义域 的中心,也不位于定义域边界,是一种有一定难度的优化问题.将标准遗传算法和ε混合遗传算法分别运行100次,其中混合遗传策略编码长度为10,局部搜索半径ε取值为1,标准遗传算法的编码长度为80,两种算法的种群规模和最大进化代数都为200,它们每次运行的最优值的折线图分别如图1与图2所示:图1 ε混合遗传算法搜索效果图图2 标准遗传算法搜索效果图从上面的图1与图2可以看出,混合遗传算法的最好的绝对误差可达到1310-,其中95%的求解精度达到1110-以上,只有5次的求解精度比1110-低,最差的结果为210-,而标准遗传算法的最好结果为510-,而且只出现三次,其一般的求解精度为310-,因此,求解精度以及算法稳定性等方面,混合遗传算法比标准遗传算法有显著提高.案例2 对大海捞针Nih 问题(Nedle-in-a-Haystack )进行对比实验,其中,大海捞针函数的表达式如下:222122(,)[()],,[ 5.12,5.12]()a f x y x y x y b x y -=++∈-++ 求函数的最小值.为简单计,取 3.0,0.05a b ==进行计算,1min (0,0)3600f =,四个局部极值点为( 5.12, 5.12)±±,局部极小值为12748.48. 分别对两种算法实验100次,最大进化代数均取为300,种群规模设定为400,标准遗传算法的编码长度为120,混合遗传算法的编码长度为20,试验结果如下表所示:表1 ε混合遗传算法与标准遗传算法求解效果对照表从表1的结果可以看出,ε混合遗传算法比标准遗传算法性能要好.对于大海捞针问题,ε混合遗传算法有60次准确找到了最优值13600,而标准遗传算法没有一次找到最优值,而从平均值的角度来看,标准遗传算法明显陷入局部最优的陷阱.综上所述,将局部搜索策略引入遗传算法可以大大提升算法的性能,性能的提升主要体现在两个方面:一是算法的精度大大得到提高;另一方面,算法的稳定性得到极大增强,因此,算法的可靠性随之得以提高.下面讨论的例子则通过在遗传算子的设计中溶入与问题相关的启发式信息从而建立一种混合遗传算法。
例3(背包问题(ZOKP ) 的混合遗传算法)求解ZOKP 的贪婪算法(Greedy algorithm )常采用下面的启发式策略:首先将物品按照价值密度,1,2,,i i i c v i n w ==从大到小进行排列,依次将物品装入背包,直到背包容量达到最大为止.采取该贪婪策略可以求得ZOKP 的近似较好解,但是有可能得不到最优解.采用标准遗传算法求解,当问题规模不大时,可以求出近似最优或最优解,但当问题规模变得较大时,由于标准遗传算法在较大的搜索空间中搜索能力较差,从而很难得到该质量的解,因此,为了提高标准遗传算法的搜索能力,将求解背包问题的贪婪算法溶入到遗传算法中,得到一种混合遗传算法,其思想描述为:(1)编码格式: 采用0-1字符串进行编码,一个字符串代表一种编码策略,例如,个体12{0,1}n n X a a a =∈与装包策略的关系为:0,1i a or =分别对应于将第i 件物品不装入(或者装入)袋中;(2)混合繁殖算子:对于选取的选择算子S,交叉算子C 和变异算子M,引进背包问题已有的贪婪算法以改进繁殖算子,具体做法是:首先引进贪婪变换:{0,1}{0,1}n n G →,对于任意的12n X x x x =,12()n G X y y y =,其中,1,2,,i y i n =由下列贪婪算法得到:贪婪算法:第一步(排序):对所有1i x =的物品,物品按照价值密度,1,2,,i i i c v i n w ==从大到小进行排列,形成队列()l i ;第二步(赋值):1. :1k =;2.计算()1kk l j j W w ==∑;3.如果k W W ≤,则将第()l i 号物品装入袋中,即()1l j y =,赋值1k k ←+并回到2. 否则转下一步4. ()0,1,,l j y j k n ==+该贪婪变换把任意一个个体变换成可行解,此时,我们把贪婪变换与所选定的交叉与变异算子分别作复合运算,从而形成新的混合交叉与混合遗传算子:,h h C G C M G M == (1)(3)适应度度量:121()(,,,)n n i ii J X f x x x c x ===∑按照上面描述的编码格式、混合的交叉与变异算子以及适应度度量,即可建立一种求解背包问题的混合遗传算法.例如,考虑由50件物品组成的背包问题,其中物品价值{}i c 、容积{}i w 和背包容量W 分别为{}{220,208,198,192,180,180,165,162,160,158,155,130,125,122,120,118,115,110,105,101,100,10098,96,95,90,88,82,80,77,75,73,72,70,69,66,65,63,60,58,56,50,30,20,15,10,8,5,3,1}{}{80,82,85,70,72,70,66,i i c w ==50,55,25,5055,40,48,50,32,22,60,30,32,40,3835,32,25,28,30,22,50,30,45,30,6050,20,65,20,25,30,10,20,25,15,1010,10,4,4,2,1}1000W = 分别采用贪婪算法、标准的遗传算法(含比例选择、单点交叉和点变异)和上述构造混合遗传算法进行求解,其中运行参数取为第一组:{,,,}{80,500,0.6,0.1}c mM T P P=;第二组:{,,,}{50,500,0.6,0.5}c mM T P P=其中,M T分别代表种群规模和终止进化代数,各算法独立运行1000次,然后对结果进行统计,其统计结果如表2所示,而最好结果如表3 所示.表2 求背包问题的贪婪算法、标准遗传算法与混合遗传算法的比较(100次实验)算法及参数结果超过贪婪算法的解的次数结果超过贪婪算法解时的进化代数最好求解结果(总价值/总重量)标准遗传算法{80,500,0.6,0.1}171323044/999混合遗传算法{80,500,0.6,0.1}990453094/999标准遗传算法{50,500,0.6,0.5}2062383077/999混合遗传算法{50,500,0.6,0.5}100353103/999贪婪算法3036/999表3标准遗传算法、混合遗传算法与贪婪算法求解50个物品背包问题的最好解比较算法个体X 求解结果(总价值/总重量)标准遗传算法1101101111101001101111111 10100000010100110000010003077/999混合遗传算法1101010111101101101101111 11101000010100110000010003103/999贪婪算法1111111101101001101100111 1010000001010010000003036/9990001从表2与表3不难看出,由于将求解背包问题的贪婪算法溶入遗传算法得涉及中,无论是解的质量还是在求解速度方面,混合遗传算法比标准遗传算法和贪婪算法都有显著改进.。