CN112214718A - 基于改进动态规划算法求解有界背包问题的方法 - Google Patents

基于改进动态规划算法求解有界背包问题的方法 Download PDF

Info

Publication number
CN112214718A
CN112214718A CN202011157234.9A CN202011157234A CN112214718A CN 112214718 A CN112214718 A CN 112214718A CN 202011157234 A CN202011157234 A CN 202011157234A CN 112214718 A CN112214718 A CN 112214718A
Authority
CN
China
Prior art keywords
capacity
backpack
pair
remainder
equal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011157234.9A
Other languages
English (en)
Inventor
万烂军
张根
龚坤
李泓洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University of Technology
Original Assignee
Hunan University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan University of Technology filed Critical Hunan University of Technology
Priority to CN202011157234.9A priority Critical patent/CN112214718A/zh
Publication of CN112214718A publication Critical patent/CN112214718A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Business, Economics & Management (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Operations Research (AREA)
  • Development Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Educational Administration (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及背包问题求解技术领域,公开一种基于改进动态规划算法求解有界背包问题的方法,定义物品种类最大数为N,背包的最大容量为C,物品种类为i,0≤i≤N,每种物品的单个价值为vi,重量为wi,每种物品的个数为ki;定义一个(N+1)×(C+1)二维价值表f,背包容量为j,0≤j≤C;计算余数a,根据容量余数a对容量状态j进行分组,将拥有相同容量余数的容量状态j放在一组计算。根据余数对容量状态j进行分组,对传统动态规划递归公式进行了改进,减少了求解BKP过程带来的冗余计算,同时对改进后的算法进行并行化,随着数据量的增大,本发明比现有的算法拥有更好效率,可实现BKP的快速求解。

Description

基于改进动态规划算法求解有界背包问题的方法
技术领域
本发明涉及背包问题求解技术领域,具体地,涉及一种基于改进动态规划算法求解有界背包问题的方法。
背景技术
背包问题(KP)是一种经典的组合优化问题,被证明是NP-hard。它在密码学、决策优化、任务调度、成本控制和货物装载中具有各种实际应用。KP有几个子问题,例如0-1背包问题(0-1KP),有界背包问题(BKP)和无界背包问题(UKP)等。
对于BKP的求解方法,通常将BKP转换为具有多个有效解决方案的等效0-1KP进行求解,这是传统动态规划(DP)算法解决BKP(基本法)的核心概念。也就是说,BKP中每个物品类型i都会生成ki个独立副本。由于0-1KP中的ki个物品类型是由BKP每个物品类型i转换得到的,因此0-1KP中的物品类型数为
Figure BDA0002743159100000011
如果ki的值较小或适中,这种方法的性能良好且易于实现。另一种方法是基于二进制分解的转换规则“MTB2”求解BKP。每个整数可以表示为2次幂的部分和,例如13=20+22+23。因此,BKP中的任何xi解都可以视为由2次幂乘以每一项的部分和组成的数项。“MTB2”算法将ki个物品副本拆分为2次幂的序列以及余数,其中任何可能的解都可以表示为该序列的部分和。例如,对于ki=23的物品类型。生成由2次幂的序列和余数组成的序列,即23=20+21+22+23+8。任何可用的解0≤xi≤23等于该序列的部分和。对于BKP中的每个物品类型i,需要解决
Figure BDA0002743159100000012
个二元问题(0-1KP)。因此,0-1KP的等效物品数达到
Figure BDA0002743159100000013
上述两种方法基本上是着重于将BKP转换为0-1KP求解,将N项实例(wi,ki,vi)分成N×ki项实例,并将BKP转换为等效KP,这种思想容易理解,但是很麻烦,因为需要在包含每个新项时更新向量f,因此,此算法需要
Figure BDA0002743159100000014
的时间。存储最佳利润的状态表使空间需求为O(N+C)。MTB2算法,其核心概念是利用二元分解对项目数量进行变换,或将项目拆分为2k个项目的组合,这种方法需要O(NClogk)的时间和O(Nlogk+C)的空间。这两种方法将BKP转换成0-1 KP求解没有考虑到BKP中的项目具有相同的值和权重,会产生大量不必要的冗余计算,并且增加了算法的时间和空间复杂度。
发明内容
本发明解决的技术问题在于克服现有技术的缺陷,提供一种可有效减少甚至消除冗余计算的基于改进动态规划算法求解有界背包问题的方法。
本发明的目的通过以下技术方案实现:
一种基于改进动态规划算法求解有界背包问题的方法,定义物品种类最大数为N,背包的最大容量为C,物品种类为i,0≤i≤N,每种物品的单个价值为vi,重量为wi,每种物品的个数为ki;定义一个(N+1)×(C+1)二维价值表f,背包容量为j,0≤j≤C;计算余数a,根据容量余数a对容量状态j进行分组,将拥有相同容量余数的容量状态j放在一组计算。
进一步地,上述方法包括如下步骤:
S1.计算余数a=j mod wi,余数a共有n种,将拥有相同余数a的容量j分为一组,共有n组,创建一个键值对列表List Q;
S2.在第s组计算中,起始令j=as,b=0,其中1≤s≤n,as为第s组对应的余数,b为背包容量为j时背包中可以装入物品i的最大数量;
S3.计算S2中背包容量为j时的潜在价值
Figure BDA0002743159100000021
创建一个键值对A<profit,number>,令A.profit=profit,A.number=b;
S4.将键值对A<profit,number>插入List Q中,判断List Q中First_pair.number+ki是否小于A.number,满足条件,删除First_pair,否则从List Q尾部插入A<profit,number>,其中First_pair为List Q的第一个元素;
S5.判断键值对Former_pair.profit是否大于A.profit,若不满足条件,则删去前一个键值对,循环本步骤直到满足条件,其中Former_pair为A的前一个键值对;
S6.比较List Q中所有元素的profit,取出最大的profit,得到背包容量为j、物品i放入背包时的最大价值fi(j)
Figure BDA0002743159100000031
判断j是否为第s组中最后一个状态,若不是,则令j=j+n,继续执行步骤S3~S6;
S7.判断第s组的任务是否结束,若已结束,则清空List Q,令s=s+1,继续执行步骤S2~S7;
S8.待n组任务都结束后,得到物品i放入容量为C的背包时的最大价值fi(C)=max{fi(1),fi(2),L,fi(s),L,fi(sn)},其中fi(s)表示第s组获得的最大价值;判断i是否大于N,若不满足,则令i=i+1,继续执行步骤S1~S8;若满足,通过比较每种物品i装入容量为C的背包中获得的最大价值fi(C),即得N种物品放入容量为C的背包中的最大总价值fN(C)=max{f1(C),f2(C),L,fN(C)}。
并列进一步地,多个分组的计算任务并行执行。
更进一步地,所述方法包括如下步骤:
S1.计算余数a=j mod wi,余数a共有n种,将拥有相同余数a的容量j分为一组,共有n组,创建n个进程,在同一进程中对将具有相同容量状态j进行计算,在每个进程中创建一个键值对列表List Q’;
S2.在第s个进程中,起始令j=as,b=0,其中1≤s≤n,as为第s组对应的余数,b为背包容量为j时背包中可以装入物品i的最大数量;
S3.计算S2中背包容量为j时的潜在价值
Figure BDA0002743159100000032
创建一个键值对A<profit,number>,令A.profit=profit,A.number=b;
S4.将键值对A<profit,number>插入List Q’中,判断List Q’中First_pair.number+ki是否小于A.number,满足条件,删除First_pair,否则从List Q’尾部插入A<profit,number>,其中First_pair为List Q’的第一个元素;
S5.判断键值对Former_pair.profit是否大于A.profit,若不满足条件,则删去前一个键值对,循环本步骤直到满足条件,其中Former_pair为A的前一个键值对;
S6.比较List Q’中所有元素的profit,取出最大的profit,得到背包容量为j、物品i放入背包时的最大价值fi(j)
Figure BDA0002743159100000041
判断第s个进程任务是否已结束,若不是,则令j=j+n,继续执行步骤S3~S6;
S7.比较在每个进程中获得的最大价值fi(sl),其中1≤l≤n,得到物品i放入容量为C的背包时的最大价值fi(C)=max{fi(s1),fi(s2),L,fi(sn)};判断i是否大于N,若不满足,则令i=i+1,继续执行步骤S1~S8;若满足,通过比较每种物品i装入容量为C的背包中获得的最大价值fi(C),即得N种物品放入容量为C的背包中的最大总价值fN(C)=max{f1(C),f2(C),L,fN(C)}。
与现有技术相比,本发明具有以下有益效果:
根据余数对容量状态j进行分组,对传统动态规划递归公式进行了改进,减少了求解BKP过程带来的冗余计算,同时对改进后的算法进行并行化,随着数据量的增大,本发明比现有的算法拥有更好效率,可实现BKP的快速求解。
附图说明
图1为实施例1所述的基于改进动态规划算法求解有界背包问题的方法流程图;
图2为实施例2所述的基于改进动态规划算法求解有界背包问题的方法流程图;
图3为随着Kmax增加,实施例1、实施例2与传统MTB2的加速对比图;
图4为随着Nmax增加,实施例1、实施例2与传统MTB2的加速对比图。
具体实施方式
下面结合具体实施方式对本发明作进一步的说明,其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本专利的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
实施例1
一种基于改进动态规划算法求解有界背包问题的方法(以下称为FBKP),定义物品种类最大数为N,背包的最大容量为C,物品种类为i,0≤i≤N,每种物品的单个价值为vi,重量为wi,每种物品的个数为ki;定义一个(N+1)×(C+1)二维价值表f,背包容量为j,0≤j≤C;fi(j)表示将i种物品放入背包容量为j时的最大价值,当i=0或j=0时,获得的最大价值f(i=0)(j)和f(j=0)(i)都为0。
计算余数a,根据容量余数a对容量状态j进行分组,将拥有相同容量余数的容量状态j放在一组计算,本实施例是顺序计算,因此第一组计算结束,下一组才会开始。
如图1所示,上述方法包括如下步骤:
S1.分组:计算余数a=j mod wi,余数a共有n种,将拥有相同余数a的容量j分为一组,共有n组,创建一个键值对列表List Q;
S2.初始值的确定:在第s组计算中,起始令j=as,b=0,其中1≤s≤n,as为第s组对应的余数,b为背包容量为j时背包中可以装入物品i的最大数量;
S3.背包容量为j时的潜在价值计算:
Figure BDA0002743159100000051
创建一个键值对A<profit,number>,令A.profit=profit,A.number=b;
S4.将键值对A<profit,number>插入List Q中,判断List Q中First_pair.number+ki是否小于A.number,满足条件,删除First_pair,否则从List Q尾部插入A<profit,number>,其中First_pair为List Q的第一个元素;
S5.判断键值对Former_pair.profit是否大于A.profit,若不满足条件,则删去前一个键值对,循环本步骤直到满足条件,其中Former_pair为A的前一个键值对;
S6.计算背包容量为j,物品i放入背包时的最大价值fi(j):比较List Q中所有元素的profit,取出最大的profit(max_profit),计算最大价值fi(j),
Figure BDA0002743159100000052
判断j是否为第s组中最后一个状态,若不是,则令j=j+n,继续执行步骤S3~S6;
S7.判断第s组的任务是否结束,若已结束,则清空List Q,令s=s+1,继续执行步骤S2~S7;
S8.待n组任务都结束后,得到物品i放入容量为C的背包时的最大价值fi(C)=max{fi(1),fi(2),L,fi(s),L,fi(sn)},其中fi(s)表示第s组获得的最大价值;判断i是否大于N,若不满足,则令i=i+1,继续执行步骤S1~S8;
S9.获得BKP的最优解:通过比较每种物品i装入容量为C的背包中获得的最大价值fi(C),即得N种物品放入容量为C的背包中的最大总价值fN(C)=max{f1(C),f2(C),L,fN(C)},即为BKP的最优解。
上述S6中计算最大价值fi(j)的公式是在传统动态规划的递归公式上进行的改进,传统解决0-1KP的第一种精确的DP方法计算过程采用DP表f,用来保存递归优化结果。DP表f具有C个变量,每个变量对应一个背包容量。也就是说,考虑前i个项目类型时,fi(j)保存容量为j的最大总价值。其递归公式为:
Figure BDA0002743159100000061
在求解0-1KP时,每一个新的物品需要确定其是否存在于背包中,因此解决BKP时,公式(1)可以变为:
Figure BDA0002743159100000062
其中xj是小于ki的非负整数,这意味着xj项应被选择并包含在背包中。现在,根据上述公式,如果背包容量j小于wi,则意味着该背包几乎无法承受物品i的重量,因此状态fi(j)不会改变。当j等于或大于wi时,应考虑几个选项,这意味着背包中应包含物品i的数量。选择使价值最大化的最佳xi,并同时更新表fi(j)。然而,从公式(2)可以看出,当最佳结果与包容量相关时,会产生大量的冗余计算。因此对上述公式进行了改进。
首先,对公式(2)变形为:
fi(j)=max{fi-1(j-xiwi)+xivi},0≤xi≤ki,j-xiwi≥0 (3)
令j=a+bwi,xi'=b-xi得:
Figure BDA0002743159100000071
对公式(4)进一步变形得:
fi(a+bwi)-bvi=max{fi-1(a+x'iwi)-x'ivi},0≤b-ki≤x'i≤b (5)
其中a为容量j与wi的余数,b为容量为j的背包中物品i的最大数量,x'i为物品潜在的最佳数量。在公式(2)中通过列举j更新状态表f,改进后的公式以a、b为变量,这样改进有两个优点:其一可以将拥有相同余数变量a的状态分为一组,其二可以在分组中寻找最大值来求解BKP。
实施例2
本实施例是在实施例1对容量状态j进行分组的基础上将多个分组的计算任务并行执行,首先同实施例1定义物品种类最大数为N,背包的最大容量为C,物品种类为i,0≤i≤N,每种物品的单个价值为vi,重量为wi,每种物品的个数为ki;定义一个(N+1)×(C+1)二维价值表f,背包容量为j,0≤j≤C;fi(j)表示将i种物品放入背包容量为j时的最大价值,当i=0或j=0时,获得的最大价值f(i=0)(j)和f(j=0)(i)都为0。
具体地,如图2所示,本实施例的方法(以下称为FBKP parallel)包括如下步骤:
S1.计算余数a=j mod wi,余数a共有n种,根据容量余数a对容量状态j进行分组,将拥有相同余数a的容量j放在一组计算,共有n组,同时创建n个进程,在同一进程中对将具有相同容量状态j进行计算,在每个进程中创建一个键值对列表List Q’(需要说明的是:该键值对列表List Q’跟实施例1中的List Q属于相同结构的列表,但并不是同一个列表);
S2.在第s个进程中,起始令j=as,b=0,其中1≤s≤n,as为第s组对应的余数,b为背包容量为j时背包中可以装入物品i的最大数量;
S3.对于第s个进程,计算将前i种物品装入容量为j(1≤j≤C)的背包中分别获得的潜在价值:
Figure BDA0002743159100000081
创建一个键值对A<profit,number>,令A.profit=profit,A.number=b;
S4.将键值对A<profit,number>插入List Q’中,判断List Q’中First_pair.number+ki是否小于A.number,满足条件,删除First_pair,否则从List Q’尾部插入A<profit,number>,其中First_pair为List Q’的第一个元素;
S5.判断键值对Former_pair.profit是否大于A.profit,若不满足条件,则删去前一个键值对,循环本步骤直到满足条件,其中Former_pair为A的前一个键值对;
S6.比较List Q’中所有元素的profit,取出最大的profit,得到背包容量为j、物品i放入背包时的最大价值fi(j)
Figure BDA0002743159100000082
判断第s个进程任务是否已结束,若不是,则令j=j+n,继续执行步骤S3~S6;
S7.比较在每个进程中获得的最大价值fi(sl),其中1≤l≤n,得到物品i放入容量为C的背包时的最大价值fi(C)=max{fi(s1),fi(s2),L,fi(sn)};当所有进程任务都已结束,判断i是否大于N,若不满足,则令i=i+1,继续执行步骤S1~S8;
S8.获得BKP的最优解:通过比较每种物品i装入容量为C的背包中获得的最大价值fi(C),即得N种物品放入容量为C的背包中的最大总价值fN(C)=max{f1(C),f2(C),L,fN(C)},即为BKP的最大总价值。
本实施例所有的状态是根据其余数进行分组的,因此余数仿真循环是独立的,不同余数的状态之间不会互相装载写入,因此对余数循环进行并行化是可行的。并且每个处理器都需要维护一个私有List Q以支持计算,并且在开始新的余数组之前,应该清除一次List Q。当wi个任务完成并同步后,下一项才可以更新。在更新所有物品之后,状态表f在相应的背包容量下存储最佳价值。
本发明的核心理念在于根据余数对容量状态j进行分组,对传统动态规划递归公式进行了改进,减少了求解BKP过程带来的冗余计算,实施例2进一步对改进后的算法进行并行化(即多组同时执行运算),随着数据量的增大,本发明比现有的算法拥有更好效率,可实现BKP的快速求解。具体而言,本发明将传统DP的计算方式进行了优化,通过维护单调的利润递减列表,具有相同索引余数的每个状态仅可以用O(1)的时间进行计算,因为潜在的更新决策元素包括并删除了每个包含项的一次。因此,FBKP的时间复杂度达到O(NC)的平均值,空间需求达到O(C+N+C/Wi),降低了算法的时间复杂度和空间复杂度。如果确定容量,FBKP将不受ki影响。随着ki的增加,背景技术中两种算法的性能急剧下降,许多实例变得无法计算,但是,FBKP的时间消耗仅增加一点;即使在最坏的情况下,性能也只会退化到恒定的水平。且FBKP对每个项目的计算过程中不存在依赖性,因此该算法在多台机器中也很容易实现实施例2的并行化。随着数据量的增大,本发明比现有的算法拥有更好效率。
现分别将Kmax、Nmax和Wmax作为自变量,对基于基本法的BKP算法、MTP2、FBKP和FBKPparallel的执行时间进行比较,对比结果分别如下表1、表2、表3所示(表中TLE表示程序不能在5000000毫秒内完成);图3示出了随着Kmax增加,FBKP、FBKP parallel与传统MTB2的加速对比;图4示出了随着Nmax增加,FBKP、FBKP parallel与传统MTB2的加速对比;此外,还比较了FBKP、FBKP parallel和传统DP、MTB2方法解决0-1KP时的执行时间,如下表4所示。从实验结果可以看出,在具有不同量级的那些实例上,即使某些测试结果会有所波动,但是整体上能够体现出本发明的具体更好的性能。
表1为随着Kmax增加FBKP、FBKP parallel和传统DP、MTB2的运行时间对比:
Figure BDA0002743159100000101
表2为随着Nmax增加FBKP、FBKP parallel和传统DP、MTB2的运行时间对比:
Figure BDA0002743159100000111
表3为随着Wmax增加FBKP、FBKP parallel和传统DP、MTB2的运行时间对比:
Figure BDA0002743159100000121
表4为FBKP、FBKP parallel和传统DP、MTB2方法解决0-1KP的运行时间对比:
Figure BDA0002743159100000122
显然,上述实施例仅仅是为清楚地说明本发明的技术方案所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (4)

1.一种基于改进动态规划算法求解有界背包问题的方法,其特征在于,定义物品种类最大数为N,背包的最大容量为C,物品种类为i,0≤i≤N,每种物品的单个价值为vi,重量为wi,每种物品的个数为ki;定义一个(N+1)×(C+1)二维价值表f,背包容量为j,0≤j≤C;计算余数a,根据容量余数a对容量状态j进行分组,将拥有相同容量余数的容量状态j放在一组计算。
2.根据权利要求1所述的基于改进动态规划算法求解有界背包问题的方法,其特征在于,包括如下步骤:
S1.计算余数a=j mod wi,余数a共有n种,将拥有相同余数a的容量j分为一组,共有n组,创建一个键值对列表List Q;
S2.在第s组计算中,起始令j=as,b=0,其中1≤s≤n,as为第s组对应的余数,b为背包容量为j时背包中可以装入物品i的最大数量;
S3.计算S2中背包容量为j时的潜在价值
Figure FDA0002743159090000011
创建一个键值对A<profit,number>,令A.profit=profit,A.number=b;
S4.将键值对A<profit,number>插入List Q中,判断List Q中First_pair.number+ki是否小于A.number,满足条件,删除First_pair,否则从List Q尾部插入A<profit,number>,其中First_pair为List Q的第一个元素;
S5.判断键值对Former_pair.profit是否大于A.profit,若不满足条件,则删去前一个键值对,循环本步骤直到满足条件,其中Former_pair为A的前一个键值对;
S6.比较List Q中所有元素的profit,取出最大的profit,得到背包容量为j、物品i放入背包时的最大价值fi(j)
Figure FDA0002743159090000012
判断j是否为第s组中最后一个状态,若不是,则令j=j+n,继续执行步骤S3~S6;
S7.判断第s组的任务是否结束,若已结束,则清空List Q,令s=s+1,继续执行步骤S2~S7;
S8.待n组任务都结束后,得到物品i放入容量为C的背包时的最大价值fi(C)=max{fi(1),fi(2),L,fi(s),L,fi(sn)},其中fi(s)表示第s组获得的最大价值;判断i是否大于N,若不满足,则令i=i+1,继续执行步骤S1~S8;若满足,通过比较每种物品i装入容量为C的背包中获得的最大价值fi(C),即得N种物品放入容量为C的背包中的最大总价值fN(C)=max{f1(C),f2(C),L,fN(C)}。
3.根据权利要求1所述的基于改进动态规划算法求解有界背包问题的方法,其特征在于,多个分组的计算任务并行执行。
4.根据权利要求3所述的基于改进动态规划算法求解有界背包问题的方法,其特征在于,包括如下步骤:
S1.计算余数a=j mod wi,余数a共有n种,将拥有相同余数a的容量j分为一组,共有n组,创建n个进程,在同一进程中对将具有相同容量状态j进行计算,在每个进程中创建一个键值对列表List Q’;
S2.在第s个进程中,起始令j=as,b=0,其中1≤s≤n,as为第s组对应的余数,b为背包容量为j时背包中可以装入物品i的最大数量;
S3.计算S2中背包容量为j时的潜在价值
Figure FDA0002743159090000021
创建一个键值对A<profit,number>,令A.profit=profit,A.number=b;
S4.将键值对A<profit,number>插入List Q’中,判断List Q’中First_pair.number+ki是否小于A.number,满足条件,删除First_pair,否则从List Q’尾部插入A<profit,number>,其中First_pair为List Q’的第一个元素;
S5.判断键值对Former_pair.profit是否大于A.profit,若不满足条件,则删去前一个键值对,循环本步骤直到满足条件,其中Former_pair为A的前一个键值对;
S6.比较List Q’中所有元素的profit,取出最大的profit,得到背包容量为j、物品i放入背包时的最大价值fi(j)
Figure FDA0002743159090000031
判断第s个进程任务是否已结束,若不是,则令j=j+n,继续执行步骤S3~S6;
S7.比较在每个进程中获得的最大价值fi(sl),其中1≤l≤n,得到物品i放入容量为C的背包时的最大价值fi(C)=max{fi(s1),fi(s2),L,fi(sn)};判断i是否大于N,若不满足,则令i=i+1,继续执行步骤S1~S8;若满足,通过比较每种物品i装入容量为C的背包中获得的最大价值fi(C),即得N种物品放入容量为C的背包中的最大总价值fN(C)=max{f1(C),f2(C),L,fN(C)}。
CN202011157234.9A 2020-10-26 2020-10-26 基于改进动态规划算法求解有界背包问题的方法 Pending CN112214718A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011157234.9A CN112214718A (zh) 2020-10-26 2020-10-26 基于改进动态规划算法求解有界背包问题的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011157234.9A CN112214718A (zh) 2020-10-26 2020-10-26 基于改进动态规划算法求解有界背包问题的方法

Publications (1)

Publication Number Publication Date
CN112214718A true CN112214718A (zh) 2021-01-12

Family

ID=74055311

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011157234.9A Pending CN112214718A (zh) 2020-10-26 2020-10-26 基于改进动态规划算法求解有界背包问题的方法

Country Status (1)

Country Link
CN (1) CN112214718A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115221460A (zh) * 2022-09-20 2022-10-21 浙江保融科技股份有限公司 一种有限资源下的有序背包问题分段动态规划求解方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115221460A (zh) * 2022-09-20 2022-10-21 浙江保融科技股份有限公司 一种有限资源下的有序背包问题分段动态规划求解方法
CN115221460B (zh) * 2022-09-20 2023-01-06 浙江保融科技股份有限公司 一种有限资源下的有序背包问题分段动态规划求解方法

Similar Documents

Publication Publication Date Title
Fu et al. Anderson Accelerated Douglas--Rachford Splitting
Xiong et al. A simulation-based study of dispatching rules in a dynamic job shop scheduling problem with batch release and extended technical precedence constraints
US20190080244A1 (en) Scheduling method and system based on improved variable neighborhood search and differential evolution algorithm
Klamt et al. Algorithmic approaches for computing elementary modes in large biochemical reaction networks
US11366806B2 (en) Automated feature generation for machine learning application
US20210304066A1 (en) Partitioning for an execution pipeline
CN113935235A (zh) 基于遗传算法和代理模型的工程设计优化方法及装置
Sowkuntla et al. MapReduce based improved quick reduct algorithm with granular refinement using vertical partitioning scheme
CN112214718A (zh) 基于改进动态规划算法求解有界背包问题的方法
CN108108242B (zh) 基于大数据的存储层智能分发控制方法
JP3461525B2 (ja) データを正規化する手段を含むニューラル・プロセッサ
CN109074348A (zh) 用于对输入数据集进行迭代聚类的设备和迭代方法
CN110348693B (zh) 基于多核计算的多机器人快速任务调度方法
JP2021039751A (ja) 大規模組み合わせ最適化のための大域ビューを用いた局所探索
Gomory Large and non-convex problems in linear programming
Tchendji et al. High performance CGM-based parallel algorithms for the optimal binary search tree problem
WO2022057459A1 (zh) 一种基于Tensorcore处理int4数据类型的方法、系统、设备及介质
CN111860838B (zh) 一种神经网络的全连接层计算方法和装置
Piza-Davila et al. A parallel hill-climbing algorithm to generate a subset of irreducible testors
CN115480919A (zh) 卷积优化运算方法、装置、计算机设备及存储介质
JP2022159039A (ja) 大規模な複雑な組合せ問題における問題分解
CN111260036B (zh) 一种神经网络加速方法和装置
CN114691302A (zh) 一种面向大数据处理的动态缓存替换方法及设备
CN114355774A (zh) 模型预测控制方法及装置
CN113128771A (zh) 一种并行差分进化算法的昂贵函数寻优方法及其装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination