基于改进遗传退火算法的0-1背包问题设计与实现

                                                          

 

 

 

 

JISHOUUNIVERSITY

 

 

本科生毕业设计

 

 

题    目:

基于改进遗传退火算法的0-1背包问题设计与实现

作    者:

秦峰

学   号:

20144042001

所属学院:

         信息科学与工程学院

专业年级:

      计算机科学与技术,2014级

指导教师:

周凯卿

职  称:

讲师

完成时间:

2018年 05 月 04 日

 

 

吉首大学教务处制


   

  I

Abstract II

1 1

1.1课题研究的背景和目的 1

1.2背包问题研究现状 1

1.3本文的研究内容和设计结构 2

2章 0-1背包问题 3

2.10-1背包问题简介 3

2.20-1背包问题模型 3

2.3 本章小结 4

3章 遗传算法和退火算法 5

3.1 遗传算法简介 5

3.2 遗传算法基本思想 5

3.3 遗传算法基本步骤 6

3.4 遗传算法相关术语 7

3.5 应用传统的遗传算法求解0-1背包问题 9

3.6 退火算法简介 12

3.7 退火算法基本思想 12

3.8 退火算法基本步骤 12

3.9 本章小结 14

4改进的遗传退火算法 15

4.1 改进的遗传退火算法简介 15

4.2 改进的遗传退火算法基本思想 15

4.3 改进的遗传退火算法流程 17

4.4 本章小结 19

5应用改进的遗传退火算法求解0-1背包问题 20

5.1 改进的遗传退火算法求解0-1背包问题算法结构 20

5.2 改进的遗传退火算法求解0-1背包问题算法设计 21

5.3 应用改进的遗传退火算法解决0-1背包问题仿真实验 22

5.4 本章小结 25

  26

参考文献 27

 

 

 

 


基于改进遗传退火算法的0-1背包问题设计与实现

 

该算法结合了遗传算法和模拟退火算法的优点,并有效克服了各自的缺点,在性能优化,效率优化和可靠性方面具有显著的优势使用本算法求解不同种群规模的0-1背包问题,数值实验结果表明,算法具有较快的收敛速度,又能够收敛到最优解,优于遗传算法和模拟退火算法。

关键词:遗传算法;模拟退火;0-1背包问题

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Design and Implementation of 0-1 Knapsack Problem Based on Modified Genetic Algorithm and Stimulated Annealing

Abstract

This algorithm combines the advantages of genetic algorithm and simulated annealing algorithm, and effectively overcomes their shortcomings. It has significant advantages in performance optimization, efficiency optimization and reliability. This algorithm is used to solve 0-1 knapsack problem with different population sizes. Numerical experiments show that the algorithm not only has faster convergence speed, but also converges to the optimal solution, which is better than genetic algorithm and simulated annealing algorithm.

Key words: Genetic AlgorithmSimulated Annealing0-1 knapsack problem

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


1

1.1课题研究的背景和目的

针对传统的遗传算法在求解大规模0-1背包问题时存在的早熟收敛和收敛性能不稳定的特点,提出了一种新的混合优化算法,即MGASA。该算法将模拟退火的思想和遗传算法相结合,在算法的外层进行各个温度下的遗传算法操作,在算法内层进行各个子种群的搜索,使得算法的全局并行搜索能力和局部串行搜索能力都得到了增强,同时利用模拟退火算法中的Metropolis概率突跳抽样过程,对传统遗传算法中的变异操作以一定概率进行控制,避免出现早熟现象利用原有的数据和资源建立一个合理的知识库,依靠机器对知识库的学习能力对初始种群的建立进行指导,对迭代产生的种群进行分类,选择每类中平均适值最高的作为所有子种群交叉产生的新个体,加速种群进化,避免收敛速度过慢的情况;MGASA还引入了机器学习的记忆功能,将进行串行搜索过程中出现的最优解存入知识库,有效地避免模拟退火算法在串行搜索过程中最优解的丢失,提高种群的进化能力。

1.2背包问题研究现状

对于0-1背包问题来说,现阶段己有的求解算法可分为精确求解算法和近似求解算法两大类。

20世纪50年代中期,Dantzig[]首先利用贪婪算法求得了0-1背包问题的一个理想解,并得出了0-1背包问题最优解的上界,这是一项具有开创性的研究。在之后的20多年里,Dantzig求得的上界并未得到改进,对于0-1背包问题的研究也没有取得太大进展。直到1974年,HorowitzSahni[]才提出0-1背包问题的可分性,并利用分支定界技术设计出了一种有效求解0-1背包问题的算法,指明了求解该类问题的一条新道路。1980年,BalasZemel[]创造性地提出求解0-1背包问题的(Core)思想,使该问题的研究有了跨越性的进展。在进入20世纪90年代以后,智能生物仿生技术和Internet技术的迅速发展,使得模拟生物、物理规律的各种并行近似算法不断涌现,遗传算法已经在0-1背包问题上得到较好的应用,蚁群算法、粒子群算法等智能仿生算法也在各种组合优化问题中得到了应用[]

1.3本文的研究内容和设计结构

  本论文共分为五章,具体组织结构如下:

  第1章:绪论。本章主要介绍了基于改进遗传退火算法的0-1背包问题的研究背景及其意义,0-1背包问题的研究现状,阐述了本文的主要研究内容,目的和设计结构

  第2章:0-1背包问题简介和模型。对0-1背包问题进行分析,建立数学模型。

  第3章:遗传算法和退火算法简介。概述遗传算法和退火算法的基

概念,主要思想等;介绍了遗传算法和退火算法的基本步骤等。

  第4章:改进的遗传退火算法简介。概述改进的遗传退火算法的基本概念,主要思想以及其优点等;介绍了改进的遗传退火算法的基本步骤,主要流程等。

  第5章:应用改进的遗传退火算法求解0-1背包问题。根据0-1背包问题的特点,设计出改进遗传退火算法,最后运用改进的遗传退火算法对0-1背包问题的数学模型进行仿真实验来验证其可行性。最后,全文的总结以及对未来研究工作的展望。

 

 

 

 

 

 

 

 

 

 

 

 

 

2章 0-1背包问题

2.1 0-1背包问题简介

0-1背包(0-1 Knapsack Problem, KP)是一个非常典型NPC( Non-deterministic Polynomial Complete)优化问题[],在运筹学中的预算控制、项目选择、材料切割、货物装载等实践中有大量的应用,而且0-1背包问题还常常作为其他问题的子问题进行研究[]。除此之外,随着计算机应用的日益广泛、网络的迅速普及,基于背包问题的背包公钥密码在电子商务的公钥设计中也渐渐占有重要位置。公钥密码这个概念由DiffeHellmein1976年提出,两年之后,Merkle Hellmein设计出了第一个公钥密码体基于背包问题的MH背包公钥密码。因此,解决背包问题具有很高的实用性。

2.2 0-1背包问题模型

0-1背包问题的经典描述如下:假设存在个物件,是一个1之间的整数,每个物件都有其所对应的价值,每个物件也都有其所对应的体积,整个背包的容积用来表示,那么0-1背包问题就是如何能在不超过背包容积的前提下,装入总价值最大的物件。背包问题描述如图1所示。

1背包问题的描述

 

0-1背包问题的严格数学描述如下

(2.1)

这里的表示是否选择第个物品装入背包。如果没有装入该物品,则反之如果选择装入该物品,则函数用来计算装入背包的物品的总价值。当时,即为多维背包问题。由上述数学描述可以看出,本质上,背包问题是一个整数规划问题。

从实际应用的角度来看,0-1背包问题是一个很经典的组合优化问题。一般来说,组合优化( Optimization Problem)由目标函数(Objective Function)和约束条件(Constraints)两部分构成,数学表达如下:

(2.2)

将满足所有约束条件的解空间S称为可行域(Feasible Region),可行域中的解称为可行解(Feasible Solution),将可行域中使目标函数最小的解称为最优解( Optimal Solution)

2.3 本章小结

对于最大化问题,可将目标函数乘以转化为最小化问题求解。当为离散集合构成的解空间时,这类最优化问题称为组合最优化问题( Combinatorial Optimization Problem)。严格意义上的最优解求取非常困难,研究高速近似的算法是一个重要的发展方向。

 

 

 

 

 

 

 

 

 

    3章 遗传算法和退火算法

3.1 遗传算法简介

遗传算法(Genetic AlgorithmGA)1975年由美国密歇根大学的J. Holland教授等人受生物进化论的启发而提出[]。遗传算法是以自然界中的生物进化过程为背景,将生物进化过程中的繁殖选择杂交变异和竞争等概念引入算法中。它的基思想来源于自然界中的生物从低级简单,发展到高级复杂,乃至进化成人类这样一个漫长的进化过程,借鉴了达尔文提出的物竞天择、优胜劣汰、适者生存的自然法则。遗传算法的本质是一种对问题进行高效全局搜索的法,在搜索过程中有效地利用己有信息来自动获取和积累有关搜索空间的知识,并自适应地控制搜索方向使其最终走向最优解。

3.2 遗传算法基本思想

遗传算法是一种借鉴自然界中的生物进化原理而产生的高度并行自适应随机的全局搜索算法。它把生物进化过程中的自然选择优胜劣汰适者生存和遗传变异的思想应用到在求解空间搜索最优解的问题上,是一种多参数多群体的并行优化方法。

由于遗传算法的思想简单,易于实现以及良好的寻优能力,使它在诸多领域得到了广泛的应用,在过去的几十年里,遗传算法已经在数据挖掘、生产调度、图像处理以及函数优化等领域取得了令人欢欣鼓舞的成就,证明了其良好的性能。近年来,遗传算法被应用到越来越多的专业领域中。例如,对于复杂的多标规划问题人工生命及神经网络问题机器学习问题智能控制问题等,遗传算法都是最有效的求解法之一。

遗传算法的生物学基础:按照达尔文的进化论[]观点,在自然界中的每一种生物从诞生开始就进入漫长而美妙的进化过程,其进化过程是由低级简单到高级复杂。各种生物要继续生存,就必须进行长期而复杂的生存斗争,这其中包括同一个种群内部生物之间的斗争不同种群之间的生物斗争生物和自然界无机环境之间的斗争。在斗争过程中,适应能力差的个体被淘汰,或者繁衍后代的机会越来越少,直至最终消亡;而适应能力强的个体继续存活的概率大,并有较多的机会来繁衍后代。达尔文把这一现象称为物竞天择适者生存,达尔文正是用自然选择学说(Natural Selection)来解释物种起源和生物进化的。

达尔文的自然选择学说概括为以下三个主要方面

(1)遗传( Heredity)。这是自然界中生物的最普遍特征,种瓜得瓜,种豆得豆,亲代把生物信息传递给子代,子代按照所得信息而发育生长分化,因而子代总是其有和亲代相同的或相似的性状。正因为生物具有了这个特征,物种才能稳定存在井持续发展。

(2)变异( Variation)。亲代和子代之间以及子代的不同个体之间总会有些不同,这种现象称为变异。变异是在进化过程中随机发生的,变异的选择和积累最终形成了生命的多样性。

(3)生存斗争和适者生存。繁殖过剩和生存斗争造成了自然选择。由于弱肉强食的自然法则一直存在,其结果是适应者生存,不适者淘汰,具有适应性变异的那些个体被保留下来,而不具有适应性变异的那些个体则被淘汰,一代代的生物通过生存环境的选择作用,物种变异定向地朝一个方向积累,于是外观性状逐渐和原先的祖先出现差异,从而演变为新的物种。这种自然选择的过程是一个长期的连续的缓慢而美妙的过程。

世人皆知,生长繁殖新陈代谢遗传与变异是生命的几大基本特征。也就是说,生命是经过长期的不懈进化而产生的,现代的生物是在长期进化过程中衍变过来的。

3.3 遗传算法基本步骤

(1)初始化群体。随机产生种群规模大小个体作为初始种群,确定交叉概率,变异概率的值,适应度函数等。

(2)编码及个体适应度评价。选择符合实际情况的变量对种群规模大小的个体进行编码(通常采用的编码方式是二进制编码,一条染色体对应一个解的编码),并依据适应度函数计算当代种群中编码后各个体的适应值。

(3)算法终止条件的判断。判断算法是否符合终止条件,若满足则转到(8),否则顺序执行。

(4)选择操作。将适应度高的优良个体以更大概率遗传到子代,而适应度差的劣势个体则以小概率复制到下一代,通常采用的选择操作作为轮盘赌算法,它是按照个体适应度值在当代种群中适应度值的比例作为选择概率来进行选择操作的。

(5)交叉操作。它是通过某种规则选择两条染色体作为父代。随机产生交叉点,以给定的交叉概率将其交叉点基因交换,从而产生两个新个体(子代)的过程。

(6)变异操作。变异是基因中的某一点或是多个点以一定的概率产生突变,从而让相应解的编码发生变化,这保证了解的多样性,即使得解具有更大的遍历性。

(7)对子代群体重复步骤(3)~(6)。进入新一轮的遗传迭代进化操作。

(8)进过不断的进化迭代,将会得到一个最优的个体,该个体就可以作为问题的最优解或近似最优解输出,算法终止。

3.4 遗传算法相关术语

(1)演化代

演化代就是算法迭代的步数。

(2)个体

个体是组成群体的一个解,对应GA中的生物染色体编码后为一个位串

(3)种群

种群是指由一定数量的个体染色体所组成的集合,该集合包含了待求解问题的多个解集,通常记作 如初始群体通常记作 

(4)种群规模

种群规模是指一个种群中所包含的个体数量,一般记作,通常情况下,它在整个演化迭代进化过程中是保持不变的。

(5)染色体

染色体是指通过编码而得到的能够表示问题解的一个位串。而带有特征的染色体实体就是个体。因此个体是染色体的具体化。它也是遗传物质的主要信息载体。

(6)位串

位串是个体的一种表现形式,常见的有二进制串。

(7)基因

基因是代表物质遗传信息的基本单位,它是构成染色体的最小单位

(8)基因

基因型是决定染色体性状的内因,即染色体的内部表现形式。

(9)表现型

表现型是指染色体性状的外在表现。内因决定外因,因此其基因型决定个体的表现型。

