CN115221460A - 一种有限资源下的有序背包问题分段动态规划求解方法 - Google Patents

一种有限资源下的有序背包问题分段动态规划求解方法 Download PDF

Info

Publication number
CN115221460A
CN115221460A CN202211140581.XA CN202211140581A CN115221460A CN 115221460 A CN115221460 A CN 115221460A CN 202211140581 A CN202211140581 A CN 202211140581A CN 115221460 A CN115221460 A CN 115221460A
Authority
CN
China
Prior art keywords
backpack
state
articles
stage
serial number
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.)
Granted
Application number
CN202211140581.XA
Other languages
English (en)
Other versions
CN115221460B (zh
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.)
Zhejiang Baorong Technology Co ltd
Original Assignee
Zhejiang Baorong Technology Co ltd
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 Zhejiang Baorong Technology Co ltd filed Critical Zhejiang Baorong Technology Co ltd
Priority to CN202211140581.XA priority Critical patent/CN115221460B/zh
Publication of CN115221460A publication Critical patent/CN115221460A/zh
Application granted granted Critical
Publication of CN115221460B publication Critical patent/CN115221460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • 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
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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"
    • G06Q10/047Optimisation of routes or paths, e.g. travelling salesman problem

Landscapes

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

Abstract

本发明公开了一种有限资源下的有序背包问题分段动态规划求解方法,包括:对于输入的数据,预设物品数量n,每个物品的序号i、重量
Figure 11571DEST_PATH_IMAGE001
和价格
Figure 25663DEST_PATH_IMAGE002
,背包承重W;设定状态数组F的最大存储;读取可用内存大小,通过状态数组的最大存储和可用内存大小之间的最小值确定状态数组F的元素数量S;对物品按重量从轻到重进行排序,排序后物品的序号记为j,记录序号j与序号i的对应关系;定义状态数组的行数为n,列数
Figure 823199DEST_PATH_IMAGE003
;定义第t阶段背包承重,依次判断每个物品是否被选择放入背包,计算第t阶段背包中物品的总价格;如果满足第一预设条件,则重新定义第t+1阶段背包承重,计算第t+1阶段背包中物品的总价格,直至满足第二预设条件,输出结果。

Description

