粒子群优化算法及其在背包问题中的应用Word格式文档下载.docx
- 文档编号:21377259
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:31
- 大小:219.44KB
粒子群优化算法及其在背包问题中的应用Word格式文档下载.docx
《粒子群优化算法及其在背包问题中的应用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《粒子群优化算法及其在背包问题中的应用Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
如果所有物品的重量之和小于背包的容量,则问题极其简单,所得利益也就是所有物品的价值之和,而实际问题往往是背包的容量小于物品的重量之和5。
背包问题可以衍生出一系列与之相关的优化问题,如有限背包问题(物体可具有相同价值和重量但数量是有限的),无限背包问题(具有相同价值和重量的物体数量可以是无限的),多背包问题(将物体装入多个容量不同的背包)等。
背包问题在实践中有广泛的应用背景。
许多简单结构的有机组合构成了复杂结构,对简单问题的深入探索也使复杂问题的解决变得相对容易。
在设计解决大量的复杂组合优化问题算法时,背包问题往往作为子问题出现。
背包问题的算法改进,对复杂组合优化问题算法的改良是十分有益的。
1.3对背包问题的研究对于背包问题已有的求解方法可分为精确算法(盘日枚举法,动态规划法,分支定界法,图论法等指数级方法)和近似算法(如贪心算法,蚂蚁算法,遗传算法等)两大类。
Dantzig在五十年代中期首先进行了开创性的研究,利用贪心算法求得了一个理想解,得出了0/1背包问题最优解的上界。
在这之后二十几年里背包问题研究没有取得太大进展,该上界也未得到改进。
直到一九七四年,Horowitz和Sahni先利用分支定界技术设计出有效算法解答背包问题,并提出了背包问题的可分性,指明了解答该问题的一条新途径。
之后,Martello和Toth利用整数约束和分支定界技术第一个改进了Dantzig上界。
1980年,Balas和Zemel首先提出了解答背包问题的“核”(Core)思想,使该问题的研究有了较大进展。
在九十年代末Pisinger利用平衡技术和“核膨胀”思想设计的算法,该算法结合了动态规划技术,使解答背包问题的算法有了实质进展。
在进入二十世纪的九十年代以后,生物仿生技术和Internet技术的飞速发展使得模拟生物物理规律的各种并行近似算法不断涌现,遗传算法已经在0/l背包问题上得到较好的应用,蚂蚁算法、粒子群算法等仿生算法也在各种组合优化问题中得到了应用。
下面对几种常用的算法进行简介:
递归算法:
这种方法本身是一种深度优先的穷举算法,所以不适合大规模问题的求解。
动态规划法:
动态规划法是解决多阶段决策过程摄优化的一种数学方法。
1951年美国数学家贝尔曼等人根据一类多阶段决策问题的特点,把多阶段决镱问题变换为一系列相互联系单阶段问题,然后逐个加以解决,从而创建了动态规划的方法。
它的特点是解决多阶段、离散性问题。
它采用最优原则来建立用于计算最优解的递归武。
所谓最优原则即不管前面的策略如何,此后的决策必须是基于当前状态(由上一次决策产生)的最优原则。
由于对于有些问题的某些递归式来说并不一定能保证最优原则,因此在求解问题时有必要对它进行验证。
若不能保持最优原则,则不可应用动态规划方法。
在得到最优解的递归式之后,需要执行回溯(Traceback)构造最优解。
采用动态规划方法,可以很高效的解决许多用分支定界法或贪婪法无法解决的问题。
分支定界法:
是一种求解整数规划问题的最常用算法。
这种方法不但可以求解纯整数规划,还可以求解混合整数规划问题7。
通常,分支定界法的步骤如下:
首先放宽或取消原问题的某些约束条件,如求整数解的条件。
如果这时求出的最优解是原问题的可行解,那么这个解就是原问题的最优解,计算结束。
否则这个解的目标函数值是原问题的最优解的上界。
其次将放宽了某些约束条件的替代问题分成若干子问题,要求各子问题的解集合的并集要包含原问题的所有可行解,然后对每个子问题求最优解。
这些子问题的最优解中的最优者若是原问题的可行解,则它就是原问题的最优解,计算结束。
否则它的目标函数值就是原问题的一个新的上界。
另外,各子问题的最优解中,若有原问题的可行解的,选这些可行解的最大目标函数值,它就是原问题的最优解的一个下界。
在此对最优解的目标函数值已小于这个下界的问题,其可行解中必无原问题的最优解,可以放弃。
对最优解的目标函数值大于这个下界的子问题,都先保留下来,进入下一步。
最优在保留下的所有子问题中,选出最优解的目标函数值最大的一个,重复第1步和第2步。
如果已经找到该子问题的最优可行解,那么其目标函数值与前面保留的其他问题在内的所有子问题的可行解中目标函数值最大者,将它作为新的下界,重复第3步,直到求出最优解。
图论法:
广泛的运筹学分支,它已广泛的虑用在物理学、化学、控制沦、信息论、科学管理、电子计算机等备个领域。
在实际生活,生产和科学研究中,有很多问题可以用图论的理论和方法来解决。
欧拉在1736年发表了图论方面的第一篇论文,解决了著名的哥尼斯堡七桥问题。
随着科学技术的发展以及电子计算机的出现与广泛应用二十世纪五十年代,图论的理论得到进一步发展。
将庞大复杂的工程系统和管理问题用图描述,可以解决很多T程设计和管理决策的最优化问题。
例如,完成工程任务的时间最少,距离最短,费用最省等。
图论受到数学、工程技术及经营管理等各个方面越来越广泛的重视。
图论中有许多基本的概念,如边,弧,无向图,有向图,树等等,还有许多现有的方法,如破圈法,避圈法,Dijkstra法等等8。
启发式算法:
启发式算法是一种技术。
这种技术使得在可接受的计算费用内去寻找最好的解,但不一定能保证所得解的可行性和最优性,甚至在多数情况下,无法阐述所得解同最优解的近似程度。
在某些情况下,特别是实际问题中,最优算法的计算时间使人无法忍受或因问题的难度使其计算时间随问题规模的增加以指数速度增加,此时只能通过启发式算法求得阀题的一个可行解。
早在40年代末期,由于实际问题的需要,人们已提出一些解决实际问题的快捷有效的癌发式算法。
随着70年代算法复杂性理论的完善,不再强调一定要求得到最优解,因此促使80年代初兴起的现代优化算法在今天得到了巨大的发展。
1.4本文的结构本文共五章。
第一章从组合优化问题入手,简单的阐述了一些背包问题的背景知识以及对于背包问题的求解方法的研究状态,并将解决背包问题的几种可行的方法进行列举和说明,从而对于背包问题有着更深入的了解。
第二章介绍了最优化算法的基本原理和数学模型,并列举了若干算法的意义以及概念。
尤其详细的阐述了粒子群优化算法的基本信息,从发展历程,实际意义以及改进措施等方面对粒子群优化算法进行了比较全面的介绍,同时本章也简单的介绍了背包问题的若干种类型以及问题的数学描述,这对于真正理解背包问题有着很重要的意义,方便我们对其进行分析并运用粒子群算法来解决背包问题。
第三章介绍了运用基本粒子群算法来解决两个不同维度的0/1背包问题,首先是采用了固定参数的基本粒子群算法来解决背包问题,对整个实验结果进行了分析,确认了粒子群算法确实是可以用来解决背包问题的,然后对影响算法性能的参数进行了调整和设置,得出结果厚整理成表格并绘图,讨论了每种参数的变化对粒子群算法的影响,通过解决背包问题的过程也检验了粒子群算法的性能。
第四章在第三章的基础之上,介绍了两种对于基本粒子群算法的改进型算法。
这两种算法分别引入了惯性权重以及收缩因子,其本质都是为了调节粒子对于种群经验和自身经验所占的比重,以及粒子飞行时的速度的衰减。
从结果上看对于基本粒子群算法的改进还是有其可取之处的,取得的结果也普遍优于基本粒子群算法,这说明对于粒子群算法的改进还要继续研究。
第五章在最后对全文所做的工作进行了一个比较完整的总结,并对粒子群算法及其改进算法进行了展望。
2优化算法和背包问题解决最优化问题的算法称为最优化算法,可以分为经典优化算法和启发式优化算法。
经典算法的确立可以从(G.B.Dantzig1947)提出解决线形规划的单纯形(Simplexmethod)开始,但单纯形不是多项式算法(在后面计算复杂性中会提到)。
随后,Kamaka提出了椭球算法(多项式算法),内点法9。
对于非线性问题,起初人们试图用线性优化理论去逼近求解非线性问题,但效果并不理想。
后来的非线性理论大多都建立在二次(凸)函数的基础上,也就用二次函数去逼近其他非线性函数。
在此基础上提出许多优化经典的优化算法。
无约束的优化算法包括:
最速下降法(Steepest)、共轭梯度法、牛顿法(NewtonAlgorithm)、拟牛顿法(PseudoNewtonAlgorithms)、信赖域法。
约束优化算法包括:
拉格朗日乘子法(AugmentedLagrangianAlgorithms),序列二次规划(SQP)等。
随着社会的发展,实际问题越来越复杂,例如全局最优化问题。
经典算法一般都用得局部信息,如单个初始点及所在点的导数等,这使得经典算法无法避免局部极小问题。
全局最优化是NP-Hard问题。
在多项式时间内使无法等到其绝对最优解,只能采取某些策略,使得在可接受的时间内得到近似最优解,所以原有的经典算法不再使用,必须对其进行改进,或将其与启发式算法结合。
大自然是神奇的,它造就了很多巧妙的手段和运行机制。
受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。
对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(HeuristicAlgorithm)。
现在的启发式算法也不是全部来自然的规律,也有来自人类积累的工作经验。
启发式算法有不同的定义:
一种定义为,一个基于直观或经验的构造的算法,对优化问题的实例能给出可接受的计算成本(计算时间、占用空间等)内,给出一个近似最优解,该近似解于真实最优解的偏离程度不一定可以事先预计;
另一种是,启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度。
启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,取得了巨大的成就。
Holland模拟地球上生物进化规律提出了遗传算法(GeneticAlgorithm),它的与众不同的搜索机制引起了人们再次引发了人们研究启发式算法的兴趣,从而掀起了研究启发式算法的热潮10。
而八十年代后产生的模拟退火算法(SimulatedAnnealingAlgorithm),人工神经网络(ArtificialNeuralNetwork),禁忌搜索(TabuSearch)相继出现。
最近,演化算法(EvolutionaryAlgorithm),蚁群算法(AntAlgorithms),拟人拟物算法,量子算法等油相继兴起,掀起了研究启发式算法的高潮。
本文所述的粒子群优化算法(ParticleSwarmoptimization,PSO)也属于新兴的优化算法,由于这些算法简单和有效,而且具有某种智能,因而成为科学计算和人类之间的桥梁11。
2.1粒子群算法粒子群算法(PSO)是一种基于群体智能的优化技巧。
它模拟了鸟群的运动特性,在该模型中。
用无质量、无体积的微粒作为十体,每个个体都有一定的感知能力。
能够感知周围的局部最好位置的个体和整个群体的全局最好位置的个体的存在。
并根据当前的状,调整自己下一步的行为,从而使整个群体表现出一定的智能性。
PSO模拟鸟群的捕食行为。
设想这样一个场景:
一群鸟在随机搜索食物。
在这个区域里只有一块食物。
所有的鸟都不知道食物在那里。
但是他们知道当前的位置离食物还有多远。
那么找到食物的最优策略是什么呢。
最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
PSO从这种模型中得到启示并用于解决优化问题。
PSO中,每个优化问题的解都是搜索空间中的一只鸟。
我们称之为“粒子”。
所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。
然后粒子们就追随当前的最优粒子在解空间中搜索。
PSO初始化为一群随机粒子(随机解)。
然后通过迭代找到最优解。
在每一次迭代中,粒子通过跟踪两个极值来更新自己。
第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。
另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。
另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值12。
起初,PSO是为实值问题而设计,后来,算法逐渐扩展到二进制和离散问题。
两种最常用的PSO算法是全局版本PSO和局部版本的PSO。
这两种版本的差别在于粒子的邻域不同,即各粒子最近邻的粒子。
局部PSO的粒子,其邻域仅为其两边有限的几个粒子,而全局PSO的邻域则为该群体所有粒子。
如此一来,全局PSO可看成是局部PSO的特殊情况。
研究发现,全局PSO收敛较快,但易陷入局部极小;
而局部PSO可搜索到更优的解,但速度稍慢。
此外,为提高PSO的性能,研究者又设计了许多不同的邻域结构,包括金字塔结构、星型结构、小邻域结构,以及冯诺以曼结构。
试验结果表明,冯诺以曼结构比其他规整邻域结构效果要好,包括全局和局部PSO13。
研究还发现,对于复杂问题,采用小邻域结构要好,而对于简单问题适于用大邻域结构。
还有的学者对动态邻域结构进行了研究。
通常,每种结构都有其优势,但缺点也无法避免。
对一些问题,可能该结构好,但另外一些问题,则不然。
PSO速度的改变由三部分组成:
社会项、认知项和动量项。
三部分如何平衡,决定了PSO算法的性能。
原始PSO中增加了第一个新参数为惯性权重。
惯性权重的引入是为了平衡全局与局部搜索能力。
惯性权值较大,全局搜索能力强,局部搜索能力弱,反之,则局部搜索能力增强,而全局搜索能力减弱。
动态惯性权值能够获得比固定值更为好的寻优结果。
动态惯性权值可以在PSO搜索过程中线形变化,亦可根据PSO性能的某个测度而动态改变,比如模糊规则系统。
随后,另一个参数称之为收缩因子的系数被引入,目的是希望PSO可以收敛。
从数学上分析,这两个参数是等价的14。
PSO另一个研究的趋势是将其与其他进化计算技术相结合。
有些研究者向PSO当中引入了一些算子,包括选择、交叉、和变异。
通过选择算子,最好性能的粒子将被直接复制到下一代,从而保持最优性能的粒子。
同进化算法类似,通过交叉算子,成对的粒子将交换相互的信息,以便有向新的搜索空间飞翔的能力。
变异算子主要目的是为了增加PSO跳出局部极小的能力。
另一方面,为了加快进化规划算法的速度,研究者还借鉴了PSO的速度思想,将其应用到进化规划当中,来指导变异操作的进行。
2.2背包问题背包问题(KnapsackProblem)在50年代末期由Dantzig首次提出之后,在近年来被广泛的研究。
这不仅是因为背包问题在工业和金融投资领域能得到直接的应用,更是因为很多理论上的原因。
很多整数规划的问题的解决都依赖于一个高效的背包问题解法,在这些整数规划问题中;
每当需要定界的时候我们都需要解决一个背包子问题,因此一个高效的背包问题解法就显得非常有必要。
所有的背包问题都可以定性的描述为,从给定的物品集合中选择出一个子集,在不超出所有背包的负载的前提下,实现利益最大化。
背包问题的不同种类的判定,使根据物品和背包的类型:
在0/1背包问题(0/1KnapsackProblem)中,每一个物品最多被选择一次,而与之相对应的有界背包问题(BoundedKnapsackProblem)中能选择的物品数则可以在某个范围内取值;
再比如多选择背包问题(MultiplechoiceKnapsackProblem)是说某几个物体必须选择一个或多个,而多背包的背包问题(MultipleKnapsackProblem)则是说某些背包必须同时被装满。
在这些背包问题家族中,最通用的形式是多条件约束背包问题(MulticonstrainedKnapsackProblem),而这在实质上就是正系数的整数规划问题(IntegerProgramming)。
0/1背包问题是从有n个物品的物品集选取一个子集,在总体积不超过包裹容量c的前提下,使得相对应的利益实现最大化。
可以用以下的公式进行形式化的描述15:
(2-1)其中,如果选择物品j那么决策变量xj取1,否则取0。
(2)有界背包问题物品j最多可以选择mj个,那么有界背包问题可以描述为:
(2-2)(3)多选择背包问题多选择背包问题是0/1背包问题的另外一种扩展。
扩展不是针对数目进行的,而是针对物品的类型。
也即是说,从k类物品Ni(i=1,k)中选择出物品j使得最终的总获益最大。
数学定义如下:
(2-3)(4)最大子集和问题如果0-1背包问题中每个物品的pj都和他的wj相等,就构成了最大子集和问题。
(2-4)以上的这些类型的背包问题无论在理论上,还是在实践中都具有非常多的应用。
在理论上,背包问题是很多组合优化问题的子问题,背包问题研究上的任何一个进步都会使得这些问题的解决受益。
由于任何一个多条件的整数规划问题都可以等价的转化为一个单条件的整数规划问题,继而转化为0/1背包问题。
因此课题研究的重点也就是0/1背包问题。
2.3本章小结本章简单介绍了最优化算法的基本原理和数学模型,并列举了若干算法的意义以及概念。
尤其详细的阐述了粒子群优化算法的基本信息,从发展历程,实际意义以及改进措施等方面对粒子群优化算法进行了比较全面的介绍,同时本章也简单的介绍了背包问题的若干种类型以及问题的数学描述,采用公式的方法来形象的列出了背包问题的实质,这对于解决背包问题有着很大的帮助。
3基本粒子群算法在背包问题中的应用3.1基本粒子群算法自1995年PSO算法问世以来,不同领域的研究人员曾提出各种算法模型,从不同角度对PSO算法进行了详细的分析、设计。
其中倍受推崇的是Ebcrhart、Shi和Clerc,他们依据PSO算法的模拟思想,分别构造了基本PSO模型,引入惯性权重的PSO模型和引入收缩因子的PSO模型,并通过了大量的实验研究,详细分析了模型中不同控制参数的意义与作用,并为其确定了相应得参考取值。
这三种算法模型被后来的研究人员视为PSO算法的经典与研究基础16。
3.1.1基本粒子群
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 粒子 优化 算法 及其 背包 问题 中的 应用