(10)适应度

适应度是指某个体对其生存环境的适应能力强弱。

(11)平均适应度

平均适应度是指多个个体适应值的算术平均值。

(12)父代子代

依据某种遗传规则,由当代个体产生新一代个体。则当代个体就成为父代,产生的新一代个体就称之为子代。

(13)选择

选择是指从当代种群中选择对环境适应能力强的个体作为父代来产生新种群的过程。选择又称之为复制,它是根据个体的适应值在当代中总适应度值中的比例来决定其是否被淘汰。适应值较大的个体更有可能被选择到新一代种群中,适应值较小的个体被遗传到下一代的可能性就相对小一些。

(14)交叉

交叉是指通过选择较优个体作为的父代个体,并以一定的交叉概率进行遗传学的基因重组从而产生新个体的过程。

(15)变异

变异是由于某种人为或非人为因素引起染色体的某基因位或基因片断突变,进而产生不同染色体的过程。它使得生物体子代与父代之间存在差异,保证了物种的多样性,也即使问题的搜索空间扩大,保证了算法最终能够逼近最优或者近似最优解。

(16)遗传算子

常见的遗传算子有选择算子交叉算子变异算子等。

(17)编码

编码是指将待解决问题的表现型映射到基因型的过程。

(18)解码

编码的逆过程。将基因型映射到问题的表现型的映射。

3.5 应用传统的遗传算法求解0-1背包问题

遗传算法己经在0-1背包问题的求解上取得了大量成果。对于0-1背包问题,利用传统遗传算法求解的基本步骤如下[]

3.5.1 编码

使用遗传算法解决0-1背包问题时,可以直接利用变量进行编码,即。若选择物品放入背包,则;若未选择物品放入背包,则

3.5.2适应度函数

(3.1)

根据式(3-1)[]使用遗传算法计算0-1背包问题时,可以选择下式作为染色体的适应度函数。

(3.2)

利用式(3-1)中的约束条件,首先判断产生的染色体能否全部为1,即个物品能否全部放入背包中。若能够全部放入,则将全部为1的种群作为最优解输出,并停止计算若不能,则通过随机方法产生一些新的且符合约束条件的染色体种群,将其作为初始种群。

3.5.3遗传算子

选择0-1背包问题中,对于种群中染色体的选择,采用轮盘赌的方式进行选择。

交叉采用单点交叉的方式进行染色体的交叉,即随机选取染色体中的一个点与另一个染色体中的一个点进行交叉,产生新的染色体。

变异可以选取一个较小的值作为染色体变异的概率,如0.05

使用传统遗传算法解决0-1背包问题的流程如图2所示。

2 使用传统遗传算法解决0-1背包问题的流程

3.6 退火算法简介

模拟退火算法是近年来应用比较广泛的智能优化算法之一。模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却。加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在个温度都达到平衡态,最后在常温时达到基态,内能减为最小。

3.7 退火算法基本思想

模拟退火算法的思想源于对固体退火过程的模拟,同时综合了统计物理学的知识和局部搜索方法,固体退火过程的物理图像和统计性质是退火算法的物理背景,固体退火即先将固体加热至熔化,再徐徐冷却使之凝固成规整晶体的热力学过程。

在对固体进行加热时,固体中粒子的热运动越来越剧烈,随着温度的升高,粒子与其平衡之间的未知偏离越来越大。当温度上升到固体物质的熔解温度后,固体物质原有的规则性被彻底破坏,物质由固体状态转化为液体状态,粒子间的排列也由原有的有序的结晶状态转化为无序的液体状态,这一过程即通常所说的熔解过程。对固体进行熔解是为了消除原有的固体系统中可能存在的非均匀状态,保证随后进行的冷却过程是以一个平衡点作为起始点的。固体的熔解过程与固体系统的增过程之间是相互联系的,在熔解过程中,固体系统的能量也随温度的升高而增加。

冷却过程与熔解过程恰恰相反,在对熔解得到的液体进行冷却时,液体中粒子的热运动在逐渐减弱,并随着温度的慢慢降低,液体中粒子的运动也逐渐趋于有序。当冷却温度降低至物质的结晶温度后,粒子的热运动转变成围绕着晶体中各点的微弱振动,此时,物质由液体状态转变成固体的结晶态,述过程即成为退火。为了保证退火过程中物质系统在每个温度下都能够达到平衡态并最终回归固体的基态,退火的过程必须是徐徐进行的。在退火的过程中,物质系统的熵值是不断减小的,系统的能量也是随着温度的降低逐渐趋于最小值。如果在冷却过程中温度急剧降低,则会引起淬火效应,即固体只能凝固为均匀的亚稳态,系统的能量也不能达到最小值[]

3.8 退火算法基本步骤

模拟退火算法采用的防止陷入局部最优的接受准则是Metropolis等人于1953年提出的Metropolis准则,该准则的详细描述如[]首先,假定给定的以粒子相对位置为表征的初始状态表示为物质当前状态为固态,则物质在该状态下的能量表示为,然后用摄动装置随机选择一个粒子并使该粒子的位置随机地发生微小的变化,以此来得到一个新的状态新状态的能量可表示为,如果,则新状态就可作为重要状态反之,若,考虑到热运动对能量的影响,则要根据固体处于该状态的概率来决定该新状态是否作为重要状态。概率的计算方法如下[]

(3.1)

 

表示该状态的概率,它是一个大于0的数,用随机数产生器产生一个区间的随机数§,若大于这个随机数§,则将新状态作为重要状态,否则将其舍去。表示新状态下的温度。为玻耳兹曼( Boltzmann)常数。若新状态是重要状态,就以新状态取代原有状态成为当前状态,否则依然以原有状态作为当前状态。然后不断重复上述产生新状态的过程。以此来保证在大规模固体状态变换后,系统仍处于能量较低的平衡状态。

根据的计算公式可知,在高温状态下可接受与当前状态能量差别较大的新状态作为重要状态,而在较低温度状态下只能接受与当前状态能量差别较小的新状态作为重要状态。这与实际生活中不同温度下热运动的影响完全一致。在度值趋近于零时,就不能接受任何的新状态了。

根据Metropolis准则,用固体退火过程模拟组合优化问题,设组合优化问题的一个解对应固体退火过程中的一个微观状态,组合优化问题的标函数对应固体退火过程中的一个微观状态的能量,将固体退火过程中的温度演化为称为冷却进度表的控制参数,这样就得到了求解组合优化问题的模拟退火算法由初始解和控制参数初值开始,对当前解不断地重复产生新解计算目标函数差接受/舍弃的迭代,这个迭代的过程对应着固体在某一温度下趋热平衡的过程,并逐步衰减控制参数的值,算法终止时的当前解即为所求最优解的近似值。退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值及其衰减因子每个的迭代次数和停比条件。由于固体退火的过程必须是徐徐降温,才能使固体在每个温度下都能够达到热平衡,最终才能趋于能量最小的基态,由此可见,控制参数的值也必须是缓慢衰减,才能确保模拟退火算法最终趋于组合优化问题的整体最优解集。

3.9本章小结

综上所述,运用传统的遗传算法求解0-1背包问题时,如果问题的规模不大,则传统的遗传算法是能够得到最优解或近似最优解的,但当求解的0-1背包问题的规模增大时,用传统的遗传算法不能得到比较理想的解。这是因为用传统的遗传算法在进行求解时,在早期的计算中,个体差异较大,后代产生的个数与父个体适应度大小成正比,因此在早期容易使个别好的个体的后代充斥整个种群,过快地收敛于某一局部极值处,造成早熟现象(Premature);而在传统遗传算法的后期,各染色体的适应度趋向一致,优秀的个体在产生后代时优势不明显,从而导致整个种群进化停滞不前(Stalling)直接影响了算法的收敛性。

模拟退火算法是通过模拟物理学中固体物质退火的过程来解决般组合优化问题的一种组合优化算法,即在某一初始温度,随着控制参数值的不断下降,结合Metropolis准则在解空间中随机寻找标函数的局最优解。也就是说,局部最优解能按照一定的概率跳出并最终趋全局最优解。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4改进的遗传退火算法

4.1 改进的遗传退火算法简介

在大量的求解大规模问题的实际应用中,传统的单一的搜索优化算法得到的优化结果往往不够理想,对多种算法进行混合的思想已经逐渐成为提高传统算法优化性能的一个重要且有效的途径。

遗传算法是基于适者生存的种高度并行随机和自适应的优化算法,在一定条件具有全局收敛特性,并广泛应用于机器学习、控制、优化等领域。但对于基本的遗传算法而言,在实际应用时,往往会出现早熟收敛和收敛性能差等缺点

模拟退火算法是在某一初温,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解。但对于基本的模拟退火算法而言,在实际应用中,当问题规模不可避免地增大时,返回一个高质量的近似解的时间花费将难以承受。

为了避免基本遗传算法和基本模拟退火算法的缺点,综合者的优点,参考文献[]提出了一种新的混合优化策略—-改进的遗传退火算法(Modified Genetic Algorithm and Simulated Annealing, MGASA) MGASA算法不仅对基本遗传算法和基本模拟退火算法进行了算法思想融合,还引入了机器学习原理,引入模拟退火算法作为遗传算法中的种群变异算子,并将模拟退火算法中Metropolis抽样过程与遗传算法相结合,不仅充分发挥了遗传算法并行搜索能力强的特点,而且增强和改进了遗传算法的进化能力另外,利用机器学习原理来指导种群的建立,使优化过程在很短时间内获得最优解,提高了系统的收敛性能和收敛速度同时,利用机器学习的记忆功能,避免了最优解的丢失。

4.2 改进的遗传退火算法基本思想

4.2.1 改进的遗传退火算法算法基本框架

MGASA算法综合了遗传算法的全局并行搜索能力强和模拟退火算法的局部串行搜索能力强的特点,采用并行和串行相结合的结构。外层在模拟退火算法产生的各个温度下进行遗传算法的操作内层对各子种群进行搜索,初始解来源遗传算法中的进化,模拟退火算法经Metropolis抽样过程得到的解又成为遗传算法中进行一步进化时的初始种群。这样的框架结构有效地避免了遗传算法易早熟和局部搜索能力不强的缺点,增强了算法的全局和局部搜索能力。

4.2.2 知识库的建立

知识库建立的合理性和信息的存储方式直接影响到信息的存储和提取速度,因此,建立一个合理的知识库,不仅能够提高数据的存储和提取速度,还能够合理分配资源,减少资源耗费。

(1)初始种群库。该库用来存储各种情况,最后一次迭代所产生的染色体群。由于遗传算法的整体进化性,使得最后一次迭代产生染色体群的平均适值最优,将这一结果记录下来,当再次进行优化计算时,将存储过的染色体群的部或一部分用做初始种群的一部分,使初始种群有一个较高的平均适值,从而能够有效地减少进化次数。

(2)种群分类库索引库。将次迭代后产生的种群划分为若干类,记录分类索引号。每类中平均适值较高的将作用在不同子种群交叉操作所产生的所有新个体,井与父代种群进行整体择优筛选,从而加速种群的进化过程。

(3)优化结果库。用来存储每次遗传算法优化计算后所得到的温度调节参数和最优解,以便再次遇到相同工况时可以直接检索到最优结果。

4.2.3 机器学习过程

基木遗传算法中选取的初始种群的好坏及多样,将会影响基本遗传算法的迭代次数和是否能达到最优解。根据这一特点,我们首先使用机器学习的方法来为遗传算法产生一部分初始群体,再利用随机产生的方式为遗传算法产生另一部分的初始群体,以此来提高初始群体的适应性和多样性,加快进化过程。此外,我们还将机器学习的方法加入到遗传交和变异中,即在遗传交叉和变异结束后使用机器学习的分类操作,将种群划分为若干类,作为模拟退火操作的初始种群

4.2.4 学习记忆功能

Metropolis等人在1953年提出的采样法就是以一定概率接受新产生的状态作为当前状态,即模拟退火算法中使用的Metropolis接受准则,在温度,由当前状态产生新状态,两者的能量分别为。若,则接受新状态为当前状态否则,若概率大于区间内的随机数,则仍接受新状态为当前状态,若不成立,则保留状态为当前状态,其中为玻耳兹曼常数。然而,在搜索过程中执行Metropolis概率接受准则时,不可避免地会遗失最优解[]。因此,MGASA算法引入机器学习方法中[]的记忆功能,将产生过的最优解存入知识库,在搜索过程中首先进行知识库的查询,以此来避免最优解的丢失,提高进化能力[]

4.2.5 模拟退火算法中的Metropolis抽样与遗传算法的混合

将模拟退火算法中的基于概率突跳的Metropolis抽样过程混合到遗传算法,可以对遗传算法中的变异操作进行概率控制操作,并可以通过模拟退火算法中的控制初温的操作来控制遗传算法初始搜索的行为控制温度的高低可以控制突跳能力的强弱,高温下的强突跳有利避免陷入局部极小,低温的趋化性有利于提高局部搜索能力控制降温速率可控制突跳能力的下降幅度控制抽样次数可控制各温度下的搜索能力,避免了变异概率难以选取克服了基本遗传算法易早熟收敛的缺点。

4.3 改进的遗传退火算法流程

MGASA算法基本流程如图3所示[]

3 改进算法流程

步骤1初始化算法参数。初温退温速率为

步骤2搜索知识库,判断是否有符合条件的最优解和初始种群。若有,则调用部分初始种群,并随机生成另部分,然后从数据库中调用最优解否则,随机生成初始种群。

步骤3评价当前种群的个体。

步骤4判断算法的收敛准则。如果满足,则转到步骤9否则,转到步骤5

步骤5随机选择个体与种群中的最优个体进行交又操作,产生新个体。如果新个体适值优于当前最优解,则进行种群更新否则,保留当前种群和最优解并分类存储到知识库。

步骤6对所有个体进行变异操作,保留最佳个体并划分为n个子种群作为SA的初始种群,同时进行种群更新和知识库更新,存储最优状态和温度调节参数。

步骤7个子种群的个体进行定步长抽样的模拟退火操作,以概率接受后代,更新种群和知识库。

步骤8进行退温操作转到步骤4