一种有限资源下的有序背包问题分段动态规划求解方法
技术领域
本发明涉及数据处理领域,特别涉及一种有限资源下的有序背包问题分段动态规划求解方法。
背景技术
背包问题是一种组合优化的NP完全问题。在数学上,它是指,给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高,当然,重量和价格可以替换成其他任意的参数。其中,每种物品只能选择0个或1个的背包问题,称为0-1背包问题。
目前,0-1背包问题一般采用动态规划进行求解,其基本思路是:对于每一个物品,要么放入背包,要么不放入背包;在传统的动态规划求解背包问题中,不需要对物品进行排序,并且在对第i个物品进行选择时,当选择放入的总价格与选择不放入一样时,选择不放入。
现如今,大量的数据处理工作主要由计算机执行,在数据处理过程中,对于传统的动态规划求解背包问题,如果需要在求解最大总价格的同时,求解每个物品的放入状态,需要使用二维数组作为状态变量。当总价W=1亿,数量n=1万时,状态变量元素需要使用int32,状态数组需要占用W*n*4byte≈ 3725.29GB的内存。这显然是一般计算机所不能承受的,也就是说,现有的背包问题求解方式在数据量较大时,会产生巨量的内存需求,严重制约数据处理效率,因此需要提供一种新的方式,减少内存占用,提高数据处理效率。
发明内容
针对现有技术在处理有序0-1背包问题时,内存占用量大的问题,本发明提供了一种有限资源下的有序背包问题分段动态规划求解方法,能够在内存资源有限的情况下,通过优化处理流程以进行分段处理,减少内存占用,提高计算机的运行和处理效率。
本发明公开的一种有限资源下的有序背包问题分段动态规划求解方法,包括:
A1:对于输入的数据,预设物品数量n,每个物品的序号i、重量
Figure 298855DEST_PATH_IMAGE001
和价格
Figure 893303DEST_PATH_IMAGE002
,背 包承重W,其中
Figure 75672DEST_PATH_IMAGE003
A2:设定状态数组F的最大存储;
A3:读取可用内存大小,通过状态数组的最大存储和可用内存大小之间的最小值确定状态数组F的元素数量S;
A4:对物品按重量从轻到重进行排序,排序后物品的序号记为j,记录序号j与序号i的对应关系;
A5:定义状态数组的行数为n,列数c,状态数组F记为
Figure 74371DEST_PATH_IMAGE004
A6:定义第t阶段背包承重,依次判断每个物品是否被选择放入背包,计算第t阶段背包中物品的总价格;如果满足第一预设条件,则重新定义第t+1阶段背包承重,计算第t+1阶段背包中物品的总价格,直至满足第二预设条件,输出结果。
本发明中,物品数量中的物品,是指任何可被计数的数据、信息,而不局限于实体物件,其中,重量不一定特指物理上的重量,价格不一定特指经济中的价格,这两个参数可以替换为任意参数。可用内存大小,实际中将减去一个需要保留从而让服务器稳定运行的安全阈值,以下不再一一说明。
本发明在解决背包问题时,通过读取内存大小来创建状态数组,从而避免内存溢出和过长的运行时间;将任务进行分阶段,根据预设条件判断是否需要进一步执行t+1阶段,并最终得到计算结果,这一过程中,由于不需要同时调用所有数据,因此内存占用较小,可以减少计算机运行压力,提高处理效率。
作为优选,步骤A5的过程包括:定义状态数组的行数为n,列数c为S/n向下取整,状 态数组的列序号为1, 2, …, c,代表背包承重的档次,记为
Figure 864484DEST_PATH_IMAGE005
作为优选,步骤A5中,状态数组F中的元素记为F[i][j],代表状态数组F中第i行第 j列的元素,令
Figure 869480DEST_PATH_IMAGE006
且不存入状态数组。这些步骤是基础的定义过程,可以帮助理清 数据之间的关系。
作为优选,步骤A6中,起始时t为1,定义第一阶段背包承重为
Figure 765411DEST_PATH_IMAGE007
,单位
Figure 341535DEST_PATH_IMAGE008
向下取整,每个物品的重量
Figure 218356DEST_PATH_IMAGE009
向上取整。
作为优选,步骤A6中,所述依次判断每个物品是否被选择放入背包,包括:
将第1个物品放入背包,填入第一行状态数组F[1],当
Figure 616322DEST_PATH_IMAGE010
时,
Figure 881606DEST_PATH_IMAGE011
,否则
Figure 753266DEST_PATH_IMAGE012
对是否将第j个物品放入背包进行选择,对于状态数组元素
Figure 727169DEST_PATH_IMAGE013
而言,新的 状态为
Figure 76897DEST_PATH_IMAGE014
,当
Figure 61998DEST_PATH_IMAGE015
时,表示物品j被选择放入背包,反之被选择不放入 背包,依次填入第j行状态数组F[j];
从状态数组的最后一个元素
Figure 838980DEST_PATH_IMAGE016
开始判断物品j是否被选择放入背包,如 果
Figure 693322DEST_PATH_IMAGE017
,则物品
Figure 830430DEST_PATH_IMAGE018
对应的物品序号i记入 被装入背包的序号列表X,剩余状态子数组为
Figure 693475DEST_PATH_IMAGE019
,如果
Figure 883500DEST_PATH_IMAGE020
Figure 693980DEST_PATH_IMAGE021
,剩余状态子数组为
Figure 523526DEST_PATH_IMAGE022
剩余状态子数组
Figure 634221DEST_PATH_IMAGE023
为原状态数组或剩余状态子数组的第1行至第i行、第1列至 第j列构成的子矩阵;
对任意剩余状态子数组,假设其为
Figure 947951DEST_PATH_IMAGE024
,当
Figure 511306DEST_PATH_IMAGE025
时,当
Figure 3599DEST_PATH_IMAGE026
Figure 968799DEST_PATH_IMAGE027
,则物品j对应的物品序号i记入被装入背包的 序号列表X,新的剩余状态子数组
Figure 992906DEST_PATH_IMAGE028
,如果
Figure 892556DEST_PATH_IMAGE029
,新的剩余状态子数组
Figure 551988DEST_PATH_IMAGE030
,重复本步骤直到新的剩余状态子数组为空。
作为优选,步骤A6中,所述第一预设条件为:
Figure 371695DEST_PATH_IMAGE031
前一阶段完成后,剩余物品中剔除
Figure 956916DEST_PATH_IMAGE032
的物品,其数量仍记为
Figure 343863DEST_PATH_IMAGE033
,序 号仍记为j,j=1,2,…,
Figure 180887DEST_PATH_IMAGE033
,记录j与物品原始序号i的对应关系,新的列数
Figure 996046DEST_PATH_IMAGE034
,如果
Figure 14818DEST_PATH_IMAGE031
,定义第t阶段背包承重为
Figure 508903DEST_PATH_IMAGE035
,单位
Figure 126181DEST_PATH_IMAGE036
,剩余的每个物品的重量
Figure 920480DEST_PATH_IMAGE037
作为优选,步骤A6中,所述第二预设条件为:
Figure 719940DEST_PATH_IMAGE038
重复执行不同阶段的计算任务,直到
Figure 107846DEST_PATH_IMAGE038
,定义该阶段背包承重为
Figure 418753DEST_PATH_IMAGE039
,仍记为
Figure 939995DEST_PATH_IMAGE035
计算背包中物品的总价格
Figure 913286DEST_PATH_IMAGE040
,输出背包中装入物品的序号列表X、总价 格P。
本发明的实质性效果包括:在有限的资源、有限的时间下实现了对背包问题的求解,提高了将背包问题用于解决实际问题的能力;本发明可以适用于大多数资源有限、时间有限下的背包问题求解,将状态数组对内存的占用限制在S个数据元素,且时间复杂度也明显下降,减少内存的占用,可以减少计算机运行压力,提高处理效率。
附图说明
图1是本发明实施例的流程图;
图2是本发明实施例的内存对比图;
图3是本发明实施例的时间对比图;
图4是本发明实施例的误差走势图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合实施例,对本技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含A、B和C”、“包含A、B、C”是指A、B、C三者都包含,“包含A、B或C”是指包含A、B、C三者之一,“包含A、B和/或C”是指包含A、B、C三者中任1个或任2个或3个。
下面以具体的实施例对本发明的技术方案进行详细说明。实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
实施例:
一种有限资源下的有序背包问题分段动态规划求解方法,如图1所示,包括:
A1:对于输入的数据,预设物品数量n,每个物品的序号i、重量
Figure 647543DEST_PATH_IMAGE001
和价格
Figure 502497DEST_PATH_IMAGE002
,背 包承重W,其中
Figure 982372DEST_PATH_IMAGE003
A2:设定状态数组F的最大存储;
A3:读取可用内存大小,通过状态数组的最大存储和可用内存大小之间的最小值确定状态数组F的元素数量S;
A4:对物品按重量从轻到重进行排序,排序后物品的序号记为j,记录序号j与序号i的对应关系;
A5:定义状态数组的行数为n,列数
Figure 516777DEST_PATH_IMAGE041
,状态数组F记为
Figure 738330DEST_PATH_IMAGE004
A6:定义第t阶段背包承重,依次判断每个物品是否被选择放入背包,计算第t阶段背包中物品的总价格;如果满足第一预设条件,则重新定义第t+1阶段背包承重,计算第t+1阶段背包中物品的总价格,直至满足第二预设条件,输出结果。
本实施例将采用实际的数据对上述过程进行解释和举例,其中本实施例背包承重W=60,物品数量n=7,状态数组需要的内存大小=W*n*4byte=60*7*4byte=1680byte,各物品的重量、价格如表1所示:
Figure 256030DEST_PATH_IMAGE042
按重量排序后如表2:
Figure 613849DEST_PATH_IMAGE043
不分阶段时:
首先将物品2放入背包,重量为5,价格为21,此时状态矩阵占用内存=60*1*4byte=240byte。
然后考虑是否将物品5放入背包,形成新的状态矩阵,状态矩阵占用内存=60*2*4byte=480byte。
如此往复直到所有物品都经历一轮考虑,状态矩阵占用内存=60*7*4byte=1680byte,共进行了60*7次状态值的对比。
最优方案是将物品2、物品5、物品1、物品4、物品3,装入背包的总重量53,总价格97。
分阶段时:
假定S=180byte/4byte,那么
Figure 46450DEST_PATH_IMAGE044
;第 一阶段各物品重量如表3:
Figure 752369DEST_PATH_IMAGE045
与不分段一样依次把物品放入背包可得到一阶段状态矩阵如表4:
Figure 60378DEST_PATH_IMAGE046
状态矩阵所需内存=7*6*4byte=168byte。
因此第一阶段得到的方案是将物品2、物品5、物品1、物品4放入背包,总价格84,总重量38(注意这里需要计算原始重量),背包剩余重量22,此时可以释放状态矩阵。
进入第二阶段,
Figure 679228DEST_PATH_IMAGE047
,剔除重量大于22的物品后
Figure 407365DEST_PATH_IMAGE048
Figure 335001DEST_PATH_IMAGE049
Figure 72799DEST_PATH_IMAGE050
,所以记
Figure 670789DEST_PATH_IMAGE051
第二阶段物品如表5:
Figure 465701DEST_PATH_IMAGE052
依次把物品放入背包后状态矩阵;可得状态矩阵所需的内存=1*22*4byte=88byte。第二阶段得到的结果是将物品3放入背包,总价格13,总重量15;阶段循环结束。
综合两阶段得到最终方案是将物品2、物品5、物品1、物品4、物品3装入,装入背包的总重量53,总价格97,与不分段得到的结果一致。
当然,随着物品数量的增加和背包承重的增加,方案完全一致的比例会有所下降,但除极端案例外,总价格偏差始终在很小的范围,且内存需求与时间需求的差距会更加明显。
例如,当背包承重为100000,物品重量和价格均为1-10000的随机数时,不分阶段与分阶段的内存对比如图2所示,其中有明显分段折线的表示分阶段的数据,可以看到内存占用明显减少。
当背包承重为100000,物品重量和价格均为1-10000的随机数时,不分阶段与分阶段的时间对比如图3所示,其中有明显分段折线的表示分阶段的数据,可以看到时间明显减少。
当背包承重为100000,物品重量和价格均为1-10000的随机数时,不分阶段与分阶段的误差走势如图4所示,可以看到误差仍然非常小。
综上所述,本实施例所做的技术改造主要有两点:
第一点是通过排序和覆盖性放入来满足有序的要求。在传统的动态规划求解背包问题中,不需要对物品进行排序,并且在对第i个物品进行选择时,当选择放入的总价格与选择不放入一样时,选择不放入。本发明首先对备选物品按重量进行排序,然后在对第i个物品进行选择时,如果总价格相等则会选择放入物品i,覆盖原方案,从而让含更大重量物品的方案在同样总价格下取代含较小重量物品的方案。
第二点是通过读取内存大小来创建状态数组,从而避免内存溢出和过长的运行时 间。在传统的动态规划求解背包问题中,如果需要在求解最大总价格的同时,求解每个物品 的放入状态,需要使用二维数组作为状态变量。当W=1亿,n=1万时,状态变量元素需要使用 int32,状态数组需要占用
Figure 203143DEST_PATH_IMAGE053
。与此同时,每一个状态变量元素 的更新都是一些比较与赋值,时间复杂度为O(Wn)。本发明设定内存上限,并读取服务器内 存大小,两者取最小值来确定可存储数据元素的最大数量S,来限定状态数组的大小,将状 态数组设置为
Figure 603687DEST_PATH_IMAGE054
。取U=向下取整(W/c)为1个单位,令当前阶段背包承重为c,物品重量
Figure 56184DEST_PATH_IMAGE055
,使用覆盖性动态规划方法求解,然后将求解后背包剩余承重作 为新的承重,未被选择放入的物品作为新的备选物品重复上述过程。上述解法将状态数组 对内存的占用限制在S个数据元素以内,且时间复杂度也明显下降,尽管最后精度有所下 降,但在很多场景下,相对于无法求解来说是有意义的。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中可以根据需要而将上述功能分配由不同的功能模块完成,即将具体装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的实施例中,应该理解到,所揭露的结构和方法,可以通过其它的方式实现。例如,以上所描述的关于结构的实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个结构,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,结构或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (7)

