粒子群优化算法及其在背包问题中的应用.docx
《粒子群优化算法及其在背包问题中的应用.docx》由会员分享,可在线阅读,更多相关《粒子群优化算法及其在背包问题中的应用.docx(32页珍藏版)》请在冰豆网上搜索。
粒子群优化算法及其在背包问题中的应用
摘要
背包问题属于NP难问题,解决背包问题是解决组合优化所面临的问题之一,在现实中有着广泛的应用背景,而粒子群算法作为群智能算法而言,它通过追随当前搜索到的最优值来寻找全局最优。
本文在对背包问题进行研究分析的基础上,采用基本粒子群算法、带惯性权重和带收缩因子的改进型粒子群算法来分别解决两个三十维和十维的0/1背包问题,通过多次试验,最终得出了所给的背包问题的最优解,与已知问题最优解一致。
关键词:
粒子群优化算法,智能算法,背包问题,最优化
Abstract
KnapsackproblemisNP-hardproblemtosolvetheknapsackproblemsolvingcombinatorialoptimizationproblemsfacedbyoneofthewiderangeofapplicationsintherealbackground,whiletheparticleswarmalgorithmasaswarmintelligencealgorithm,byfollowingthecurrentsearchfortheoptimal.Thevaluetofindtheglobaloptimum.Basedontheanalysisoftheknapsackproblem,usingtheparticleswarmalgorithmwithinertiaweightandwithashrinkagefactorimprovedparticleswarmoptimizationtosolvethetwothirty-dimensionalandeleven-dimensional0/1knapsackproblem,throughamulti-trials,andultimatelyobtainedtheoptimalsolutiontotheknapsackproblemwithknownoptimalsolutionconsistent.
Keywords:
Particleswarmoptimization algorithm, the intelligentalgorithm,knapsackproblem,optimization,
目录
1绪论1
1.1组合优化问题1
1.2背包问题1
1.3对背包问题的研究2
1.4本文的结构4
2优化算法和背包问题5
2.1粒子群算法6
2.2背包问题7
2.3本章小结9
3基本粒子群算法在背包问题中的应用10
3.1基本粒子群算法10
3.2基于基本粒子群算法的背包问题11
3.3本章小结21
4基于改进型粒子群算法的背包问题22
4.1引入惯性权重与收缩因子的改进型粒子群算法22
4.2基于改进型粒子群算法的背包问题24
4.3本章小结28
5总结与展望29
5.1本文总结29
5.2展望29
参考文献30
致谢32
1绪论
1.1组合优化问题
在人们的生活和工作中,总会碰到各种各样的问题,而解决这些问题的方案又有许多,组合优化问题是一种离散最优化问题,就是在给定约束条件下,求出使目标函数极小(或极大)的变量组合问题。
组合优化往往涉及排序、分类、筛选等问题,它是运筹学的一个重要分支[1]。
典型的组合优化问题有旅行商问题(TravelingSalesmanProblem-TSP)、加工调度问题(SchedulingProblem,如Flow-Shop,Job-Shop)、0-1背包问题(KnapsackProblem)、装箱问题(BinPackingProblem)、图着色问题(GraphColoringProblem)、聚类问题(ClusteringProblem)等。
这些问题描述非常简单,并且有很强的工程代表性,理论上说每一个组合优化问题都可以通过枚举的方法求得最优解,但枚举是以时间为代价的,有的枚举时间还可以接受,有的则不可能接受,即所谓的“组合爆炸"[2]。
对于这些NP完全的组合优化问题,至今尚无很好的解析算法,一般采用启发式算法来解决。
组合优化问题在规划、调度、资源分配、决策等问题中有着非常广泛的应用,在国际上得到了广泛的重视[3]。
国际上许多优秀的运筹学家、计算机科学家和数学家等都投入到这一领域,针对许多有重要意义的组合最优化问题提出了相应的理论和优化算法,目前已发展成为运筹学和应用数学的一个十分活跃的研究领域,具有重大的理论意义与实用价值,其目的主要是寻找离散事件的最优编排、分组、次序或筛选等,是运筹学中的一个经典而重要的分支。
由于组合优化问题与大量的实际问题紧密地结合,越来越多的人开始研究组合优化问题,提出许多新的方法和思路,使得组合优化问题内容越来越丰富。
组合优化问题的求解一直是近年来研究的热点领域之一。
1.2背包问题
背包问题(KnapsackProblem)是典型的组合优化问题之一,工厂里的下料问题,管理中的资源分配、资金预算、投资决策、项目选择、材料切割、货物装载等均可建模为背包问题,并且还常常作为其他问题的子问题加以研究。
背包问题是运筹学中的一个典型的NP问题。
大多数背包问题有拟多项式的时间算法,这意味着若系数规模有所界定,在可接受的时间内能够得到最优解。
背包问题的应用背景促使人们对该问题计算方法进行了深入研究,背包问题的特有计算性质又使其应用领域不断得到拓展。
它的数学模型实际上是一个0-1规划问题[4]。
0-1背包问题是指有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品且对每一物品,要么选,要么不选,满足被选物品的总重量不超过背包指定的限制重量且达到被选物品的价值总和最大的问题。
如果所有物品的重量之和小于背包的容量,则问题极其简单,所得利益也就是所有物品的价值之和,而实际问题往往是背包的容量小于物品的重量之和[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本文的结构
本文共五章。
第一章从组合优化问题入手,简单的阐述