步骤9输出本次优化结果。

步骤10判断是否再次进行优化,若是则转到步骤2否则,转到步骤11

步骤11输出最终优化结果。

4.4本章小结

(1)MGASA算法增强了搜索效率。MGASA算法既具有基本遗传算法所具有的全局并行搜索能力,又具有模拟退火算法所具有的局部集中搜索能力,可以跳出局部极小。

(2)MGASA算法机器学习原理的引入。引入机器学习原理,将先前优化过的工艺流程存储起来,当再次遇到相同工况时,可以通过查询数据库直接获取结果,避免了重复计算,提高了算法的进化速度。如果对当前查询结果不满意,可以从先前存储的种群中抽取部分个体作为初始种群中的一部分,其余个体随机生成,既保证了初始种群的多样化,也使初始种群保持了较高的平均适值,使得优化迭代次数大大减少。

(3)MGASA算法增强进化能力。将最优解存入知识库,在搜索过程中首先查询知识库,避免了最优解的丢失,提高了进化能力。

 

 

 

 

 

 

 

5应用改进的遗传退火算法求解0-1背包问题

5.1 改进的遗传退火算法求解0-1背包问题算法结构

MGASA算法0-1背包问题中应用的流程图如图4所示。

4MGASA算法0-1背包问题中应用的流程图

5.2 改进的遗传退火算法求解0-1背包问题算法设计

改进的遗传退火算法(MGASA算法)应用到求解大规模0-1背包问题步骤如下

5.2.1 编码

依然采用传统遗传算法解决0-1背包问题时使用的编码方式,即根据物品是否放入背包,对各物品的状态进行0-1编码,得到

5.2.2适应度函数的选择

在使用MGASA算法求解0-1背包问题时,可能会产生不可行的解。为了解决解的不可行性,我们在适应度函数的构造中加入惩罚函数。当背包中放置的物品超过背包的容积时,对超出容积的部分处以惩罚。具体适应度函数的构造如式(5-1)和式(5-2)所示:

(5.1)

(5.2)

式中,是阀值函数,判断是否超出背包的容积。表示惩罚函数的权重,是一个大于零的实数,代表惩罚力度。

5.2.3遗传算子的确定

依然采用轮盘赌的方式进行染色体的选择,但事先对各染色体的适应值进行相应的处理,以此来防止适应度函数的值出现小于零的情况,也可以通过这样的事先处理在一定程度上防止各个染色体适应值之间的差别过大而丢失适应值较低的染色体中包含的有用信息。具体处理方式如下

(5.3)

交叉策略的选择:首先将迭代产生的种群划分为若干类,将根据轮盘赌方法选择出来的个体与同类的种群中平均适值较高的个体进行交叉,产生新个体。

变异策略的选择对种群中的所有个体进行变异操作,并保留最佳的个体划分为若干子种群作为模拟退火阶段的初始种群。

5.2.4初始种群的构建

首先搜索知识库,判断现有知识库中是否存在符合约束条件的最优解和初始种群。如果存在,则选择知识库中存在的初始种群的一部分作为初始种群,并以随机方式生成另一部分初始种群;如果现有知识库中不存在符合约束条件的初始种群,则全部以随机方法生成初始种群。

5.3应用改进的遗传退火算法解决0-1背包问题仿真实验

假设背包容量:,物品体积:,其价值是

5.3.1编码

基于背包问题的模型,我们设计了针对于背包问题的染色体编码方法:将待求解的各量表示成长为的二进制字符串表示物体不放入背包内,表示物体放入背包内。例如:1010代表一个解,它表示将第13号物体放入背包中,其它的物体则不放入。

5.3.2生成初始种群

本例中,群体规模的大小取为4,即群体由4个个体组成,每个个体可通过随机的方法产生。例如: 
a1 = [1, 1, 1, 1] 
a2 = [1, 0, 1, 0]
a3 = [1, 0, 0, 1] 
a4 = [1, 0, 0, 0]

5.3.3种群适应度计算

按照下列公式计算种群中个体适应度: 

(5.4)

         (5.5)

公式的下半部分即为适应度的惩罚函数,其中参数。在本例中我们取

a1 = [1, 1, 1, 1], totalSize = 14, totalValue = 19, fit = 9 
a2 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fit = 8 
a3 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fit = 10 
a4 = [1, 0, 0, 0], totalSize = 2, totalValue = 3, fit = 3

5.3.4选择

我们采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。其具体操作过程如下:

(1)先计算出群体中所有个体的适应度的总和

(2)其次计算出每个个体的相对适应度的大小。它即为每个个体被遗传到下一代群体中的概率;

(3)每个概率值组成一个区间,全部概率值之和为1

(4)最后再产生一个01之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体被选中的次数。 
  在本例中, 


  因此区间区间区间区间 
  经过4次选择,被选1次,被选2次,落选,被选1次: 
b1 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
b2 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10 
b3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
b4 = [1, 1, 1, 1], totalSize = 14, totalValue = 19, fitValue = 9

5.3.5交叉

本例采用单点交叉的方法,其具体操作过程是:

(1)先对群体进行随机配对;

(2)其次随机设置交叉点位置;

(3)最后再相互交换配对染色体之间的部分基因。 
  在本例中, 
在第3位后交叉,生成: 
c1 = [1, 0, 1, 1], totalSize = 11, totalValue = 15, fitValue = 11 
c2 = [1, 1, 1, 0], totalSize = 9, totalValue = 12, fitValue = 12 
在第2位后交叉,生成: 
c3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
c4 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10

5.3.6突变

我们采用基本位变异的方法来进行变异运算,其具体操作过程是: 

(1)首先确定出各个个体的基因变异位置;

(2)然后依照某一概率将变异点的原有基因值取反。 
  本例中,的第1位发生突变: 
c1 = [0, 0, 1, 1], totalSize = 9, totalValue = 12, fitValue = 12 
c2 = [1, 1, 1, 0], totalSize = 9, totalValue = 12, fitValue = 12 
c3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
c4 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10 
  至此,我们已经找到了2个最优解

下面给出一个例子,对MGASA算法0-1背包问题中的应用性能来进行初步的实验[]

假设50个物品的体积Size、物体的价值Value和背包的容量C分别为: 
Size={ 80828570727066505525  
50554048503222603032  
40383532252830225030  
4530605020 6520253010  
2025151010 104421 }

Value={ 220208198192180180165162160158 
155130125122120 118115110105101 
1001009896959088828077  
75737270696665636058 
5650302015108531}

C=1000 
  如何选择哪些物品装入该背包可使得在背包的容量约束限制之内所装物品的总价值最大
退火算法所得结果:总价值为3103, 总重量为1000。最大迭代次数为400次。 
遗传算法所得结果:总价值为3077 , 总重量为999 
改进的遗传退火算法所得结果:总价值为3103, 总重量为1000。最大迭代次数为75次。 
  我们所求得最优解的个体分配情况为: 
11010 10111 10110 11011 01111 11101 00001 01001 10000 01000

根据MGASA算法编制程序[],在VC++环境下编译运行,并把计算结果与退火算法和遗传算法的实验结果进行比较。

当终止代数设为500,交义概率设为0.6,变异概率设为0.1,并进行了1 000次计算后,计算出来的最好结果如表1所示。

1 各算法的最好结果

算法

最好个体

求解结果(总价值/总体积)

退火算法

11111111011010011011001111010000001010010000000001

3036/999

遗传算法

11011011111010011011111111010000001010011000000011

3077/999

MGASA

11010101111011011011011111110100001010011000001000

3103/1000

 

5.4本章小结

由上述结果可知,利用MGASA算法求解典型的0-1背包问题,既克服了传统算法的早熟收敛,又增加了种群的适值,避免了最优解的丢失,极大地加快了进化速度。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

本文对改进的遗传退火算法及其在0-1背包问题中的应用进行了研究,在遗传算法和退火算法的基础上,针对在编码操作、选择操作和降温操作中存在的不足进行了如下改进

(1)在编码操作中,为了避免繁琐的编码采取了二进制编码,提高了该算法的计算效率。

(2)针对遗传算法中的进化缓慢容易陷入局部最优而提前收敛等问题,在进行选择操作是将轮盘赌选择和最优解保存策略选择结合起来,既保证了进化速度,又保证了算法的收敛性。

(3)退火过程中一般的降温过程过快而有可能得不到全局最优解,针对这一问题,采用了改进的降温函数,使得降温过程较为缓慢,从而能够得到更多的性能更好的解,尤其是在进化一定代数之后,逐步逼近最优解,这个时候需要降温越来越慢,这样有利于搜索到全局最优解,这是一般的降温函数无法满足的。

最后结合实例,并且通过改进的遗传退火算法对建立起的数学模型进行优化求解。结果证明它能够可靠地在不同种群规模的0-1背包问题中找到最优或近似最优方案。通过对实验结果的对比分析,验证了改进的遗传退火算法的有效性和优异性。

    0-1问题的研究是一个广泛而复杂的课题,本文在这方面的研究虽取得了一定的成果,但由于本人的研究时间、知识水平均有限,论文中的研究存在许多有待改进完善的地方,尚需进一步研究和解决。

(1)模拟退火自身存在许多不足和有待改进的地方,如增加升温或重升温过程,在算法进程的适当时机,将温度适当提高,从而可激活各状态的接受概率,以调整搜索进程中的当前状态,这样就能有效避免算法在局部极小解处停滞不前

(2)算法参数的合理性还需要进一步进行研究论证等等

 

 

参考文献

                                                          

 

 

 

 

JISHOUUNIVERSITY

 

 

本科生毕业设计

 

 

题    目:

基于改进遗传退火算法的0-1背包问题设计与实现

作    者:

秦峰

学   号:

20144042001

所属学院:

         信息科学与工程学院

专业年级:

      计算机科学与技术,2014级

指导教师:

周凯卿

职  称:

讲师

完成时间:

2018年 05 月 04 日

 

 

吉首大学教务处制


   

  I

Abstract II

1 1

1.1课题研究的背景和目的 1

1.2背包问题研究现状 1

1.3本文的研究内容和设计结构 2

2章 0-1背包问题 3

2.10-1背包问题简介 3

2.20-1背包问题模型 3

2.3 本章小结 4

3章 遗传算法和退火算法 5

3.1 遗传算法简介 5

3.2 遗传算法基本思想 5

3.3 遗传算法基本步骤 6

3.4 遗传算法相关术语 7

3.5 应用传统的遗传算法求解0-1背包问题 9

3.6 退火算法简介 12

3.7 退火算法基本思想 12

3.8 退火算法基本步骤 12

3.9 本章小结 14

4改进的遗传退火算法 15

4.1 改进的遗传退火算法简介 15

4.2 改进的遗传退火算法基本思想 15

4.3 改进的遗传退火算法流程 17

4.4 本章小结 19

5应用改进的遗传退火算法求解0-1背包问题 20

5.1 改进的遗传退火算法求解0-1背包问题算法结构 20

5.2 改进的遗传退火算法求解0-1背包问题算法设计 21

5.3 应用改进的遗传退火算法解决0-1背包问题仿真实验 22

5.4 本章小结 25

  26

参考文献 27

 

 

 

 


基于改进遗传退火算法的0-1背包问题设计与实现

 

该算法结合了遗传算法和模拟退火算法的优点,并有效克服了各自的缺点,在性能优化,效率优化和可靠性方面具有显著的优势使用本算法求解不同种群规模的0-1背包问题,数值实验结果表明,算法具有较快的收敛速度,又能够收敛到最优解,优于遗传算法和模拟退火算法。

关键词:遗传算法;模拟退火;0-1背包问题

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Design and Implementation of 0-1 Knapsack Problem Based on Modified Genetic Algorithm and Stimulated Annealing

Abstract

This algorithm combines the advantages of genetic algorithm and simulated annealing algorithm, and effectively overcomes their shortcomings. It has significant advantages in performance optimization, efficiency optimization and reliability. This algorithm is used to solve 0-1 knapsack problem with different population sizes. Numerical experiments show that the algorithm not only has faster convergence speed, but also converges to the optimal solution, which is better than genetic algorithm and simulated annealing algorithm.

Key words: Genetic AlgorithmSimulated Annealing0-1 knapsack problem

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


1

1.1课题研究的背景和目的

针对传统的遗传算法在求解大规模0-1背包问题时存在的早熟收敛和收敛性能不稳定的特点,提出了一种新的混合优化算法,即MGASA。该算法将模拟退火的思想和遗传算法相结合,在算法的外层进行各个温度下的遗传算法操作,在算法内层进行各个子种群的搜索,使得算法的全局并行搜索能力和局部串行搜索能力都得到了增强,同时利用模拟退火算法中的Metropolis概率突跳抽样过程,对传统遗传算法中的变异操作以一定概率进行控制,避免出现早熟现象利用原有的数据和资源建立一个合理的知识库,依靠机器对知识库的学习能力对初始种群的建立进行指导,对迭代产生的种群进行分类,选择每类中平均适值最高的作为所有子种群交叉产生的新个体,加速种群进化,避免收敛速度过慢的情况;MGASA还引入了机器学习的记忆功能,将进行串行搜索过程中出现的最优解存入知识库,有效地避免模拟退火算法在串行搜索过程中最优解的丢失,提高种群的进化能力。

1.2背包问题研究现状

对于0-1背包问题来说,现阶段己有的求解算法可分为精确求解算法和近似求解算法两大类。

20世纪50年代中期,Dantzig[]首先利用贪婪算法求得了0-1背包问题的一个理想解,并得出了0-1背包问题最优解的上界,这是一项具有开创性的研究。在之后的20多年里,Dantzig求得的上界并未得到改进,对于0-1背包问题的研究也没有取得太大进展。直到1974年,HorowitzSahni[]才提出0-1背包问题的可分性,并利用分支定界技术设计出了一种有效求解0-1背包问题的算法,指明了求解该类问题的一条新道路。1980年,BalasZemel[]创造性地提出求解0-1背包问题的(Core)思想,使该问题的研究有了跨越性的进展。在进入20世纪90年代以后,智能生物仿生技术和Internet技术的迅速发展,使得模拟生物、物理规律的各种并行近似算法不断涌现,遗传算法已经在0-1背包问题上得到较好的应用,蚁群算法、粒子群算法等智能仿生算法也在各种组合优化问题中得到了应用[]