1.一种有限资源下的有序背包问题分段动态规划求解方法,其特征在于,包括:
A1:对于输入的数据,预设物品数量n,每个物品的序号i、重量
Figure 922091DEST_PATH_IMAGE001
和价格
Figure 895908DEST_PATH_IMAGE002
,背包承重W,其中
Figure 69794DEST_PATH_IMAGE003
A2:设定状态数组F的最大存储;
A3:读取可用内存大小,通过状态数组的最大存储和可用内存大小之间的最小值确定状态数组F的元素数量S;
A4:对物品按重量从轻到重进行排序,排序后物品的序号记为j,记录序号j与序号i的对应关系;
A5:定义状态数组的行数为n,列数
Figure 679896DEST_PATH_IMAGE004
,状态数组F记为
Figure 43269DEST_PATH_IMAGE005
A6:定义第t阶段背包承重,依次判断每个物品是否被选择放入背包,计算第t阶段背包中物品的总价格;如果满足第一预设条件,则重新定义第t+1阶段背包承重,计算第t+1阶段背包中物品的总价格,直至满足第二预设条件,输出结果。
2.根据权利要求1所述的一种有限资源下的有序背包问题分段动态规划求解方法,其特征在于,步骤A5的过程包括:定义状态数组的行数为n,列数c为S/n向下取整,状态数组的列序号为1, 2, …, c,代表背包承重的档次,记为
Figure 804683DEST_PATH_IMAGE006
3.根据权利要求1所述的一种有限资源下的有序背包问题分段动态规划求解方法,其特征在于,步骤A5中,状态数组F中的元素记为F[i][j],代表状态数组F中第i行第j列的元素,令
Figure 75434DEST_PATH_IMAGE007
且不存入状态数组。
4.根据权利要求1所述的一种有限资源下的有序背包问题分段动态规划求解方法,其特征在于,步骤A6中,起始时t为1,定义第一阶段背包承重为
Figure 735348DEST_PATH_IMAGE008
,单位
Figure 745155DEST_PATH_IMAGE009
向下取整,每个物品的重量
Figure 206747DEST_PATH_IMAGE010
向上取整。
5.根据权利要求4所述的一种有限资源下的有序背包问题分段动态规划求解方法,其特征在于,步骤A6中,所述依次判断每个物品是否被选择放入背包,包括:
将第1个物品放入背包,填入第一行状态数组F[1],当
Figure 453927DEST_PATH_IMAGE011
时,
Figure 176088DEST_PATH_IMAGE012
,否则
Figure 940650DEST_PATH_IMAGE013
对是否将第j个物品放入背包进行选择,对于状态数组元素
Figure 738973DEST_PATH_IMAGE014
而言,新的状态为
Figure 691142DEST_PATH_IMAGE015
,当
Figure 807872DEST_PATH_IMAGE016
时,表示物品j被选择放入背包,反之被选择不放入背包,依次填入第j行状态数组F[j];
从状态数组的最后一个元素
Figure 267803DEST_PATH_IMAGE017
开始判断物品j是否被选择放入背包,如果
Figure 156518DEST_PATH_IMAGE018
,则物品
Figure 778123DEST_PATH_IMAGE019
对应的物品序号i记入被装入背包的序号列表X,剩余状态子数组为
Figure 710045DEST_PATH_IMAGE020
,如果
Figure 84919DEST_PATH_IMAGE021
,剩余状态子数组为
Figure 654572DEST_PATH_IMAGE022
剩余状态子数组
Figure 476772DEST_PATH_IMAGE023
为原状态数组或剩余状态子数组的第1行至第i行、第1列至第j列构成的子矩阵;
对任意剩余状态子数组,假设其为
Figure 538400DEST_PATH_IMAGE024
,当
Figure 705246DEST_PATH_IMAGE025
时,当
Figure 565624DEST_PATH_IMAGE026
则物品j对应的物品序号i记入被装入背包的序号列表X,新的剩余状态子数组
Figure 483026DEST_PATH_IMAGE027
,如果
Figure 782683DEST_PATH_IMAGE028
,新的剩余状态子数组
Figure 686310DEST_PATH_IMAGE029
,重复本步骤直到新的剩余状态子数组为空。
6.根据权利要求5所述的一种有限资源下的有序背包问题分段动态规划求解方法,其特征在于,步骤A6中,所述第一预设条件为:
Figure 337214DEST_PATH_IMAGE030
前一阶段完成后,剩余物品中剔除
Figure 504147DEST_PATH_IMAGE031
的物品,其数量仍记为
Figure 136772DEST_PATH_IMAGE032
,序号仍记为j,
Figure 897618DEST_PATH_IMAGE033
,记录j与物品原始序号i的对应关系,新的列数
Figure 906156DEST_PATH_IMAGE034
,如果
Figure 6441DEST_PATH_IMAGE035
,定义第t阶段背包承重为
Figure 123433DEST_PATH_IMAGE036
,单位
Figure 526120DEST_PATH_IMAGE037
,剩余的每个物品的重量
Figure 90963DEST_PATH_IMAGE038
7.根据权利要求6所述的一种有限资源下的有序背包问题分段动态规划求解方法,其特征在于,步骤A6中,所述第二预设条件为:
Figure 802960DEST_PATH_IMAGE039
重复执行不同阶段的计算任务,直到
Figure 407248DEST_PATH_IMAGE039
,定义该阶段背包承重为
Figure 859964DEST_PATH_IMAGE040
,仍记为
Figure 233307DEST_PATH_IMAGE041
计算背包中物品的总价格
Figure 432383DEST_PATH_IMAGE042
,输出背包中装入物品的序号列表X、总价格P。
CN202211140581.XA 2022-09-20 2022-09-20 一种有限资源下的有序背包问题分段动态规划求解方法 Active CN115221460B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211140581.XA CN115221460B (zh) 2022-09-20 2022-09-20 一种有限资源下的有序背包问题分段动态规划求解方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211140581.XA CN115221460B (zh) 2022-09-20 2022-09-20 一种有限资源下的有序背包问题分段动态规划求解方法

Publications (2)

Publication Number Publication Date
CN115221460A true CN115221460A (zh) 2022-10-21
CN115221460B CN115221460B (zh) 2023-01-06

Family

ID=83617509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211140581.XA Active CN115221460B (zh) 2022-09-20 2022-09-20 一种有限资源下的有序背包问题分段动态规划求解方法

Country Status (1)

Country Link
CN (1) CN115221460B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100205590A1 (en) * 2007-08-17 2010-08-12 National Ict Australia Limited Automating dynamic programs
US20120158627A1 (en) * 2010-12-17 2012-06-21 Oracle International Corporation Framework for optimized packing of items into a container
CN103687027A (zh) * 2013-12-26 2014-03-26 广东省电信规划设计院有限公司 Lte网络的资源分配方法和系统
CN109583749A (zh) * 2018-11-27 2019-04-05 李伟 一种基于动态规划的软件研制成本智能控制方法及系统
CN111507846A (zh) * 2020-04-17 2020-08-07 新分享科技服务(深圳)有限公司 一种资产筛选封包方法、装置、储存介质及电子设备
CN112214718A (zh) * 2020-10-26 2021-01-12 湖南工业大学 基于改进动态规划算法求解有界背包问题的方法
CN113887122A (zh) * 2021-07-30 2022-01-04 南京信息工程大学 一种多目标背包问题的混合蛙跳求解方法
CN114691302A (zh) * 2022-04-21 2022-07-01 南京大学 一种面向大数据处理的动态缓存替换方法及设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100205590A1 (en) * 2007-08-17 2010-08-12 National Ict Australia Limited Automating dynamic programs
US20120158627A1 (en) * 2010-12-17 2012-06-21 Oracle International Corporation Framework for optimized packing of items into a container
CN103687027A (zh) * 2013-12-26 2014-03-26 广东省电信规划设计院有限公司 Lte网络的资源分配方法和系统
CN109583749A (zh) * 2018-11-27 2019-04-05 李伟 一种基于动态规划的软件研制成本智能控制方法及系统
CN111507846A (zh) * 2020-04-17 2020-08-07 新分享科技服务(深圳)有限公司 一种资产筛选封包方法、装置、储存介质及电子设备
CN112214718A (zh) * 2020-10-26 2021-01-12 湖南工业大学 基于改进动态规划算法求解有界背包问题的方法
CN113887122A (zh) * 2021-07-30 2022-01-04 南京信息工程大学 一种多目标背包问题的混合蛙跳求解方法
CN114691302A (zh) * 2022-04-21 2022-07-01 南京大学 一种面向大数据处理的动态缓存替换方法及设备

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
KHALILCHEBIL等: "A dynamic programming algorithm for the Knapsack Problem with Setup", 《ELSEVIER》 *
孙宇兴等: "利用动态规划解决01背包问题", 《现代交际》 *
崔耀东等: "背包问题的两阶段动态规划算法", 《高校应用数学学报A辑(中文版)》 *
张景成等: "基于0/1背包问题的算法探究", 《电脑知识与技术(学术交流)》 *
李小莲: "动态规划法的应用分析", 《计算机时代》 *
王正理等: "考虑时间因素的0-1背包调度问题", 《计算机科学》 *
钱忠胜等: "结合关键点概率与路径相似度的多路径覆盖策略", 《软件学报》 *
高思齐等: "求解01背包问题的贪婪蛙跳算法", 《计算机科学》 *

