智能控制作业 遗传算法求解背包问题

智能控制作业 遗传算法求解背包问题

ID:18416728

大小:79.47 KB

页数:14页

时间:2018-09-17

智能控制作业 遗传算法求解背包问题_第1页
智能控制作业 遗传算法求解背包问题_第2页
智能控制作业 遗传算法求解背包问题_第3页
智能控制作业 遗传算法求解背包问题_第4页
智能控制作业 遗传算法求解背包问题_第5页
资源描述:

《智能控制作业 遗传算法求解背包问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、智能控制遗传算法求解背包问题——16组遗传算法求解背包问题摘要:遗传算法是在分析遗传个体进化机制基础上提出的一种新型优化算法。本论文根据0-1背包问题的特点,提出用于求该问题的遗传算法及相关的解决方案,阐明算法的具体实现过程。通过对其他文献中仿真实例的计算和结果比较,表明应用该算法求解背包问题取得了良好的效果。该算法同样可以应用于其他组合优化题。关键词:背包问题;遗传算法一.概述背包问题(knapsackproblem)是运筹学中一个典型的优化难题,有着广泛的实际应用背景,如管理中的资源分配、投资决策、预算控制等问题,

2、并且经常作为其他问题的子问题被研究。研究背包问题的求解算法在理论上和实践中都具有一定的意义。从计算复杂性理论来看,背包问题是个NP完全问题,该问题的求解方法主要有启发式算法,如贪心算法、遗传算法、粒子群算法。以遗传算法为代表的生物进化算法建立在达尔文自然选择学说的基础上,是对生物进化过程的模拟,是人们对从自然演化过程中抽象出的概念、原则和机制的类比应用,被广泛用于解决复杂的计算问题。其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取

3、和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。本文在分析遗传算法的基础上,提出了将贪婪修复方法与遗传算法相结合,构成混和遗传算法,并应用于求解经典背包问题。它是可以解决复杂问题的新方法。本论文系统的介绍背包问题的遗传算法解决方案。二.背包问题的数学模型背包问题的定义:我们有n种物品,物品j的重量为wj,价格为pj。我们假定所有物品的重量和价格都是非负的。背包所能承受的最大重

4、量为W。如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题。可以用公式表示为:方法1:每个背包只能使用一次或有限次(可转化为一次):A.求最多可放入的重量。有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积(正整数)。要求从n个物品中,任取若千个装入箱内,使箱子的剩余空间为最小。l.搜索方法proceduresearch(k,v:integer);{搜索第k个物品,剩余空间为v}vari,j:integer;beginifv

5、fv-(s[n]-s[k-1])>=bestthenexit;{s[n]为前n个物品的重量和}ifk<=nthenbeginifv>w[k]thensearch(k+1,v-w[k]);search(k+1,v);end;end;2.DP:F[I,j]为前i个物品中选择若干个放入使其体积正好为j的标志,为布尔型。实现:将最优化问题转化为判定性问题f[I,j]=f[i-1,j-w[i]](w[I]<=j<=v)边界:f[0,0]:=true.ForI:=1tondoForj:=w[I]tovdoF[I,j]:=f[I-1

6、,j-w[I]];优化:当前状态只与前一阶段状态有关,可降至一维。F[0]:=true;ForI:=1tondobeginF1:=f;Forj:=w[I]tovdoIff[j-w[I]]thenf1[j]:=true;F:=f1;End;B.求可以放入的最大价值。F[I,j]为容量为I时取前j个背包所能获得的最大价值。F[i,j]=max{f[i–w[j],j-1]+p[j],f[i,j-1]}C.求恰好装满的情况数。DP:Procedureupdate;varj,k:integer;beginc:=a;forj:=0

7、tondoifa[j]>0thenifj+now<=ntheninc(c[j+now],a[j]);a:=c;end;方法2:可重复背包A求最多可放入的重量。F[I,j]为前i个物品中选择若干个放入使其体积正好为j的标志,为布尔型。状态转移方程为f[I,j]=f[I-1,j–w[I]*k](k=1..jdivw[I])B.求可以放入的最大价值。进行一次竞赛,总时间T固定,有若干种可选择的题目,每种题目可选入的数量不限,每种题目有一个ti(解答此题所需的时间)和一个si(解答此题所得的分数),现要选择若干题目,使解这些题

8、的总时间在T以内的前提下,所得的总分最大,求最大的得分。*易想到:f[i,j]=max{f[i-k*w[j],j-1]+k*p[j]}(0<=k<=idivw[j])其中f[i,j]表示容量为i时取前j种背包所能达到的最大值。*实现:BeginFillChar(f,SizeOf(f),0);Fori:=1ToMDoForj:=1T

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。