1.3本文的研究内容和设计结构

  本论文共分为五章,具体组织结构如下:

  第1章:绪论。本章主要介绍了基于改进遗传退火算法的0-1背包问题的研究背景及其意义,0-1背包问题的研究现状,阐述了本文的主要研究内容,目的和设计结构

  第2章:0-1背包问题简介和模型。对0-1背包问题进行分析,建立数学模型。

  第3章:遗传算法和退火算法简介。概述遗传算法和退火算法的基

概念,主要思想等;介绍了遗传算法和退火算法的基本步骤等。

  第4章:改进的遗传退火算法简介。概述改进的遗传退火算法的基本概念,主要思想以及其优点等;介绍了改进的遗传退火算法的基本步骤,主要流程等。

  第5章:应用改进的遗传退火算法求解0-1背包问题。根据0-1背包问题的特点,设计出改进遗传退火算法,最后运用改进的遗传退火算法对0-1背包问题的数学模型进行仿真实验来验证其可行性。最后,全文的总结以及对未来研究工作的展望。

 

 

 

 

 

 

 

 

 

 

 

 

 

2章 0-1背包问题

2.1 0-1背包问题简介

0-1背包(0-1 Knapsack Problem, KP)是一个非常典型NPC( Non-deterministic Polynomial Complete)优化问题[],在运筹学中的预算控制、项目选择、材料切割、货物装载等实践中有大量的应用,而且0-1背包问题还常常作为其他问题的子问题进行研究[]。除此之外,随着计算机应用的日益广泛、网络的迅速普及,基于背包问题的背包公钥密码在电子商务的公钥设计中也渐渐占有重要位置。公钥密码这个概念由DiffeHellmein1976年提出,两年之后,Merkle Hellmein设计出了第一个公钥密码体基于背包问题的MH背包公钥密码。因此,解决背包问题具有很高的实用性。

2.2 0-1背包问题模型

0-1背包问题的经典描述如下:假设存在个物件,是一个1之间的整数,每个物件都有其所对应的价值,每个物件也都有其所对应的体积,整个背包的容积用来表示,那么0-1背包问题就是如何能在不超过背包容积的前提下,装入总价值最大的物件。背包问题描述如图1所示。

1背包问题的描述

 

0-1背包问题的严格数学描述如下

(2.1)

这里的表示是否选择第个物品装入背包。如果没有装入该物品,则反之如果选择装入该物品,则函数用来计算装入背包的物品的总价值。当时,即为多维背包问题。由上述数学描述可以看出,本质上,背包问题是一个整数规划问题。

从实际应用的角度来看,0-1背包问题是一个很经典的组合优化问题。一般来说,组合优化( Optimization Problem)由目标函数(Objective Function)和约束条件(Constraints)两部分构成,数学表达如下:

(2.2)

将满足所有约束条件的解空间S称为可行域(Feasible Region),可行域中的解称为可行解(Feasible Solution),将可行域中使目标函数最小的解称为最优解( Optimal Solution)

2.3 本章小结

对于最大化问题,可将目标函数乘以转化为最小化问题求解。当为离散集合构成的解空间时,这类最优化问题称为组合最优化问题( Combinatorial Optimization Problem)。严格意义上的最优解求取非常困难,研究高速近似的算法是一个重要的发展方向。

 

 

 

 

 

 

 

 

 

    3章 遗传算法和退火算法

3.1 遗传算法简介

遗传算法(Genetic AlgorithmGA)1975年由美国密歇根大学的J. Holland教授等人受生物进化论的启发而提出[]。遗传算法是以自然界中的生物进化过程为背景,将生物进化过程中的繁殖选择杂交变异和竞争等概念引入算法中。它的基思想来源于自然界中的生物从低级简单,发展到高级复杂,乃至进化成人类这样一个漫长的进化过程,借鉴了达尔文提出的物竞天择、优胜劣汰、适者生存的自然法则。遗传算法的本质是一种对问题进行高效全局搜索的法,在搜索过程中有效地利用己有信息来自动获取和积累有关搜索空间的知识,并自适应地控制搜索方向使其最终走向最优解。

3.2 遗传算法基本思想

遗传算法是一种借鉴自然界中的生物进化原理而产生的高度并行自适应随机的全局搜索算法。它把生物进化过程中的自然选择优胜劣汰适者生存和遗传变异的思想应用到在求解空间搜索最优解的问题上,是一种多参数多群体的并行优化方法。

由于遗传算法的思想简单,易于实现以及良好的寻优能力,使它在诸多领域得到了广泛的应用,在过去的几十年里,遗传算法已经在数据挖掘、生产调度、图像处理以及函数优化等领域取得了令人欢欣鼓舞的成就,证明了其良好的性能。近年来,遗传算法被应用到越来越多的专业领域中。例如,对于复杂的多标规划问题人工生命及神经网络问题机器学习问题智能控制问题等,遗传算法都是最有效的求解法之一。

遗传算法的生物学基础:按照达尔文的进化论[]观点,在自然界中的每一种生物从诞生开始就进入漫长而美妙的进化过程,其进化过程是由低级简单到高级复杂。各种生物要继续生存,就必须进行长期而复杂的生存斗争,这其中包括同一个种群内部生物之间的斗争不同种群之间的生物斗争生物和自然界无机环境之间的斗争。在斗争过程中,适应能力差的个体被淘汰,或者繁衍后代的机会越来越少,直至最终消亡;而适应能力强的个体继续存活的概率大,并有较多的机会来繁衍后代。达尔文把这一现象称为物竞天择适者生存,达尔文正是用自然选择学说(Natural Selection)来解释物种起源和生物进化的。

达尔文的自然选择学说概括为以下三个主要方面

(1)遗传( Heredity)。这是自然界中生物的最普遍特征,种瓜得瓜,种豆得豆,亲代把生物信息传递给子代,子代按照所得信息而发育生长分化,因而子代总是其有和亲代相同的或相似的性状。正因为生物具有了这个特征,物种才能稳定存在井持续发展。

(2)变异( Variation)。亲代和子代之间以及子代的不同个体之间总会有些不同,这种现象称为变异。变异是在进化过程中随机发生的,变异的选择和积累最终形成了生命的多样性。

(3)生存斗争和适者生存。繁殖过剩和生存斗争造成了自然选择。由于弱肉强食的自然法则一直存在,其结果是适应者生存,不适者淘汰,具有适应性变异的那些个体被保留下来,而不具有适应性变异的那些个体则被淘汰,一代代的生物通过生存环境的选择作用,物种变异定向地朝一个方向积累,于是外观性状逐渐和原先的祖先出现差异,从而演变为新的物种。这种自然选择的过程是一个长期的连续的缓慢而美妙的过程。

世人皆知,生长繁殖新陈代谢遗传与变异是生命的几大基本特征。也就是说,生命是经过长期的不懈进化而产生的,现代的生物是在长期进化过程中衍变过来的。

3.3 遗传算法基本步骤

(1)初始化群体。随机产生种群规模大小个体作为初始种群,确定交叉概率,变异概率的值,适应度函数等。

(2)编码及个体适应度评价。选择符合实际情况的变量对种群规模大小的个体进行编码(通常采用的编码方式是二进制编码,一条染色体对应一个解的编码),并依据适应度函数计算当代种群中编码后各个体的适应值。

(3)算法终止条件的判断。判断算法是否符合终止条件,若满足则转到(8),否则顺序执行。

(4)选择操作。将适应度高的优良个体以更大概率遗传到子代,而适应度差的劣势个体则以小概率复制到下一代,通常采用的选择操作作为轮盘赌算法,它是按照个体适应度值在当代种群中适应度值的比例作为选择概率来进行选择操作的。

(5)交叉操作。它是通过某种规则选择两条染色体作为父代。随机产生交叉点,以给定的交叉概率将其交叉点基因交换,从而产生两个新个体(子代)的过程。

(6)变异操作。变异是基因中的某一点或是多个点以一定的概率产生突变,从而让相应解的编码发生变化,这保证了解的多样性,即使得解具有更大的遍历性。

(7)对子代群体重复步骤(3)~(6)。进入新一轮的遗传迭代进化操作。

(8)进过不断的进化迭代,将会得到一个最优的个体,该个体就可以作为问题的最优解或近似最优解输出,算法终止。

3.4 遗传算法相关术语

(1)演化代

演化代就是算法迭代的步数。

(2)个体

个体是组成群体的一个解,对应GA中的生物染色体编码后为一个位串

(3)种群

种群是指由一定数量的个体染色体所组成的集合,该集合包含了待求解问题的多个解集,通常记作 如初始群体通常记作 

(4)种群规模

种群规模是指一个种群中所包含的个体数量,一般记作,通常情况下,它在整个演化迭代进化过程中是保持不变的。

(5)染色体

染色体是指通过编码而得到的能够表示问题解的一个位串。而带有特征的染色体实体就是个体。因此个体是染色体的具体化。它也是遗传物质的主要信息载体。

(6)位串

位串是个体的一种表现形式,常见的有二进制串。

(7)基因

基因是代表物质遗传信息的基本单位,它是构成染色体的最小单位

(8)基因

基因型是决定染色体性状的内因,即染色体的内部表现形式。

(9)表现型

表现型是指染色体性状的外在表现。内因决定外因,因此其基因型决定个体的表现型。

(10)适应度

适应度是指某个体对其生存环境的适应能力强弱。

(11)平均适应度

平均适应度是指多个个体适应值的算术平均值。

(12)父代子代

依据某种遗传规则,由当代个体产生新一代个体。则当代个体就成为父代,产生的新一代个体就称之为子代。

(13)选择

选择是指从当代种群中选择对环境适应能力强的个体作为父代来产生新种群的过程。选择又称之为复制,它是根据个体的适应值在当代中总适应度值中的比例来决定其是否被淘汰。适应值较大的个体更有可能被选择到新一代种群中,适应值较小的个体被遗传到下一代的可能性就相对小一些。

(14)交叉

交叉是指通过选择较优个体作为的父代个体,并以一定的交叉概率进行遗传学的基因重组从而产生新个体的过程。

(15)变异

变异是由于某种人为或非人为因素引起染色体的某基因位或基因片断突变,进而产生不同染色体的过程。它使得生物体子代与父代之间存在差异,保证了物种的多样性,也即使问题的搜索空间扩大,保证了算法最终能够逼近最优或者近似最优解。

(16)遗传算子

常见的遗传算子有选择算子交叉算子变异算子等。

(17)编码

编码是指将待解决问题的表现型映射到基因型的过程。

(18)解码

编码的逆过程。将基因型映射到问题的表现型的映射。

3.5 应用传统的遗传算法求解0-1背包问题

遗传算法己经在0-1背包问题的求解上取得了大量成果。对于0-1背包问题,利用传统遗传算法求解的基本步骤如下[]

3.5.1 编码

使用遗传算法解决0-1背包问题时,可以直接利用变量进行编码,即。若选择物品放入背包,则;若未选择物品放入背包,则

3.5.2适应度函数

(3.1)

根据式(3-1)[]使用遗传算法计算0-1背包问题时,可以选择下式作为染色体的适应度函数。

(3.2)

利用式(3-1)中的约束条件,首先判断产生的染色体能否全部为1,即个物品能否全部放入背包中。若能够全部放入,则将全部为1的种群作为最优解输出,并停止计算若不能,则通过随机方法产生一些新的且符合约束条件的染色体种群,将其作为初始种群。

3.5.3遗传算子

选择0-1背包问题中,对于种群中染色体的选择,采用轮盘赌的方式进行选择。

交叉采用单点交叉的方式进行染色体的交叉,即随机选取染色体中的一个点与另一个染色体中的一个点进行交叉,产生新的染色体。

变异可以选取一个较小的值作为染色体变异的概率,如0.05

使用传统遗传算法解决0-1背包问题的流程如图2所示。

2 使用传统遗传算法解决0-1背包问题的流程

3.6 退火算法简介

模拟退火算法是近年来应用比较广泛的智能优化算法之一。模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却。加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在个温度都达到平衡态,最后在常温时达到基态,内能减为最小。

3.7 退火算法基本思想

模拟退火算法的思想源于对固体退火过程的模拟,同时综合了统计物理学的知识和局部搜索方法,固体退火过程的物理图像和统计性质是退火算法的物理背景,固体退火即先将固体加热至熔化,再徐徐冷却使之凝固成规整晶体的热力学过程。

在对固体进行加热时,固体中粒子的热运动越来越剧烈,随着温度的升高,粒子与其平衡之间的未知偏离越来越大。当温度上升到固体物质的熔解温度后,固体物质原有的规则性被彻底破坏,物质由固体状态转化为液体状态,粒子间的排列也由原有的有序的结晶状态转化为无序的液体状态,这一过程即通常所说的熔解过程。对固体进行熔解是为了消除原有的固体系统中可能存在的非均匀状态,保证随后进行的冷却过程是以一个平衡点作为起始点的。固体的熔解过程与固体系统的增过程之间是相互联系的,在熔解过程中,固体系统的能量也随温度的升高而增加。

冷却过程与熔解过程恰恰相反,在对熔解得到的液体进行冷却时,液体中粒子的热运动在逐渐减弱,并随着温度的慢慢降低,液体中粒子的运动也逐渐趋于有序。当冷却温度降低至物质的结晶温度后,粒子的热运动转变成围绕着晶体中各点的微弱振动,此时,物质由液体状态转变成固体的结晶态,述过程即成为退火。为了保证退火过程中物质系统在每个温度下都能够达到平衡态并最终回归固体的基态,退火的过程必须是徐徐进行的。在退火的过程中,物质系统的熵值是不断减小的,系统的能量也是随着温度的降低逐渐趋于最小值。如果在冷却过程中温度急剧降低,则会引起淬火效应,即固体只能凝固为均匀的亚稳态,系统的能量也不能达到最小值[]

3.8 退火算法基本步骤