Also Published As

Publication number Publication date
CN115221460B (zh) 2023-01-06

Similar Documents

Publication Publication Date Title
CN110956272B (zh) 实现数据处理的方法和系统
US20200202198A1 (en) Neural network processor
JP4339381B2 (ja) 共有メモリ型マルチプロセッサシステム及びその情報処理方法
US9886377B2 (en) Pipelined convolutional operations for processing clusters
CN110111048A (zh) 仓储系统中的订单任务调度方法
KR102038390B1 (ko) 고효율 병렬 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법
CN104915817A (zh) 一种集装箱的装箱方法和装置
CN105264488B (zh) 用于使用数组对来合并有序列表的方法和系统
MXPA97002050A (en) Filter system of priority row and metodode operac
TWI522945B (zh) 物品關聯推薦的方法及系統
US11727256B2 (en) Hardware architecture for processing data in neural network
US20170293839A1 (en) Systems and Methods for Multi-Objective Heuristics with Conditional Genes
CN107729423A (zh) 一种大数据处理方法及装置
KR20190111810A (ko) 데이터 처리 시스템 및 데이터 처리 방법
CN112084037A (zh) 神经网络的内存分配方法及装置
CN106372393A (zh) 一种基于装配矩阵的复杂装配体的装配序列规划方法
CN115221460B (zh) 一种有限资源下的有序背包问题分段动态规划求解方法
US20240140713A1 (en) Information processing device, information processing method, computer program product, and information processing system
CN108389152A (zh) 一种图结构感知的图处理方法及装置
CN113255094A (zh) 优化设备、优化程序和优化方法
CN106709572B (zh) 一种数据处理方法及设备
CN114265849B (zh) 数据聚合方法及系统
CN113112084A (zh) 一种教练机后机身研发流程优化方法及装置
US20220366216A1 (en) Method and non-transitory computer readable medium for compute-in-memory macro arrangement, and electronic device applying the same
CN110415162A (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
GR01 Patent grant
GR01 Patent grant