模拟退火算法采用的防止陷入局部最优的接受准则是Metropolis等人于1953年提出的Metropolis准则,该准则的详细描述如[]首先,假定给定的以粒子相对位置为表征的初始状态表示为物质当前状态为固态,则物质在该状态下的能量表示为,然后用摄动装置随机选择一个粒子并使该粒子的位置随机地发生微小的变化,以此来得到一个新的状态新状态的能量可表示为,如果,则新状态就可作为重要状态反之,若,考虑到热运动对能量的影响,则要根据固体处于该状态的概率来决定该新状态是否作为重要状态。概率的计算方法如下[]

(3.1)

 

表示该状态的概率,它是一个大于0的数,用随机数产生器产生一个区间的随机数§,若大于这个随机数§,则将新状态作为重要状态,否则将其舍去。表示新状态下的温度。为玻耳兹曼( Boltzmann)常数。若新状态是重要状态,就以新状态取代原有状态成为当前状态,否则依然以原有状态作为当前状态。然后不断重复上述产生新状态的过程。以此来保证在大规模固体状态变换后,系统仍处于能量较低的平衡状态。

根据的计算公式可知,在高温状态下可接受与当前状态能量差别较大的新状态作为重要状态,而在较低温度状态下只能接受与当前状态能量差别较小的新状态作为重要状态。这与实际生活中不同温度下热运动的影响完全一致。在度值趋近于零时,就不能接受任何的新状态了。

根据Metropolis准则,用固体退火过程模拟组合优化问题,设组合优化问题的一个解对应固体退火过程中的一个微观状态,组合优化问题的标函数对应固体退火过程中的一个微观状态的能量,将固体退火过程中的温度演化为称为冷却进度表的控制参数,这样就得到了求解组合优化问题的模拟退火算法由初始解和控制参数初值开始,对当前解不断地重复产生新解计算目标函数差接受/舍弃的迭代,这个迭代的过程对应着固体在某一温度下趋热平衡的过程,并逐步衰减控制参数的值,算法终止时的当前解即为所求最优解的近似值。退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值及其衰减因子每个的迭代次数和停比条件。由于固体退火的过程必须是徐徐降温,才能使固体在每个温度下都能够达到热平衡,最终才能趋于能量最小的基态,由此可见,控制参数的值也必须是缓慢衰减,才能确保模拟退火算法最终趋于组合优化问题的整体最优解集。

3.9本章小结

综上所述,运用传统的遗传算法求解0-1背包问题时,如果问题的规模不大,则传统的遗传算法是能够得到最优解或近似最优解的,但当求解的0-1背包问题的规模增大时,用传统的遗传算法不能得到比较理想的解。这是因为用传统的遗传算法在进行求解时,在早期的计算中,个体差异较大,后代产生的个数与父个体适应度大小成正比,因此在早期容易使个别好的个体的后代充斥整个种群,过快地收敛于某一局部极值处,造成早熟现象(Premature);而在传统遗传算法的后期,各染色体的适应度趋向一致,优秀的个体在产生后代时优势不明显,从而导致整个种群进化停滞不前(Stalling)直接影响了算法的收敛性。

模拟退火算法是通过模拟物理学中固体物质退火的过程来解决般组合优化问题的一种组合优化算法,即在某一初始温度,随着控制参数值的不断下降,结合Metropolis准则在解空间中随机寻找标函数的局最优解。也就是说,局部最优解能按照一定的概率跳出并最终趋全局最优解。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4改进的遗传退火算法

4.1 改进的遗传退火算法简介

在大量的求解大规模问题的实际应用中,传统的单一的搜索优化算法得到的优化结果往往不够理想,对多种算法进行混合的思想已经逐渐成为提高传统算法优化性能的一个重要且有效的途径。

遗传算法是基于适者生存的种高度并行随机和自适应的优化算法,在一定条件具有全局收敛特性,并广泛应用于机器学习、控制、优化等领域。但对于基本的遗传算法而言,在实际应用时,往往会出现早熟收敛和收敛性能差等缺点

模拟退火算法是在某一初温,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解。但对于基本的模拟退火算法而言,在实际应用中,当问题规模不可避免地增大时,返回一个高质量的近似解的时间花费将难以承受。

为了避免基本遗传算法和基本模拟退火算法的缺点,综合者的优点,参考文献[]提出了一种新的混合优化策略—-改进的遗传退火算法(Modified Genetic Algorithm and Simulated Annealing, MGASA) MGASA算法不仅对基本遗传算法和基本模拟退火算法进行了算法思想融合,还引入了机器学习原理,引入模拟退火算法作为遗传算法中的种群变异算子,并将模拟退火算法中Metropolis抽样过程与遗传算法相结合,不仅充分发挥了遗传算法并行搜索能力强的特点,而且增强和改进了遗传算法的进化能力另外,利用机器学习原理来指导种群的建立,使优化过程在很短时间内获得最优解,提高了系统的收敛性能和收敛速度同时,利用机器学习的记忆功能,避免了最优解的丢失。

4.2 改进的遗传退火算法基本思想

4.2.1 改进的遗传退火算法算法基本框架

MGASA算法综合了遗传算法的全局并行搜索能力强和模拟退火算法的局部串行搜索能力强的特点,采用并行和串行相结合的结构。外层在模拟退火算法产生的各个温度下进行遗传算法的操作内层对各子种群进行搜索,初始解来源遗传算法中的进化,模拟退火算法经Metropolis抽样过程得到的解又成为遗传算法中进行一步进化时的初始种群。这样的框架结构有效地避免了遗传算法易早熟和局部搜索能力不强的缺点,增强了算法的全局和局部搜索能力。

4.2.2 知识库的建立

知识库建立的合理性和信息的存储方式直接影响到信息的存储和提取速度,因此,建立一个合理的知识库,不仅能够提高数据的存储和提取速度,还能够合理分配资源,减少资源耗费。

(1)初始种群库。该库用来存储各种情况,最后一次迭代所产生的染色体群。由于遗传算法的整体进化性,使得最后一次迭代产生染色体群的平均适值最优,将这一结果记录下来,当再次进行优化计算时,将存储过的染色体群的部或一部分用做初始种群的一部分,使初始种群有一个较高的平均适值,从而能够有效地减少进化次数。

(2)种群分类库索引库。将次迭代后产生的种群划分为若干类,记录分类索引号。每类中平均适值较高的将作用在不同子种群交叉操作所产生的所有新个体,井与父代种群进行整体择优筛选,从而加速种群的进化过程。

(3)优化结果库。用来存储每次遗传算法优化计算后所得到的温度调节参数和最优解,以便再次遇到相同工况时可以直接检索到最优结果。

4.2.3 机器学习过程

基木遗传算法中选取的初始种群的好坏及多样,将会影响基本遗传算法的迭代次数和是否能达到最优解。根据这一特点,我们首先使用机器学习的方法来为遗传算法产生一部分初始群体,再利用随机产生的方式为遗传算法产生另一部分的初始群体,以此来提高初始群体的适应性和多样性,加快进化过程。此外,我们还将机器学习的方法加入到遗传交和变异中,即在遗传交叉和变异结束后使用机器学习的分类操作,将种群划分为若干类,作为模拟退火操作的初始种群

4.2.4 学习记忆功能

Metropolis等人在1953年提出的采样法就是以一定概率接受新产生的状态作为当前状态,即模拟退火算法中使用的Metropolis接受准则,在温度,由当前状态产生新状态,两者的能量分别为。若,则接受新状态为当前状态否则,若概率大于区间内的随机数,则仍接受新状态为当前状态,若不成立,则保留状态为当前状态,其中为玻耳兹曼常数。然而,在搜索过程中执行Metropolis概率接受准则时,不可避免地会遗失最优解[]。因此,MGASA算法引入机器学习方法中[]的记忆功能,将产生过的最优解存入知识库,在搜索过程中首先进行知识库的查询,以此来避免最优解的丢失,提高进化能力[]

4.2.5 模拟退火算法中的Metropolis抽样与遗传算法的混合

将模拟退火算法中的基于概率突跳的Metropolis抽样过程混合到遗传算法,可以对遗传算法中的变异操作进行概率控制操作,并可以通过模拟退火算法中的控制初温的操作来控制遗传算法初始搜索的行为控制温度的高低可以控制突跳能力的强弱,高温下的强突跳有利避免陷入局部极小,低温的趋化性有利于提高局部搜索能力控制降温速率可控制突跳能力的下降幅度控制抽样次数可控制各温度下的搜索能力,避免了变异概率难以选取克服了基本遗传算法易早熟收敛的缺点。

4.3 改进的遗传退火算法流程

MGASA算法基本流程如图3所示[]

3 改进算法流程

步骤1初始化算法参数。初温退温速率为

步骤2搜索知识库,判断是否有符合条件的最优解和初始种群。若有,则调用部分初始种群,并随机生成另部分,然后从数据库中调用最优解否则,随机生成初始种群。

步骤3评价当前种群的个体。

步骤4判断算法的收敛准则。如果满足,则转到步骤9否则,转到步骤5

步骤5随机选择个体与种群中的最优个体进行交又操作,产生新个体。如果新个体适值优于当前最优解,则进行种群更新否则,保留当前种群和最优解并分类存储到知识库。

步骤6对所有个体进行变异操作,保留最佳个体并划分为n个子种群作为SA的初始种群,同时进行种群更新和知识库更新,存储最优状态和温度调节参数。

步骤7个子种群的个体进行定步长抽样的模拟退火操作,以概率接受后代,更新种群和知识库。

步骤8进行退温操作转到步骤4

步骤9输出本次优化结果。

步骤10判断是否再次进行优化,若是则转到步骤2否则,转到步骤11

步骤11输出最终优化结果。

4.4本章小结

(1)MGASA算法增强了搜索效率。MGASA算法既具有基本遗传算法所具有的全局并行搜索能力,又具有模拟退火算法所具有的局部集中搜索能力,可以跳出局部极小。

(2)MGASA算法机器学习原理的引入。引入机器学习原理,将先前优化过的工艺流程存储起来,当再次遇到相同工况时,可以通过查询数据库直接获取结果,避免了重复计算,提高了算法的进化速度。如果对当前查询结果不满意,可以从先前存储的种群中抽取部分个体作为初始种群中的一部分,其余个体随机生成,既保证了初始种群的多样化,也使初始种群保持了较高的平均适值,使得优化迭代次数大大减少。

(3)MGASA算法增强进化能力。将最优解存入知识库,在搜索过程中首先查询知识库,避免了最优解的丢失,提高了进化能力。

 

 

 

 

 

 

 

5应用改进的遗传退火算法求解0-1背包问题

5.1 改进的遗传退火算法求解0-1背包问题算法结构

MGASA算法0-1背包问题中应用的流程图如图4所示。

4MGASA算法0-1背包问题中应用的流程图

5.2 改进的遗传退火算法求解0-1背包问题算法设计

改进的遗传退火算法(MGASA算法)应用到求解大规模0-1背包问题步骤如下

5.2.1 编码

依然采用传统遗传算法解决0-1背包问题时使用的编码方式,即根据物品是否放入背包,对各物品的状态进行0-1编码,得到

5.2.2适应度函数的选择

在使用MGASA算法求解0-1背包问题时,可能会产生不可行的解。为了解决解的不可行性,我们在适应度函数的构造中加入惩罚函数。当背包中放置的物品超过背包的容积时,对超出容积的部分处以惩罚。具体适应度函数的构造如式(5-1)和式(5-2)所示:

(5.1)

(5.2)

式中,是阀值函数,判断是否超出背包的容积。表示惩罚函数的权重,是一个大于零的实数,代表惩罚力度。

5.2.3遗传算子的确定

依然采用轮盘赌的方式进行染色体的选择,但事先对各染色体的适应值进行相应的处理,以此来防止适应度函数的值出现小于零的情况,也可以通过这样的事先处理在一定程度上防止各个染色体适应值之间的差别过大而丢失适应值较低的染色体中包含的有用信息。具体处理方式如下

(5.3)

交叉策略的选择:首先将迭代产生的种群划分为若干类,将根据轮盘赌方法选择出来的个体与同类的种群中平均适值较高的个体进行交叉,产生新个体。

变异策略的选择对种群中的所有个体进行变异操作,并保留最佳的个体划分为若干子种群作为模拟退火阶段的初始种群。

5.2.4初始种群的构建

首先搜索知识库,判断现有知识库中是否存在符合约束条件的最优解和初始种群。如果存在,则选择知识库中存在的初始种群的一部分作为初始种群,并以随机方式生成另一部分初始种群;如果现有知识库中不存在符合约束条件的初始种群,则全部以随机方法生成初始种群。

5.3应用改进的遗传退火算法解决0-1背包问题仿真实验

假设背包容量:,物品体积:,其价值是

5.3.1编码

基于背包问题的模型,我们设计了针对于背包问题的染色体编码方法:将待求解的各量表示成长为的二进制字符串表示物体不放入背包内,表示物体放入背包内。例如:1010代表一个解,它表示将第13号物体放入背包中,其它的物体则不放入。

5.3.2生成初始种群

本例中,群体规模的大小取为4,即群体由4个个体组成,每个个体可通过随机的方法产生。例如: 
a1 = [1, 1, 1, 1] 
a2 = [1, 0, 1, 0]
a3 = [1, 0, 0, 1] 
a4 = [1, 0, 0, 0]

5.3.3种群适应度计算

按照下列公式计算种群中个体适应度: 

(5.4)

         (5.5)

公式的下半部分即为适应度的惩罚函数,其中参数。在本例中我们取

a1 = [1, 1, 1, 1], totalSize = 14, totalValue = 19, fit = 9 
a2 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fit = 8 
a3 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fit = 10 
a4 = [1, 0, 0, 0], totalSize = 2, totalValue = 3, fit = 3

5.3.4选择

我们采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。其具体操作过程如下:

(1)先计算出群体中所有个体的适应度的总和

(2)其次计算出每个个体的相对适应度的大小。它即为每个个体被遗传到下一代群体中的概率;

(3)每个概率值组成一个区间,全部概率值之和为1

(4)最后再产生一个01之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体被选中的次数。 
  在本例中, 


  因此区间区间区间区间 
  经过4次选择,被选1次,被选2次,落选,被选1次: 
b1 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
b2 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10 
b3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
b4 = [1, 1, 1, 1], totalSize = 14, totalValue = 19, fitValue = 9

5.3.5交叉

本例采用单点交叉的方法,其具体操作过程是:

(1)先对群体进行随机配对;

(2)其次随机设置交叉点位置;

(3)最后再相互交换配对染色体之间的部分基因。 
  在本例中, 
在第3位后交叉,生成: 
c1 = [1, 0, 1, 1], totalSize = 11, totalValue = 15, fitValue = 11 
c2 = [1, 1, 1, 0], totalSize = 9, totalValue = 12, fitValue = 12 
在第2位后交叉,生成: 
c3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
c4 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10

5.3.6突变

我们采用基本位变异的方法来进行变异运算,其具体操作过程是: 

(1)首先确定出各个个体的基因变异位置;

(2)然后依照某一概率将变异点的原有基因值取反。 
  本例中,的第1位发生突变: 
c1 = [0, 0, 1, 1], totalSize = 9, totalValue = 12, fitValue = 12 
c2 = [1, 1, 1, 0], totalSize = 9, totalValue = 12, fitValue = 12 
c3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
c4 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10 
  至此,我们已经找到了2个最优解

下面给出一个例子,对MGASA算法0-1背包问题中的应用性能来进行初步的实验[]

假设50个物品的体积Size、物体的价值Value和背包的容量C分别为: 
Size={ 80828570727066505525  
50554048503222603032  
40383532252830225030  
4530605020 6520253010  
2025151010 104421 }

Value={ 220208198192180180165162160158 
155130125122120 118115110105101 
1001009896959088828077  
75737270696665636058 
5650302015108531}

C=1000 
  如何选择哪些物品装入该背包可使得在背包的容量约束限制之内所装物品的总价值最大
退火算法所得结果:总价值为3103, 总重量为1000。最大迭代次数为400次。 
遗传算法所得结果:总价值为3077 , 总重量为999 
改进的遗传退火算法所得结果:总价值为3103, 总重量为1000。最大迭代次数为75次。 
  我们所求得最优解的个体分配情况为: 
11010 10111 10110 11011 01111 11101 00001 01001 10000 01000

根据MGASA算法编制程序[],在VC++环境下编译运行,并把计算结果与退火算法和遗传算法的实验结果进行比较。

当终止代数设为500,交义概率设为0.6,变异概率设为0.1,并进行了1 000次计算后,计算出来的最好结果如表1所示。

1 各算法的最好结果

算法

最好个体

求解结果(总价值/总体积)

退火算法

11111111011010011011001111010000001010010000000001

3036/999

遗传算法

11011011111010011011111111010000001010011000000011

3077/999

MGASA

11010101111011011011011111110100001010011000001000

3103/1000

 

5.4本章小结

由上述结果可知,利用MGASA算法求解典型的0-1背包问题,既克服了传统算法的早熟收敛,又增加了种群的适值,避免了最优解的丢失,极大地加快了进化速度。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

本文对改进的遗传退火算法及其在0-1背包问题中的应用进行了研究,在遗传算法和退火算法的基础上,针对在编码操作、选择操作和降温操作中存在的不足进行了如下改进

(1)在编码操作中,为了避免繁琐的编码采取了二进制编码,提高了该算法的计算效率。

(2)针对遗传算法中的进化缓慢容易陷入局部最优而提前收敛等问题,在进行选择操作是将轮盘赌选择和最优解保存策略选择结合起来,既保证了进化速度,又保证了算法的收敛性。

(3)退火过程中一般的降温过程过快而有可能得不到全局最优解,针对这一问题,采用了改进的降温函数,使得降温过程较为缓慢,从而能够得到更多的性能更好的解,尤其是在进化一定代数之后,逐步逼近最优解,这个时候需要降温越来越慢,这样有利于搜索到全局最优解,这是一般的降温函数无法满足的。

最后结合实例,并且通过改进的遗传退火算法对建立起的数学模型进行优化求解。结果证明它能够可靠地在不同种群规模的0-1背包问题中找到最优或近似最优方案。通过对实验结果的对比分析,验证了改进的遗传退火算法的有效性和优异性。

    0-1问题的研究是一个广泛而复杂的课题,本文在这方面的研究虽取得了一定的成果,但由于本人的研究时间、知识水平均有限,论文中的研究存在许多有待改进完善的地方,尚需进一步研究和解决。

(1)模拟退火自身存在许多不足和有待改进的地方,如增加升温或重升温过程,在算法进程的适当时机,将温度适当提高,从而可激活各状态的接受概率,以调整搜索进程中的当前状态,这样就能有效避免算法在局部极小解处停滞不前

(2)算法参数的合理性还需要进一步进行研究论证等等

 

 

参考文献

                                                          

 

 

 

 

JISHOUUNIVERSITY

 

 

本科生毕业设计

 

 

题    目:

基于改进遗传退火算法的0-1背包问题设计与实现

作    者:

秦峰

学   号:

20144042001

所属学院:

         信息科学与工程学院

专业年级:

      计算机科学与技术,2014级

指导教师:

周凯卿

职  称:

讲师

完成时间:

2018年 05 月 04 日

 

 

吉首大学教务处制


   

  I

Abstract II

1 1

1.1课题研究的背景和目的 1

1.2背包问题研究现状 1

1.3本文的研究内容和设计结构 2

2章 0-1背包问题 3

2.10-1背包问题简介 3

2.20-1背包问题模型 3

2.3 本章小结 4

3章 遗传算法和退火算法 5

3.1 遗传算法简介 5

3.2 遗传算法基本思想 5

3.3 遗传算法基本步骤 6

3.4 遗传算法相关术语 7

3.5 应用传统的遗传算法求解0-1背包问题 9

3.6 退火算法简介 12

3.7 退火算法基本思想 12

3.8 退火算法基本步骤 12

3.9 本章小结 14

4改进的遗传退火算法 15

4.1 改进的遗传退火算法简介 15

4.2 改进的遗传退火算法基本思想 15

4.3 改进的遗传退火算法流程 17

4.4 本章小结 19

5应用改进的遗传退火算法求解0-1背包问题 20

5.1 改进的遗传退火算法求解0-1背包问题算法结构 20

5.2 改进的遗传退火算法求解0-1背包问题算法设计 21

5.3 应用改进的遗传退火算法解决0-1背包问题仿真实验 22

5.4 本章小结 25

  26

参考文献 27

 

 

 

 


基于改进遗传退火算法的0-1背包问题设计与实现

 

该算法结合了遗传算法和模拟退火算法的优点,并有效克服了各自的缺点,在性能优化,效率优化和可靠性方面具有显著的优势使用本算法求解不同种群规模的0-1背包问题,数值实验结果表明,算法具有较快的收敛速度,又能够收敛到最优解,优于遗传算法和模拟退火算法。

关键词:遗传算法;模拟退火;0-1背包问题

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Design and Implementation of 0-1 Knapsack Problem Based on Modified Genetic Algorithm and Stimulated Annealing

Abstract

This algorithm combines the advantages of genetic algorithm and simulated annealing algorithm, and effectively overcomes their shortcomings. It has significant advantages in performance optimization, efficiency optimization and reliability. This algorithm is used to solve 0-1 knapsack problem with different population sizes. Numerical experiments show that the algorithm not only has faster convergence speed, but also converges to the optimal solution, which is better than genetic algorithm and simulated annealing algorithm.

Key words: Genetic AlgorithmSimulated Annealing0-1 knapsack problem

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


1

1.1课题研究的背景和目的

针对传统的遗传算法在求解大规模0-1背包问题时存在的早熟收敛和收敛性能不稳定的特点,提出了一种新的混合优化算法,即MGASA。该算法将模拟退火的思想和遗传算法相结合,在算法的外层进行各个温度下的遗传算法操作,在算法内层进行各个子种群的搜索,使得算法的全局并行搜索能力和局部串行搜索能力都得到了增强,同时利用模拟退火算法中的Metropolis概率突跳抽样过程,对传统遗传算法中的变异操作以一定概率进行控制,避免出现早熟现象利用原有的数据和资源建立一个合理的知识库,依靠机器对知识库的学习能力对初始种群的建立进行指导,对迭代产生的种群进行分类,选择每类中平均适值最高的作为所有子种群交叉产生的新个体,加速种群进化,避免收敛速度过慢的情况;MGASA还引入了机器学习的记忆功能,将进行串行搜索过程中出现的最优解存入知识库,有效地避免模拟退火算法在串行搜索过程中最优解的丢失,提高种群的进化能力。

1.2背包问题研究现状

对于0-1背包问题来说,现阶段己有的求解算法可分为精确求解算法和近似求解算法两大类。

20世纪50年代中期,Dantzig[]首先利用贪婪算法求得了0-1背包问题的一个理想解,并得出了0-1背包问题最优解的上界,这是一项具有开创性的研究。在之后的20多年里,Dantzig求得的上界并未得到改进,对于0-1背包问题的研究也没有取得太大进展。直到1974年,HorowitzSahni[]才提出0-1背包问题的可分性,并利用分支定界技术设计出了一种有效求解0-1背包问题的算法,指明了求解该类问题的一条新道路。1980年,BalasZemel[]创造性地提出求解0-1背包问题的(Core)思想,使该问题的研究有了跨越性的进展。在进入20世纪90年代以后,智能生物仿生技术和Internet技术的迅速发展,使得模拟生物、物理规律的各种并行近似算法不断涌现,遗传算法已经在0-1背包问题上得到较好的应用,蚁群算法、粒子群算法等智能仿生算法也在各种组合优化问题中得到了应用[]

1.3本文的研究内容和设计结构

  本论文共分为五章,具体组织结构如下:

  第1章:绪论。本章主要介绍了基于改进遗传退火算法的0-1背包问题的研究背景及其意义,0-1背包问题的研究现状,阐述了本文的主要研究内容,目的和设计结构

  第2章:0-1背包问题简介和模型。对0-1背包问题进行分析,建立数学模型。

  第3章:遗传算法和退火算法简介。概述遗传算法和退火算法的基

概念,主要思想等;介绍了遗传算法和退火算法的基本步骤等。

  第4章:改进的遗传退火算法简介。概述改进的遗传退火算法的基本概念,主要思想以及其优点等;介绍了改进的遗传退火算法的基本步骤,主要流程等。

  第5章:应用改进的遗传退火算法求解0-1背包问题。根据0-1背包问题的特点,设计出改进遗传退火算法,最后运用改进的遗传退火算法对0-1背包问题的数学模型进行仿真实验来验证其可行性。最后,全文的总结以及对未来研究工作的展望。

 

 

 

 

 

 

 

 

 

 

 

 

 

2章 0-1背包问题

2.1 0-1背包问题简介

0-1背包(0-1 Knapsack Problem, KP)是一个非常典型NPC( Non-deterministic Polynomial Complete)优化问题[],在运筹学中的预算控制、项目选择、材料切割、货物装载等实践中有大量的应用,而且0-1背包问题还常常作为其他问题的子问题进行研究[]。除此之外,随着计算机应用的日益广泛、网络的迅速普及,基于背包问题的背包公钥密码在电子商务的公钥设计中也渐渐占有重要位置。公钥密码这个概念由DiffeHellmein1976年提出,两年之后,Merkle Hellmein设计出了第一个公钥密码体基于背包问题的MH背包公钥密码。因此,解决背包问题具有很高的实用性。

2.2 0-1背包问题模型

0-1背包问题的经典描述如下:假设存在个物件,是一个1之间的整数,每个物件都有其所对应的价值,每个物件也都有其所对应的体积,整个背包的容积用来表示,那么0-1背包问题就是如何能在不超过背包容积的前提下,装入总价值最大的物件。背包问题描述如图1所示。

1背包问题的描述

 

0-1背包问题的严格数学描述如下

(2.1)

这里的表示是否选择第个物品装入背包。如果没有装入该物品,则反之如果选择装入该物品,则函数用来计算装入背包的物品的总价值。当时,即为多维背包问题。由上述数学描述可以看出,本质上,背包问题是一个整数规划问题。

从实际应用的角度来看,0-1背包问题是一个很经典的组合优化问题。一般来说,组合优化( Optimization Problem)由目标函数(Objective Function)和约束条件(Constraints)两部分构成,数学表达如下:

(2.2)

将满足所有约束条件的解空间S称为可行域(Feasible Region),可行域中的解称为可行解(Feasible Solution),将可行域中使目标函数最小的解称为最优解( Optimal Solution)

2.3 本章小结

对于最大化问题,可将目标函数乘以转化为最小化问题求解。当为离散集合构成的解空间时,这类最优化问题称为组合最优化问题( Combinatorial Optimization Problem)。严格意义上的最优解求取非常困难,研究高速近似的算法是一个重要的发展方向。

 

 

 

 

 

 

 

 

 

    3章 遗传算法和退火算法

3.1 遗传算法简介

遗传算法(Genetic AlgorithmGA)1975年由美国密歇根大学的J. Holland教授等人受生物进化论的启发而提出[]。遗传算法是以自然界中的生物进化过程为背景,将生物进化过程中的繁殖选择杂交变异和竞争等概念引入算法中。它的基思想来源于自然界中的生物从低级简单,发展到高级复杂,乃至进化成人类这样一个漫长的进化过程,借鉴了达尔文提出的物竞天择、优胜劣汰、适者生存的自然法则。遗传算法的本质是一种对问题进行高效全局搜索的法,在搜索过程中有效地利用己有信息来自动获取和积累有关搜索空间的知识,并自适应地控制搜索方向使其最终走向最优解。

3.2 遗传算法基本思想

遗传算法是一种借鉴自然界中的生物进化原理而产生的高度并行自适应随机的全局搜索算法。它把生物进化过程中的自然选择优胜劣汰适者生存和遗传变异的思想应用到在求解空间搜索最优解的问题上,是一种多参数多群体的并行优化方法。

由于遗传算法的思想简单,易于实现以及良好的寻优能力,使它在诸多领域得到了广泛的应用,在过去的几十年里,遗传算法已经在数据挖掘、生产调度、图像处理以及函数优化等领域取得了令人欢欣鼓舞的成就,证明了其良好的性能。近年来,遗传算法被应用到越来越多的专业领域中。例如,对于复杂的多标规划问题人工生命及神经网络问题机器学习问题智能控制问题等,遗传算法都是最有效的求解法之一。

遗传算法的生物学基础:按照达尔文的进化论[]观点,在自然界中的每一种生物从诞生开始就进入漫长而美妙的进化过程,其进化过程是由低级简单到高级复杂。各种生物要继续生存,就必须进行长期而复杂的生存斗争,这其中包括同一个种群内部生物之间的斗争不同种群之间的生物斗争生物和自然界无机环境之间的斗争。在斗争过程中,适应能力差的个体被淘汰,或者繁衍后代的机会越来越少,直至最终消亡;而适应能力强的个体继续存活的概率大,并有较多的机会来繁衍后代。达尔文把这一现象称为物竞天择适者生存,达尔文正是用自然选择学说(Natural Selection)来解释物种起源和生物进化的。

达尔文的自然选择学说概括为以下三个主要方面

(1)遗传( Heredity)。这是自然界中生物的最普遍特征,种瓜得瓜,种豆得豆,亲代把生物信息传递给子代,子代按照所得信息而发育生长分化,因而子代总是其有和亲代相同的或相似的性状。正因为生物具有了这个特征,物种才能稳定存在井持续发展。

(2)变异( Variation)。亲代和子代之间以及子代的不同个体之间总会有些不同,这种现象称为变异。变异是在进化过程中随机发生的,变异的选择和积累最终形成了生命的多样性。

(3)生存斗争和适者生存。繁殖过剩和生存斗争造成了自然选择。由于弱肉强食的自然法则一直存在,其结果是适应者生存,不适者淘汰,具有适应性变异的那些个体被保留下来,而不具有适应性变异的那些个体则被淘汰,一代代的生物通过生存环境的选择作用,物种变异定向地朝一个方向积累,于是外观性状逐渐和原先的祖先出现差异,从而演变为新的物种。这种自然选择的过程是一个长期的连续的缓慢而美妙的过程。

世人皆知,生长繁殖新陈代谢遗传与变异是生命的几大基本特征。也就是说,生命是经过长期的不懈进化而产生的,现代的生物是在长期进化过程中衍变过来的。

3.3 遗传算法基本步骤

(1)初始化群体。随机产生种群规模大小个体作为初始种群,确定交叉概率,变异概率的值,适应度函数等。

(2)编码及个体适应度评价。选择符合实际情况的变量对种群规模大小的个体进行编码(通常采用的编码方式是二进制编码,一条染色体对应一个解的编码),并依据适应度函数计算当代种群中编码后各个体的适应值。

(3)算法终止条件的判断。判断算法是否符合终止条件,若满足则转到(8),否则顺序执行。

(4)选择操作。将适应度高的优良个体以更大概率遗传到子代,而适应度差的劣势个体则以小概率复制到下一代,通常采用的选择操作作为轮盘赌算法,它是按照个体适应度值在当代种群中适应度值的比例作为选择概率来进行选择操作的。

(5)交叉操作。它是通过某种规则选择两条染色体作为父代。随机产生交叉点,以给定的交叉概率将其交叉点基因交换,从而产生两个新个体(子代)的过程。

(6)变异操作。变异是基因中的某一点或是多个点以一定的概率产生突变,从而让相应解的编码发生变化,这保证了解的多样性,即使得解具有更大的遍历性。

(7)对子代群体重复步骤(3)~(6)。进入新一轮的遗传迭代进化操作。

(8)进过不断的进化迭代,将会得到一个最优的个体,该个体就可以作为问题的最优解或近似最优解输出,算法终止。

3.4 遗传算法相关术语

(1)演化代

演化代就是算法迭代的步数。

(2)个体

个体是组成群体的一个解,对应GA中的生物染色体编码后为一个位串

(3)种群

种群是指由一定数量的个体染色体所组成的集合,该集合包含了待求解问题的多个解集,通常记作 如初始群体通常记作 

(4)种群规模

种群规模是指一个种群中所包含的个体数量,一般记作,通常情况下,它在整个演化迭代进化过程中是保持不变的。

(5)染色体

染色体是指通过编码而得到的能够表示问题解的一个位串。而带有特征的染色体实体就是个体。因此个体是染色体的具体化。它也是遗传物质的主要信息载体。

(6)位串

位串是个体的一种表现形式,常见的有二进制串。

(7)基因

基因是代表物质遗传信息的基本单位,它是构成染色体的最小单位

(8)基因

基因型是决定染色体性状的内因,即染色体的内部表现形式。

(9)表现型

表现型是指染色体性状的外在表现。内因决定外因,因此其基因型决定个体的表现型。

(10)适应度

适应度是指某个体对其生存环境的适应能力强弱。

(11)平均适应度

平均适应度是指多个个体适应值的算术平均值。

(12)父代子代

依据某种遗传规则,由当代个体产生新一代个体。则当代个体就成为父代,产生的新一代个体就称之为子代。

(13)选择

选择是指从当代种群中选择对环境适应能力强的个体作为父代来产生新种群的过程。选择又称之为复制,它是根据个体的适应值在当代中总适应度值中的比例来决定其是否被淘汰。适应值较大的个体更有可能被选择到新一代种群中,适应值较小的个体被遗传到下一代的可能性就相对小一些。

(14)交叉

交叉是指通过选择较优个体作为的父代个体,并以一定的交叉概率进行遗传学的基因重组从而产生新个体的过程。

(15)变异

变异是由于某种人为或非人为因素引起染色体的某基因位或基因片断突变,进而产生不同染色体的过程。它使得生物体子代与父代之间存在差异,保证了物种的多样性,也即使问题的搜索空间扩大,保证了算法最终能够逼近最优或者近似最优解。

(16)遗传算子

常见的遗传算子有选择算子交叉算子变异算子等。

(17)编码

编码是指将待解决问题的表现型映射到基因型的过程。

(18)解码

编码的逆过程。将基因型映射到问题的表现型的映射。

3.5 应用传统的遗传算法求解0-1背包问题

遗传算法己经在0-1背包问题的求解上取得了大量成果。对于0-1背包问题,利用传统遗传算法求解的基本步骤如下[]

3.5.1 编码

使用遗传算法解决0-1背包问题时,可以直接利用变量进行编码,即。若选择物品放入背包,则;若未选择物品放入背包,则

3.5.2适应度函数

(3.1)

根据式(3-1)[]使用遗传算法计算0-1背包问题时,可以选择下式作为染色体的适应度函数。

(3.2)

利用式(3-1)中的约束条件,首先判断产生的染色体能否全部为1,即个物品能否全部放入背包中。若能够全部放入,则将全部为1的种群作为最优解输出,并停止计算若不能,则通过随机方法产生一些新的且符合约束条件的染色体种群,将其作为初始种群。

3.5.3遗传算子

选择0-1背包问题中,对于种群中染色体的选择,采用轮盘赌的方式进行选择。

交叉采用单点交叉的方式进行染色体的交叉,即随机选取染色体中的一个点与另一个染色体中的一个点进行交叉,产生新的染色体。

变异可以选取一个较小的值作为染色体变异的概率,如0.05

使用传统遗传算法解决0-1背包问题的流程如图2所示。

2 使用传统遗传算法解决0-1背包问题的流程

3.6 退火算法简介

模拟退火算法是近年来应用比较广泛的智能优化算法之一。模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却。加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在个温度都达到平衡态,最后在常温时达到基态,内能减为最小。

3.7 退火算法基本思想

模拟退火算法的思想源于对固体退火过程的模拟,同时综合了统计物理学的知识和局部搜索方法,固体退火过程的物理图像和统计性质是退火算法的物理背景,固体退火即先将固体加热至熔化,再徐徐冷却使之凝固成规整晶体的热力学过程。

在对固体进行加热时,固体中粒子的热运动越来越剧烈,随着温度的升高,粒子与其平衡之间的未知偏离越来越大。当温度上升到固体物质的熔解温度后,固体物质原有的规则性被彻底破坏,物质由固体状态转化为液体状态,粒子间的排列也由原有的有序的结晶状态转化为无序的液体状态,这一过程即通常所说的熔解过程。对固体进行熔解是为了消除原有的固体系统中可能存在的非均匀状态,保证随后进行的冷却过程是以一个平衡点作为起始点的。固体的熔解过程与固体系统的增过程之间是相互联系的,在熔解过程中,固体系统的能量也随温度的升高而增加。

冷却过程与熔解过程恰恰相反,在对熔解得到的液体进行冷却时,液体中粒子的热运动在逐渐减弱,并随着温度的慢慢降低,液体中粒子的运动也逐渐趋于有序。当冷却温度降低至物质的结晶温度后,粒子的热运动转变成围绕着晶体中各点的微弱振动,此时,物质由液体状态转变成固体的结晶态,述过程即成为退火。为了保证退火过程中物质系统在每个温度下都能够达到平衡态并最终回归固体的基态,退火的过程必须是徐徐进行的。在退火的过程中,物质系统的熵值是不断减小的,系统的能量也是随着温度的降低逐渐趋于最小值。如果在冷却过程中温度急剧降低,则会引起淬火效应,即固体只能凝固为均匀的亚稳态,系统的能量也不能达到最小值[]

3.8 退火算法基本步骤

模拟退火算法采用的防止陷入局部最优的接受准则是Metropolis等人于1953年提出的Metropolis准则,该准则的详细描述如[]首先,假定给定的以粒子相对位置为表征的初始状态表示为物质当前状态为固态,则物质在该状态下的能量表示为,然后用摄动装置随机选择一个粒子并使该粒子的位置随机地发生微小的变化,以此来得到一个新的状态新状态的能量可表示为,如果,则新状态就可作为重要状态反之,若,考虑到热运动对能量的影响,则要根据固体处于该状态的概率来决定该新状态是否作为重要状态。概率的计算方法如下[]

(3.1)

 

表示该状态的概率,它是一个大于0的数,用随机数产生器产生一个区间的随机数§,若大于这个随机数§,则将新状态作为重要状态,否则将其舍去。表示新状态下的温度。为玻耳兹曼( Boltzmann)常数。若新状态是重要状态,就以新状态取代原有状态成为当前状态,否则依然以原有状态作为当前状态。然后不断重复上述产生新状态的过程。以此来保证在大规模固体状态变换后,系统仍处于能量较低的平衡状态。

根据的计算公式可知,在高温状态下可接受与当前状态能量差别较大的新状态作为重要状态,而在较低温度状态下只能接受与当前状态能量差别较小的新状态作为重要状态。这与实际生活中不同温度下热运动的影响完全一致。在度值趋近于零时,就不能接受任何的新状态了。

根据Metropolis准则,用固体退火过程模拟组合优化问题,设组合优化问题的一个解对应固体退火过程中的一个微观状态,组合优化问题的标函数对应固体退火过程中的一个微观状态的能量,将固体退火过程中的温度演化为称为冷却进度表的控制参数,这样就得到了求解组合优化问题的模拟退火算法由初始解和控制参数初值开始,对当前解不断地重复产生新解计算目标函数差接受/舍弃的迭代,这个迭代的过程对应着固体在某一温度下趋热平衡的过程,并逐步衰减控制参数的值,算法终止时的当前解即为所求最优解的近似值。退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值及其衰减因子每个的迭代次数和停比条件。由于固体退火的过程必须是徐徐降温,才能使固体在每个温度下都能够达到热平衡,最终才能趋于能量最小的基态,由此可见,控制参数的值也必须是缓慢衰减,才能确保模拟退火算法最终趋于组合优化问题的整体最优解集。

3.9本章小结

综上所述,运用传统的遗传算法求解0-1背包问题时,如果问题的规模不大,则传统的遗传算法是能够得到最优解或近似最优解的,但当求解的0-1背包问题的规模增大时,用传统的遗传算法不能得到比较理想的解。这是因为用传统的遗传算法在进行求解时,在早期的计算中,个体差异较大,后代产生的个数与父个体适应度大小成正比,因此在早期容易使个别好的个体的后代充斥整个种群,过快地收敛于某一局部极值处,造成早熟现象(Premature);而在传统遗传算法的后期,各染色体的适应度趋向一致,优秀的个体在产生后代时优势不明显,从而导致整个种群进化停滞不前(Stalling)直接影响了算法的收敛性。

模拟退火算法是通过模拟物理学中固体物质退火的过程来解决般组合优化问题的一种组合优化算法,即在某一初始温度,随着控制参数值的不断下降,结合Metropolis准则在解空间中随机寻找标函数的局最优解。也就是说,局部最优解能按照一定的概率跳出并最终趋全局最优解。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4改进的遗传退火算法

4.1 改进的遗传退火算法简介

在大量的求解大规模问题的实际应用中,传统的单一的搜索优化算法得到的优化结果往往不够理想,对多种算法进行混合的思想已经逐渐成为提高传统算法优化性能的一个重要且有效的途径。

遗传算法是基于适者生存的种高度并行随机和自适应的优化算法,在一定条件具有全局收敛特性,并广泛应用于机器学习、控制、优化等领域。但对于基本的遗传算法而言,在实际应用时,往往会出现早熟收敛和收敛性能差等缺点

模拟退火算法是在某一初温,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解。但对于基本的模拟退火算法而言,在实际应用中,当问题规模不可避免地增大时,返回一个高质量的近似解的时间花费将难以承受。

为了避免基本遗传算法和基本模拟退火算法的缺点,综合者的优点,参考文献[]提出了一种新的混合优化策略—-改进的遗传退火算法(Modified Genetic Algorithm and Simulated Annealing, MGASA) MGASA算法不仅对基本遗传算法和基本模拟退火算法进行了算法思想融合,还引入了机器学习原理,引入模拟退火算法作为遗传算法中的种群变异算子,并将模拟退火算法中Metropolis抽样过程与遗传算法相结合,不仅充分发挥了遗传算法并行搜索能力强的特点,而且增强和改进了遗传算法的进化能力另外,利用机器学习原理来指导种群的建立,使优化过程在很短时间内获得最优解,提高了系统的收敛性能和收敛速度同时,利用机器学习的记忆功能,避免了最优解的丢失。

4.2 改进的遗传退火算法基本思想

4.2.1 改进的遗传退火算法算法基本框架

MGASA算法综合了遗传算法的全局并行搜索能力强和模拟退火算法的局部串行搜索能力强的特点,采用并行和串行相结合的结构。外层在模拟退火算法产生的各个温度下进行遗传算法的操作内层对各子种群进行搜索,初始解来源遗传算法中的进化,模拟退火算法经Metropolis抽样过程得到的解又成为遗传算法中进行一步进化时的初始种群。这样的框架结构有效地避免了遗传算法易早熟和局部搜索能力不强的缺点,增强了算法的全局和局部搜索能力。

4.2.2 知识库的建立

知识库建立的合理性和信息的存储方式直接影响到信息的存储和提取速度,因此,建立一个合理的知识库,不仅能够提高数据的存储和提取速度,还能够合理分配资源,减少资源耗费。

(1)初始种群库。该库用来存储各种情况,最后一次迭代所产生的染色体群。由于遗传算法的整体进化性,使得最后一次迭代产生染色体群的平均适值最优,将这一结果记录下来,当再次进行优化计算时,将存储过的染色体群的部或一部分用做初始种群的一部分,使初始种群有一个较高的平均适值,从而能够有效地减少进化次数。

(2)种群分类库索引库。将次迭代后产生的种群划分为若干类,记录分类索引号。每类中平均适值较高的将作用在不同子种群交叉操作所产生的所有新个体,井与父代种群进行整体择优筛选,从而加速种群的进化过程。

(3)优化结果库。用来存储每次遗传算法优化计算后所得到的温度调节参数和最优解,以便再次遇到相同工况时可以直接检索到最优结果。

4.2.3 机器学习过程

基木遗传算法中选取的初始种群的好坏及多样,将会影响基本遗传算法的迭代次数和是否能达到最优解。根据这一特点,我们首先使用机器学习的方法来为遗传算法产生一部分初始群体,再利用随机产生的方式为遗传算法产生另一部分的初始群体,以此来提高初始群体的适应性和多样性,加快进化过程。此外,我们还将机器学习的方法加入到遗传交和变异中,即在遗传交叉和变异结束后使用机器学习的分类操作,将种群划分为若干类,作为模拟退火操作的初始种群

4.2.4 学习记忆功能

Metropolis等人在1953年提出的采样法就是以一定概率接受新产生的状态作为当前状态,即模拟退火算法中使用的Metropolis接受准则,在温度,由当前状态产生新状态,两者的能量分别为。若,则接受新状态为当前状态否则,若概率大于区间内的随机数,则仍接受新状态为当前状态,若不成立,则保留状态为当前状态,其中为玻耳兹曼常数。然而,在搜索过程中执行Metropolis概率接受准则时,不可避免地会遗失最优解[]。因此,MGASA算法引入机器学习方法中[]的记忆功能,将产生过的最优解存入知识库,在搜索过程中首先进行知识库的查询,以此来避免最优解的丢失,提高进化能力[]

4.2.5 模拟退火算法中的Metropolis抽样与遗传算法的混合

将模拟退火算法中的基于概率突跳的Metropolis抽样过程混合到遗传算法,可以对遗传算法中的变异操作进行概率控制操作,并可以通过模拟退火算法中的控制初温的操作来控制遗传算法初始搜索的行为控制温度的高低可以控制突跳能力的强弱,高温下的强突跳有利避免陷入局部极小,低温的趋化性有利于提高局部搜索能力控制降温速率可控制突跳能力的下降幅度控制抽样次数可控制各温度下的搜索能力,避免了变异概率难以选取克服了基本遗传算法易早熟收敛的缺点。

4.3 改进的遗传退火算法流程

MGASA算法基本流程如图3所示[]

3 改进算法流程

步骤1初始化算法参数。初温退温速率为

步骤2搜索知识库,判断是否有符合条件的最优解和初始种群。若有,则调用部分初始种群,并随机生成另部分,然后从数据库中调用最优解否则,随机生成初始种群。

步骤3评价当前种群的个体。

步骤4判断算法的收敛准则。如果满足,则转到步骤9否则,转到步骤5

步骤5随机选择个体与种群中的最优个体进行交又操作,产生新个体。如果新个体适值优于当前最优解,则进行种群更新否则,保留当前种群和最优解并分类存储到知识库。

步骤6对所有个体进行变异操作,保留最佳个体并划分为n个子种群作为SA的初始种群,同时进行种群更新和知识库更新,存储最优状态和温度调节参数。

步骤7个子种群的个体进行定步长抽样的模拟退火操作,以概率接受后代,更新种群和知识库。

步骤8进行退温操作转到步骤4

步骤9输出本次优化结果。

步骤10判断是否再次进行优化,若是则转到步骤2否则,转到步骤11

步骤11输出最终优化结果。

4.4本章小结

(1)MGASA算法增强了搜索效率。MGASA算法既具有基本遗传算法所具有的全局并行搜索能力,又具有模拟退火算法所具有的局部集中搜索能力,可以跳出局部极小。

(2)MGASA算法机器学习原理的引入。引入机器学习原理,将先前优化过的工艺流程存储起来,当再次遇到相同工况时,可以通过查询数据库直接获取结果,避免了重复计算,提高了算法的进化速度。如果对当前查询结果不满意,可以从先前存储的种群中抽取部分个体作为初始种群中的一部分,其余个体随机生成,既保证了初始种群的多样化,也使初始种群保持了较高的平均适值,使得优化迭代次数大大减少。

(3)MGASA算法增强进化能力。将最优解存入知识库,在搜索过程中首先查询知识库,避免了最优解的丢失,提高了进化能力。

 

 

 

 

 

 

 

5应用改进的遗传退火算法求解0-1背包问题

5.1 改进的遗传退火算法求解0-1背包问题算法结构

MGASA算法0-1背包问题中应用的流程图如图4所示。

4MGASA算法0-1背包问题中应用的流程图

5.2 改进的遗传退火算法求解0-1背包问题算法设计

改进的遗传退火算法(MGASA算法)应用到求解大规模0-1背包问题步骤如下

5.2.1 编码

依然采用传统遗传算法解决0-1背包问题时使用的编码方式,即根据物品是否放入背包,对各物品的状态进行0-1编码,得到

5.2.2适应度函数的选择

在使用MGASA算法求解0-1背包问题时,可能会产生不可行的解。为了解决解的不可行性,我们在适应度函数的构造中加入惩罚函数。当背包中放置的物品超过背包的容积时,对超出容积的部分处以惩罚。具体适应度函数的构造如式(5-1)和式(5-2)所示:

(5.1)

(5.2)

式中,是阀值函数,判断是否超出背包的容积。表示惩罚函数的权重,是一个大于零的实数,代表惩罚力度。

5.2.3遗传算子的确定

依然采用轮盘赌的方式进行染色体的选择,但事先对各染色体的适应值进行相应的处理,以此来防止适应度函数的值出现小于零的情况,也可以通过这样的事先处理在一定程度上防止各个染色体适应值之间的差别过大而丢失适应值较低的染色体中包含的有用信息。具体处理方式如下

(5.3)

交叉策略的选择:首先将迭代产生的种群划分为若干类,将根据轮盘赌方法选择出来的个体与同类的种群中平均适值较高的个体进行交叉,产生新个体。

变异策略的选择对种群中的所有个体进行变异操作,并保留最佳的个体划分为若干子种群作为模拟退火阶段的初始种群。

5.2.4初始种群的构建

首先搜索知识库,判断现有知识库中是否存在符合约束条件的最优解和初始种群。如果存在,则选择知识库中存在的初始种群的一部分作为初始种群,并以随机方式生成另一部分初始种群;如果现有知识库中不存在符合约束条件的初始种群,则全部以随机方法生成初始种群。

5.3应用改进的遗传退火算法解决0-1背包问题仿真实验

假设背包容量:,物品体积:,其价值是

5.3.1编码

基于背包问题的模型,我们设计了针对于背包问题的染色体编码方法:将待求解的各量表示成长为的二进制字符串表示物体不放入背包内,表示物体放入背包内。例如:1010代表一个解,它表示将第13号物体放入背包中,其它的物体则不放入。

5.3.2生成初始种群

本例中,群体规模的大小取为4,即群体由4个个体组成,每个个体可通过随机的方法产生。例如: 
a1 = [1, 1, 1, 1] 
a2 = [1, 0, 1, 0]
a3 = [1, 0, 0, 1] 
a4 = [1, 0, 0, 0]

5.3.3种群适应度计算

按照下列公式计算种群中个体适应度: 

(5.4)

         (5.5)

公式的下半部分即为适应度的惩罚函数,其中参数。在本例中我们取

a1 = [1, 1, 1, 1], totalSize = 14, totalValue = 19, fit = 9 
a2 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fit = 8 
a3 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fit = 10 
a4 = [1, 0, 0, 0], totalSize = 2, totalValue = 3, fit = 3

5.3.4选择

我们采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。其具体操作过程如下:

(1)先计算出群体中所有个体的适应度的总和

(2)其次计算出每个个体的相对适应度的大小。它即为每个个体被遗传到下一代群体中的概率;

(3)每个概率值组成一个区间,全部概率值之和为1

(4)最后再产生一个01之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体被选中的次数。 
  在本例中, 


  因此区间区间区间区间 
  经过4次选择,被选1次,被选2次,落选,被选1次: 
b1 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
b2 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10 
b3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
b4 = [1, 1, 1, 1], totalSize = 14, totalValue = 19, fitValue = 9

5.3.5交叉

本例采用单点交叉的方法,其具体操作过程是:

(1)先对群体进行随机配对;

(2)其次随机设置交叉点位置;

(3)最后再相互交换配对染色体之间的部分基因。 
  在本例中, 
在第3位后交叉,生成: 
c1 = [1, 0, 1, 1], totalSize = 11, totalValue = 15, fitValue = 11 
c2 = [1, 1, 1, 0], totalSize = 9, totalValue = 12, fitValue = 12 
在第2位后交叉,生成: 
c3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
c4 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10

5.3.6突变

我们采用基本位变异的方法来进行变异运算,其具体操作过程是: 

(1)首先确定出各个个体的基因变异位置;

(2)然后依照某一概率将变异点的原有基因值取反。 
  本例中,的第1位发生突变: 
c1 = [0, 0, 1, 1], totalSize = 9, totalValue = 12, fitValue = 12 
c2 = [1, 1, 1, 0], totalSize = 9, totalValue = 12, fitValue = 12 
c3 = [1, 0, 1, 0], totalSize = 6, totalValue = 8, fitValue = 8 
c4 = [1, 0, 0, 1], totalSize = 7, totalValue = 10, fitValue = 10 
  至此,我们已经找到了2个最优解

下面给出一个例子,对MGASA算法0-1背包问题中的应用性能来进行初步的实验[]

假设50个物品的体积Size、物体的价值Value和背包的容量C分别为: 
Size={ 80828570727066505525  
50554048503222603032  
40383532252830225030  
4530605020 6520253010  
2025151010 104421 }

Value={ 220208198192180180165162160158 
155130125122120 118115110105101 
1001009896959088828077  
75737270696665636058 
5650302015108531}

C=1000 
  如何选择哪些物品装入该背包可使得在背包的容量约束限制之内所装物品的总价值最大
退火算法所得结果:总价值为3103, 总重量为1000。最大迭代次数为400次。 
遗传算法所得结果:总价值为3077 , 总重量为999 
改进的遗传退火算法所得结果:总价值为3103, 总重量为1000。最大迭代次数为75次。 
  我们所求得最优解的个体分配情况为: 
11010 10111 10110 11011 01111 11101 00001 01001 10000 01000

根据MGASA算法编制程序[],在VC++环境下编译运行,并把计算结果与退火算法和遗传算法的实验结果进行比较。

当终止代数设为500,交义概率设为0.6,变异概率设为0.1,并进行了1 000次计算后,计算出来的最好结果如表1所示。

1 各算法的最好结果

算法

最好个体

求解结果(总价值/总体积)

退火算法

11111111011010011011001111010000001010010000000001

3036/999

遗传算法

11011011111010011011111111010000001010011000000011

3077/999

MGASA

11010101111011011011011111110100001010011000001000

3103/1000

 

5.4本章小结

由上述结果可知,利用MGASA算法求解典型的0-1背包问题,既克服了传统算法的早熟收敛,又增加了种群的适值,避免了最优解的丢失,极大地加快了进化速度。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

本文对改进的遗传退火算法及其在0-1背包问题中的应用进行了研究,在遗传算法和退火算法的基础上,针对在编码操作、选择操作和降温操作中存在的不足进行了如下改进

(1)在编码操作中,为了避免繁琐的编码采取了二进制编码,提高了该算法的计算效率。

(2)针对遗传算法中的进化缓慢容易陷入局部最优而提前收敛等问题,在进行选择操作是将轮盘赌选择和最优解保存策略选择结合起来,既保证了进化速度,又保证了算法的收敛性。

(3)退火过程中一般的降温过程过快而有可能得不到全局最优解,针对这一问题,采用了改进的降温函数,使得降温过程较为缓慢,从而能够得到更多的性能更好的解,尤其是在进化一定代数之后,逐步逼近最优解,这个时候需要降温越来越慢,这样有利于搜索到全局最优解,这是一般的降温函数无法满足的。

最后结合实例,并且通过改进的遗传退火算法对建立起的数学模型进行优化求解。结果证明它能够可靠地在不同种群规模的0-1背包问题中找到最优或近似最优方案。通过对实验结果的对比分析,验证了改进的遗传退火算法的有效性和优异性。

    0-1问题的研究是一个广泛而复杂的课题,本文在这方面的研究虽取得了一定的成果,但由于本人的研究时间、知识水平均有限,论文中的研究存在许多有待改进完善的地方,尚需进一步研究和解决。

(1)模拟退火自身存在许多不足和有待改进的地方,如增加升温或重升温过程,在算法进程的适当时机,将温度适当提高,从而可激活各状态的接受概率,以调整搜索进程中的当前状态,这样就能有效避免算法在局部极小解处停滞不前

(2)算法参数的合理性还需要进一步进行研究论证等等

 

 

参考文献

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值