软件学报  2017, Vol. 28 Issue (1): 1-16   PDF    
求解背包问题的演化算法
王熙照1, 贺毅朝2     
1. 深圳大学 计算机与软件学院, 广东 深圳 518060;
2. 河北地质大学 信息工程学院, 河北 石家庄 050031
摘要: 背包问题(knapsack problem,简称KP)是一类著名的组合优化问题,也是一类NP难问题,它包括0-1背包问题、有界背包问题、多维背包问题、多背包问题、多选择背包问题、二次背包问题、动态背包问题和折扣背包问题等多种形式,在众多领域有着广泛的应用.演化算法(EAs)是一类有效的快速近似求解KP的算法.对近10余年来利用EAs求解KP的研究情况进行了较为详细的总结,一方面讨论了利用EAs求解各种KP问题时个体的编码方法与处理不可行解的有效方法,另一方面,为今后进一步利用最新提出的EAs求解KP问题提供了一条可借鉴的思路.
关键词: 背包问题     数学模型     演化算法     个体编码     不可行解    
Evolutionary Algorithms for Knapsack Problems
WANG Xi-Zhao1, HE Yi-Chao2     
1. College of Computer Science and Software Engineering, Shenzhen University, Shenzhen 518060, China;
2. College of Information and Engineering, Hebei GEO University, Shijiazhuang 050031, China
Foundation item: National Natural Science Foundation of China (71371063); Basic Research Project of Knowledge Innovation Program in Shenzhen (JCYJ20150324140036825); Natural Science Foundation of Hebei Province (F2016403055); Scientific Research Project Program of Colleges and Universities in Hebei Province (ZD2016005)
Abstract: Knapsack problem (KP) is a well-known combinatorial optimization problem which includes 0-1 KP, bounded KP, multi-constraint KP, multiple KP, multiple-choice KP, quadratic KP, dynamic knapsack KP, discounted KP and other types of KPs. KP can be considered as a mathematical model extracted from variety of real fields and therefore has wide applications. Evolutionary algorithms (EAs) are universally considered as an efficient tool to solve KP approximately and quickly. This paper presents a survey on solving KP by EAs over the past ten years. It not only discusses various KP encoding mechanism and the individual infeasible solution processing but also provides useful guidelines for designing new EAs to solve KPs.
Key words: knapsack problem     mathematical model     evolutionary algorithm     individual coding     infeasible solution    

背包问题(knapsack problem,简称KP)[1-3]是一类重要的组合优化问题,在工业、经济、金融与计算机领域的资源分配、资金预算、投资决策、装载问题、整数规划、分布式系统以及信息安全领域的公钥密码系统构建中具有重要的理论和应用价值.KP是一类NP难问题,当规模较大时,经典方法(如动态规划)因时间复杂度很高导致实用性较差,因此,利用现代启发式算法求解KP越来越受到重视;演化算法(evolutionary algorithms,简称EAs)作为一种通用启发式算法已被用于KP问题的求解研究,而且对不同KP已给出了许多有效的求解方法.最早的0-1背包问题(0-1 knapsack problem,简称0-1 KP)出现在文献[4],而Dantzig[5]对0-1 KP的开创性研究工作对后来KP的推广起到了关键性作用.目前,KP问题包括多种不同形式[1, 3],经典的有0-1 KP、有界背包问题(bounded knapsack problem,简称BKP)、无界背包问题(unbounded knapsack problem,简称UKP)、多维背包问题(multidimensional knapsack problem,简称MDKP)、多背包问题(multiple knapsack problem,简称MKP)、多选择背包问题(multiple-choice knapsack problem,简称MCKP)、二次背包问题(quadratic knapsack problem,简称QKP)、最大最小背包问题(max-min knapsack problem,简称MmKP)、优先约束背包问题(precedence constraint knapsack problem,简称PCKP)、集合联盟背包问题(set-union knapsack problem,简称SUKP)、多目标背包问题(multi-objective knapsack problem,简称MOKP)和在线背包问题(on-line knapsack problem,简称OLKP)等以及它们的变形.近年来,许多新的KP问题,如随机时变背包问题(randomized time-varying knapsack problem,简称RTVKP)[6-8]、多重二次背包问题(quadratic multiple knapsack problem,简称QMKP)[9, 10]、多选择多维背包问题(multiple-choice multidimensional knapsack problem,简称MMKP)[11, 12]和折扣0-1背包问题(discounted {0-1} knapsack problems,简称D{0-1}KP)[13-15]等被相继提出,不仅壮大了KP家族,而且大大拓宽了KP的应用领域.

求解KP的算法一般分为两类:一类是精确算法[16, 17],如动态规划、回溯法和分支限界法等;另一类是非精确算法[18-24],主要有随机算法、近似算法、生物算法和演化算法(EAs)等.由于KP是NP难问题,精确算法的时间复杂度或是伪多项式时间的,或是指数时间的,一般不适用于复杂大规模KP实例的求解,所以在实际应用中非精确算法更受青睐.EAs是一类特殊的随机近似算法,它既不需要计算目标函数的导数和梯度,也不要求目标函数具有连续性,而且具有内在的隐含并行性和全局寻优能力.目前,人们模仿自然界中生物的群体行为,或者受社会实践中某些社会活动的启发,提出了许多有效的EAs,如遗传算法(genetic algorithm,简称GA)[25, 26]、粒子群优化(particle swarm optimization,简称PSO)[27]、蚁群优化(ant colony optimization,简称ACO)[28]、差分演化(differential evolution,简称DE)[29]、人工鱼群算法(artificial fish swarm,简称AFS)[30]、人工蜂群算法(artificial bee colony,简称ABC)[31]、和声搜索算法(harmony search algorithm,简称HSA)[32]、混合蛙跳算法(shuffled frog leaping algorithm,简称SFLA)[33]和人工免疫算法(artificial immune system,简称AIS)[34]等,并已被成功用于求解各种组合优化问题(如KP问题、旅行商问题、集合覆盖问题等),取得了许多有益的研究成果.

本文对近10余年来利用EAs求解KP的研究情况作一个较为详细的总结,第1节介绍有效求解0-1 KP的各种EAs,总结处理0-1 KP不可行解的3种常用方法.第2节简述求解MDKP的多种EAs,介绍处理MDKP不可行解的一种有效方法.第3节总结目前已用于求解MKP的EAs,对个体的两种常用编码方法进行简单对比.第4节介绍利用EAs求解QKP与QMKP的有效算法和处理不可行解的常用方法.第5节介绍利用EAs求解RTVKP,D{0-1}KP,MMKP和MOKP等的研究进展情况.最后分析利用EAs求解KP的研究现状与存在的不足,给出今后有待研究的若干问题与研究思路.

1 求解0-1 KP的EAs总结与分析

0-1 KP是最基本的KP问题,也是一个NP难问题[2].0-1 KP的一般描述为:从若干个具有价值与重量的项中选择一些装入一个具有载重限制的背包中,如何才能使装入背包中各项的重量之和不超过背包载重且价值之和达到最大?

设项j(1≤jn)的价值与重量分别为pjwj,C为背包的载重,其中,pj,wjC均为正整数.令Y=[y1,y2,…,yn]∈ {0,1}n表示0-1 KP的一个可行解,当项j被装入背包时yj=1,否则,yj=0.于是,0-1 KP的数学模型为

$\text{Max}f(Y)=\text{Max}\sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{j}}}$ (1)
$\text{s}\text{.t}\text{. }\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}}\le C$ (2)

任意一个0-1向量只是0-1 KP的一个潜在解,只有当它满足公式(2)的约束时才是一个可行解,否则就是一个不可行解.

Michalewicz[35]首先研究了利用GA求解0-1 KP时个体编码方法的优劣以及处理0-1 KP不可行解的罚函数法与修复法,指出:GA的个体采用0-1向量编码比自然数编码的效果更佳,而且利用修复法处理0-1 KP不可行解比罚函数法的结果更好.此后,人们在利用EAs求解0-1 KP时一般均采用0-1向量的编码方法.文献[36]研究了GA的交叉算子与探索子空间的关系,构造出一种启发式交叉算子,由此提出了一个改进的GA,并用于求解0-1 KP.张铃和张钹[37]利用数论中的佳点集理论与方法,通过对GA的交叉操作进行重新设计,提出了一个新的GA,称为佳点集遗传算法(good point set based genetic algorithm,简称GGA),并利用GGA有效求解0-1 KP等组合优化问题.Lim等人[38]则利用一夫一妻制(monogamous pairs)改进GA产生子代个体的方法,并基于罚函数法计算个体的适应度,给出了求解0-1 KP的一种新的GA算法:MopGA.

除GA以外,人们还研究了如何利用PSO,ACO,HAS,DE和SFLA等求解0-1 KP问题.文献[39]通过修改BPSO[40]中位置更新方程的边界限制,给出了一种改进的二进制粒子群优化算法MBPSO,并利用MBPSO求解0-1 KP问题.文献[41]基于ACO并采用0-1向量编码方式求解0-1 KP.首先用梯形模糊函数对0-1KP做适当的变形,然后在ACO中引入交叉与变异操作,由此给出了利用ACO求解0-1 KP的一种可行方法.文献[42]提出了一种具有双重编码的二进制差分演化算法HBDE,并使用修复法处理不可行解,给出了利用DE求解0-1 KP的一种有效方法.文献[43, 44]分别提出了两种不同的HSA算法,并被成功用于求解0-1 KP问题.文献[45]将量子编码与社会进化算法相结合,提出了一种求解0-1 KP的量子编码社会进化算法.文献[46]提出了一种具有变异操作的SFLA算法,并用于求解0-1 KP.文献[47]提出了一种二进制猴群算法,并利用修复法处理不可行解,给出了求解0-1 KP的一种有效方法.

由上述研究可以看出:利用EAs求解0-1 KP的方法是非常成功的,所给出的算法均能求得0-1 KP实例的一个很好的近似解,甚至求得最优解.从求解速度与求解结果来看,它们与0-1 KP的完全多项式时间近似方案(fully polynomial time approximation scheme,简称FPTAS)[18, 20, 21]比较接近;从实现的难易程度来看,它们比FPTAS更容易实现.

按照个体编码的表示方法,求解0-1 KP的EAs分为两类:一类是个体编码表示0-1 KP的一个潜在解的EAs[35-39, 45, 47],在此类EAs中,个体用0-1向量表示,每个个体为0-1 KP的一个潜在解或可行解;另一类是个体编码不为0-1 KP潜在解的EAs[42-44, 46],其特点是个体用一个实向量表示,并利用映射将实向量映射到一个0-1向量以获得0-1 KP的潜在解.

由于0-1 KP是约束优化问题,利用EAs求解时会产生不可行解,如何合理地评价非正常编码个体(即,对应潜在解不为可行解的个体)的优劣,是求解的一个关键问题.当前,处理此问题的方法主要有3种:罚函数法[35, 43]、修复法[35]和修复与优化法[7, 8].它们的一般原理概述如下.

· 罚函数法

罚函数法用一个适当的惩罚项对不可行解的目标函数值进行适度“惩罚”,从而给出对应个体的一种相对合理的评价.罚函数法有许多不同的实现方法,下面给出最常见的3种形式[35, 43].

(1) $Fit(Y)=\sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{j}}}-{{\log }_{2}}(1+\text{Max}\{\alpha (\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}}-C),0\});$

(2) $Fit(Y)=\sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{j}}}-\text{Max}\{\beta (\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}-C}),0\};$

(3) $Fit(Y)=\left\{ \begin{array}{*{35}{l}} \sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{j}}-\gamma {{(\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}-C})}^{2}}},\text{ }如果\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}>C} \\ \sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{j}}},\text{ }否则 \\ \end{array} \right..$

其中,Y=[y1,y2,…,yn]∈{0,1}n是0-1 KP的一个潜在解,Fit(Y)为Y所对应个体的适应度;a,b,g为惩罚系数,它们的取值一般为Max{pj/wj|j=1,2,…,n}的某个正常数倍.

· 修复法

修复法是通过将不可行解对应的装填方案中价值密度${{{p}_{j}}}/{{{w}_{j}}}\;$小的项从背包中一一去掉,以保证装入背包中所有项的重量之和不超过背包载重,即,将不可行解修复为可行解.根据对背包中项的价值密度${{{p}_{j}}}/{{{w}_{j}}}\;$大小的考虑次序,修复法有两种实现方法[35],我们按照价值密度${{{p}_{j}}}/{{{w}_{j}}}\;$由小到大进行的修复法称为第一修复法(记为fGRA),按相反次序进行的修复法称为第二修复法(记为sGRA),它们的伪代码描述见下.

将0-1 KP的n个项按照${{{p}_{j}}}/{{{w}_{j}}}\;$由大到小的次序排序,并根据这一顺序将各项原来的序号存入数组H[1,…,n]中.设Y=[y1,y2,…,yn]∈{0,1}n为0-1 KP的一个潜在解,于是有下面的算法1和算法2.

算法1. fGRA[35].

(1) $R\leftarrow \sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}}$and jn;

(2) while (R>C) do

(3) if (yH[j]=1) then yH[j]←0 and RR-wH[j];

(4) jj-1;

(5) end while

算法2. sGRA[7].

(1) if $\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}}\le C$ then return

(2) R←0;

(3) for j←1 to n do

(4) if (yH[j]=1) and (R+wH[j]>C) then yH[j]←0 else RR+wH[j];

(5) end for

· 修复与优化法

修复与优化法是针对于所有潜在解的一种处理方法,它首先将其中的不可行解修复为可行解,然后对所有的可行解进行优化处理.在优化处理时,所采用的方法是将未被装入背包且将之装入不会导致超载的、具有最大价值密度的项尽可能地装入背包中,以此提高可行解的质量(目标函数值).以下记修复与优化法为GROA[7],则其算法伪代码描述如下所示.

算法3. GROA.

(1) if $\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}}>C$ then YfGRA(Y) or YsGRA(Y);

(2) $R\leftarrow \sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}};$

(3) for j←1 to n do

(4) if (yH[j]=0) and (R+wH[j]C) then yH[j]←1 and RR+wH[j];

(5) end for

在利用修复法或修复与优化法处理不可行解时,由于所有不可行解Y均被修复为可行解,个体的适应度定义为f(Y)是一种显而易见的简单方法.需要注意的是:在EAs生成初始种群之前,只需对0-1 KP实例中所有的项按价值密度${{{p}_{j}}}/{{{w}_{j}}}\;$由大到小的次序进行一次排序并存储排序后各项的下标即可.事实上,下面对于其他KP不可行解的处理与0-1 KP是相类似的.

2 利用EAs求解MDKP的研究综述

MDKP[1, 3]是0-1 KP的一个扩展形式,也是一个NP难问题,在预算规划、项目日程安排、计算机中处理器的分配和分布式计算机系统中的数据库等方面具有重要的应用.MDKP的数学模型为

$\text{Max}f(Y)=\text{Max}\sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{j}}}$ (3)
$\text{s}\text{.t}\text{. }\sum\nolimits_{j=1}^{n}{{{w}_{ij}}{{y}_{j}}}\le {{C}_{i}},i=1,2,...,d$ (4)
${{y}_{j}}\hat{I}\left\{ 0,1 \right\},j=1,2,\ldots ,n$ (5)

其中,pj是项j的价值,wij(i=1,2,…,d)是项jd个重量限制;pj,wijCi均为正整数,并且满足wijCi,$\sum\nolimits_{j=1}^{n}{{{w}_{ij}}}>{{C}_{i}}$,i=1,2,…,d,j=1,2,…,n;yi=1当且仅当项j被装入背包.显然,0-1 KP是d=1时MDKP的特例,因此,MDKP的求解难度比0-1 KP更大.MDKP的Benchmark请参考文献[48].

作为经典EAs,GA最早被用于求解MDKP问题的研究.Chu和Beasley[48]研究了如何利用GA有效求解MDKP,他们提出的修复与优化法已成为利用EAs求解MDKP时处理不可行解的一种最常用的方法.文献[49]在利用GA求解MDKP时,个体采用自然数编码方式,并通过一种有效的解码方法来避免不可行解的产生.文献[50]基于Tchebycheff标量化函数提出了一种多目标遗传算法MOTGA,并使用文献[48]中的方法处理不可行解,给出了求解MDKP的一种有效方法.文献[51]提出了一种混合GA求解MDKP,并使用罚函数法处理不可行解.文献[52, 53]采用与文献[48]类似的方法处理不可行解,分别基于改进的GA给出了求解MDKP的两种有效方法.

除了利用GA求解MDKP以外,人们还利用其他EAs提出了求解MDKP的许多有效方法.如:文献[54-57]分别基于不同策略提出了多个改进的二进制PSO,并利用它们求解MDKP;文献[58]提出了一种二进制DE算法,用于求解MDKP问题;文献[59]给出了求解MDKP的一种二进制差分搜索算法(binary differential search algorithm,简称BDS);文献[60-62]分别提出了改进的HSA算法,给出了利用HSA求解MDKP的3种不同的方法;文献[63]提出了一种求解MDKP的人类学习优化(human learning optimization,简称HLO)算法;文献[64]基于引导素更新和扩散机制提出了一种改进的ABC算法,给出了求解MDKP的一种有效方法;文献[65]基于萤火虫算法(firefly algorithm,简称FFA),提出了求解MDKP的一种可行方法;最近,文献[66]提出了一种二进制人工藻算法(binary artificial algae algorithm,简称BAAA),并被成功用于求解MDKP问题.

上述求解MDKP的EAs几乎均采用0-1向量的编码形式,求解的关键是如何处理算法产生的不可行解.显然,除文献[51]外都是用修复与优化方法处理不可行解的,这表明,在利用EAs求解MDKP时,修复与优化方法比罚函数法的处理效果更佳.为此,下面主要讨论修复与优化法,限于篇幅,仅给出文献[48]中的经典方法(记为dGROA)的算法伪代码描述,其他请参考相关文献.

设MDKP的代理松弛问题[48]

$\text{Max}\sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{j}}}$ (6)
$\text{s}\text{.t}\text{. }\sum\nolimits_{j=1}^{n}{(\sum\nolimits_{i=1}^{d}{{{r}_{i}}{{w}_{ij}}}){{y}_{j}}}\le \sum\nolimits_{i=1}^{d}{{{r}_{i}}{{C}_{i}}}$ (7)
${{y}_{j}}\in \left\{ 0,1 \right\},j=1,2,\ldots ,n$ (8)

其中,r={r1,r2,...,rd},ri是正实数,称为代理乘子(surrogate multiplier),i=1,2,…,d.

Y=[y1,y2,…,yn]∈{0,1}n为MDKP实例的一个潜在解,将实例中的n个项按${{{p}_{j}}}/{\sum\nolimits_{i=1}^{d}{{{r}_{i}}{{w}_{ij}}}}\;$由大到小的顺序排序,并根据这一次序将各项序号依次存入数组H[1,…,n]中.令I={1,2,…,d},则算法dGROA的伪代码描述如下.

算法4. dGROA[48].

(1) ${{R}_{i}}\leftarrow \sum\nolimits_{j=1}^{n}{{{w}_{ij}}{{y}_{j}}},\forall i\in I;$

(2) for jn downto 1 do

(3) if (yH[j]=1) and (Ri>Ci,∃iI) then

(4) yH[j]←0; RiRi-wi,H[j],∀iI;

(5) end if

(6) end for

(7) for j←1 to n do

(8) if (yH[j]=0) and (Ri+wi,H[j]Ci,∀iI) then

(9) yH[j]←1; RiRi+wi,H[j],∀iI;

(10) end if

(11) end for

研究表明:ACO是一种高效的仿生智能算法,非常适于求解组合优化问题.因此,许多学者对如何利用ACO求解MDKP进行了研究,给出了多种有效方法:文献[67]定义了新的选择概率规则和基于背包项的一种序的启发式信息,提出了一种求解MDKP的改进ACO算法;文献[68]则利用改进的超立方体结构提出了一种新的二进制ACO算法,并用于求解MDKP;文献[69]基于变异和信息素扩散的融合机制提出了一种改进的ACO算法,可有效求解MDKP;文献[70]将拉格朗日启发式策略与ACO相结合,给出了求解MDKP的一种有效方法.

由以上研究可以看出:利用ACO求解MDKP的关键问题是如何将其表示为一个有向图或无图,并通过蚂蚁的随机行走来获得问题的可行解.显然,有效的信息素更新与扩散机制以及顶点的合理选择方法,对利用ACO高效求解MDKP是非常重要的.

3 利用EAs求解MKP的研究现状

MKP[1, 71]在投资决策和多装载问题中具有典型的应用,它的一般描述为:给定n个项和m个背包,其中,项j的价值为pj,重量为wj,第i个背包的载重为Ci;pj,wjCi均为正整数,i=1,2,…,m,j=1,2,…,n,每个项最多只能装入一个背包中.如何选择项装入背包,使得每个背包中装入项的重量之和在不超过背包载重的前提下所有背包中装入项的价值之和最大?MKP的数学模型表示如下:

$\text{Max}f(Y)=\text{Max}\sum\nolimits_{i=1}^{m}{\sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{ij}}}}$ (9)
$\text{s}\text{.t}\text{. }\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{ij}}}\le {{C}_{i}},i=1,2,...,m$ (10)
$\sum\nolimits_{i=1}^{m}{{{y}_{ij}}}\le 1,j=1,2,...,n$ (11)
${{y}_{i}}_{j}\in \left\{ 0,1 \right\},i=1,2,\ldots ,m,j=1,2,\ldots ,n$ (12)

其中,yij=1表示项j被装入了背包i中,yij=0表示项j不装入背包i中.显然,m=1时,MKP退化为0-1 KP.不失一般性,以下总是假设m≥2,wj≤Max1im{Ci},j=1,2,…,n;Ci≥Min1jn{wj},i=1,2,…,m;$\sum\nolimits_{j=1}^{n}{{{w}_{j}}}>\text{Mi}{{\text{n}}_{1\le i\le m}}\{{{C}_{i}}\}.$

由于MKP是一个强NP难问题,不存在FPTAS.为了获得求解MKP的有效近似算法,人们探讨利用EAs求解MKP的可行方法,初步取得了一些研究成果.文献[72]提出了利用群遗传算法(grouping genetic algorithm,简称GGA)求解MKP的方法,计算结果表明:对项的价值与重量高度相关的难MKP实例,GGA比已有某些启发式方法的求解效果更佳.为了实现粒子位置的整数向量编码表示,文献[73]重新设计了PSO的速度与位置更新方程,提出了一种新的离散PSO算法——DPSO,并利用DPSO给出了一种求解MKP的可行方法.文献[74, 75]分别基于整数编码方法,利用AFS求解MKP问题,探讨了利用AFS求解MKP的可行性与有效性.文献[76]则利用GA求解MKP,其中,个体采用0-1矩阵的表示方法,并基于罚函数法定义个体适应度,给出了一种求解MKP的可行方法.可以看出:目前,用于求解MKP的EAs仅限于GA,PSO和AFS,而且个体编码主要是0-1矩阵和整数向量两种基本方法.虽然利用0-1矩阵方法与MKP的数学模型(即公式(9)~公式(12))中可行解的表示是一致的,但由约束条件(11)不难看出:这样的0-1矩阵必然是一个稀疏矩阵,这个苛刻的限制条件必然会降低算法的求解效率.另一方面,利用整数向量的编码方法虽然简单且容易转化为0-1矩阵形式,但是此编码方法不利于EAs的进化操作,即,不容易设计出针对此编码的高效进化算子.文献[72]中给出的个体编码方法本质上是一种集值编码方法,虽然略显繁琐,但值得借鉴.此外,对于整数向量编码方法,可以尝试利用量子编码设计进化算子.

由于MKP是一个约束优化问题,在利用EAs求解MKP时也会产生不可行解,除非采用特殊的编码方法,但这样会导致算法获得的潜在解的质量不高,影响到算法的求解效果.此外,对于MKP问题中的每一个背包而言,可类似0-1 KP的方法给出处理不可行解的修复与优化法.

4 求解QKP与QMKP的EAs 4.1 QKP问题

QKP是Gallo等人[1, 77]提出的一个KP问题,在金融业、集成电路设计、电信业、柔性制造系统以及机场、火车站和货运站的选址中具有重要的应用.QKP是一个强NP难问题,不存在近似比为常数的近似算法.QKP的一般描述为:给定n个项和一个载重为C的背包,项j具有价值pj和重量wj,且任意两个项ij(1≤ijn)被同时装入背包时产生一个联合价值pij,其中,C,pj,wjpij均为正整数.如何选择项装入背包,使它们的重量之和在不超过背包载重的前提下价值与联合价值之和最大?QKP的数学模型表示如下:

$\text{Max}f(Y)=\text{Max}\sum\nolimits_{j=1}^{n}{{{p}_{j}}{{y}_{j}}}+\sum\nolimits_{i=1}^{n-1}{\sum\nolimits_{j=i+1}^{n}{({{p}_{ij}}{{y}_{i}}{{y}_{j}})}}$ (13)
$\text{s}\text{.t}\text{. }\sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}}\le C$ (14)
${{y}_{j}}\in \left\{ 0,1 \right\},j=1,2,\ldots ,n$ (15)

其中,yj=1当且仅当项j被装入了背包中.不失一般性,设$\text{Max}\{{{w}_{j}}|j=1,2,...,n\}\le C<\sum\nolimits_{j=1}^{n}{{{w}_{j}}}.$

有关QKP的Benchmark请参考文献[78].

目前,人们利用EAs提出了许多求解QKP的有效方法:Julstrom[78]将贪心算法融入GA,提出了求解QKP的一种贪心遗传算法,他所提出的修复与优化法是利用EAs求解QKP时处理不可行解的一种非常有效的方法;文献[79]提出了一种二进制AFS算法,并利用文献[78]中的方法处理不可行解,给出了一种求解QKP的可行方法;Patvardhan等人[80]提出了一种量子进化算法(quantum inspired evolutionary algorithm,简称QIEA),并采用文献[78]中的方法处理不可行解,给出了求解QKP的一种有效方法.此外,他们还在文献[81]中进一步讨论了QIEA的并行实现方法.

上述求解QKP的EAs均采用0-1向量表示问题的潜在解,使用修复与优化法而非罚函数法处理不可行解,取得了很好的效果,由此说明:在利用EAs求解QKP时,修复与优化法是处理不可行解的最佳选择.下面基于绝对价值密度(absolute value density,简称AVD)[78]的贪心策略,给出修复与优化法的一种有效实现方法(记为qGROA).当然,也可以基于相对价值密度(relative value density,简称RVD)[78]的贪心策略,类似于qGROA,给出另一种修复与优化法的实现方法.限于篇幅,在此略之.

记${{\delta }_{j}}={({{p}_{j}}+\sum\nolimits_{k\in {{A}_{Y}}}{{{p}_{jk}}})}/{{{w}_{j}}}\;$为项j的AVD,j=1,2,…,n,Y=[y1,y2,…,yn]∈{0,1}n为QKP的一个潜在解,AY={k|ykYyk=1,k=1,2,…,n}.对QKP实例中的所有项按dj由大到小的次序排序,并按照排序后的顺序将各项下标依次存于数组H[1,…,n]中.于是,qGROA的算法伪代码描述如下.

算法 5. qGROA.

(1)$R\leftarrow \sum\nolimits_{j=1}^{n}{{{w}_{j}}{{y}_{j}}};$

(2) if (RC) then goto 步骤(9) else jn;

(3) while (R>C) do //对不可行解Y进行修复

(4) if (yH[j]=1) then

(5) yH[j]←0; RR-wH[j];

(6) end if

(7) jj-1;

(8) end while

(9) for j←1 to n do //对已是可行解的Y进行优化

(10) if (yH[j]=0) and (R+wH[j]C) then

(11) yH[j]←1; RR+wH[j];

(12) end if

(13) end for

不难看出:算法5与算法3调用子算法fGRA时的实现原理是完全一样的,只不过两种算法所使用的数组H[1,…,n]的确定方式不同罢了.此外,很容易像算法3调用子算法sGRA那样,给出算法5的另一种实现方法.

需要说明的是:在利用EAs求解QKP的研究成果中,仅涉及到GA,ABC和AFS等少数算法,诸如PSO,ACO,DE,HSA和SFLA等具有良好性能的EAs均未出现.由此容易看出:探讨基于还未被利用的EAs求解QKP的研究,将是一个值得关注的问题.此外,提出新的更高效的贪心策略,并由此给出一种更高效的修复与优化法,也是非常值得探讨的问题.

4.2 QMKP问题

QMKP是一个组合了QKP与MKP的KP问题,由Hiley和Julstrom[9]于2006年在国际会议GECCO 2006上提出.QMKP的一般描述为:设项的集合N={1,2,...,n},背包的集合M={1,2,...,m},每个项jN具有价值pj和重量wj,当任意两个项ij(1≤ijn)被装入同一个背包时产生一个联合价值pij,每个背包kM具有一个载重Ck,并且Ck,pj,wjpij均为正整数.如何选择项装入背包,使得在满足下述两个前提条件下装入所有背包中项的价值之和最大.

(1) 每个项jN最多只能被装入一个背包中;

(2) 装入背包kM中所有项的重量之和不能超过Ck.

yik∈{0,1},yik=1表示项i被装入了背包k中,yik=0表示项i不装入背包k中,则QMKP的数学模型为

$\text{Max}f(Y)=\text{Max}\sum\limits_{i=1}^{n}{\sum\limits_{k=1}^{m}{{{y}_{ik}}{{p}_{i}}+\sum\limits_{i=1}^{n-1}{\sum\limits_{j=i+1}^{n}{\sum\limits_{k=1}^{m}{{{y}_{ik}}{{y}_{jk}}{{p}_{ij}}}}}}}$ (16)
$\text{s}\text{.t}\text{. }\sum\nolimits_{i=1}^{n}{{{w}_{i}}{{y}_{ik}}}\le {{C}_{k}},\forall k\in M$ (17)
$\sum\nolimits_{k=1}^{m}{{{y}_{ik}}}\le 1,\text{ }\forall i\in N$ (18)

自从QMKP被提出之后,人们即开始了利用EAs对其求解的研究,获得了较好的研究成果.Saraç和Sipahioglu[10]采用自然数编码方法提出了具有改进变异算子的遗传算法(SSGA),他们的改进不仅提高了解的质量,而且能够有效地避免变异后产生不可行解.因此,SSGA是求解QMKP的一种有效方法.文献[82]基于反复选择两个父代个体交叉产生子代个体来替换种群中较差个体的方法,提出了一种改进的GA,可以快速获得一个较好的结果.文献[83]在自适应链路调整进化算法(adaptive link adjustment evolutionary algorithm,简称ALA-EA)中使用有效初始化方法和启发式适应度改进方案(heuristic fitness improvement schemes)提出了一种新的Memetic算法,对QMKP的求解效果较好.Saraç和Sipahioglu[84]进一步完善了SSGA,并将其用于求解更一般的QMKP.文献[85]提出了一种量子进化求解算法,可有效求解QMKP.文献[86]将路径重连(path relinking)方法和响应阈值搜索算法(responsive threshold search algorithm)相结合,提出了一种求解QMKP的首进化路径重链接算法(first evolutionary path relinking approach,简称EPR),可用于求解大规模QMKP实例.

从上面的总结不难看出:目前,用于求解QMKP的EAs也仅限于GA,ABC,ALA-EA和EPR等少数算法,许多经典的EAs(如PSO,DE和HSA等)还未被用于QMKP的求解研究,因此可以断言:探讨如何利用这些经典EAs有效地求解QMKP,将是今后研究的一个趋势.此外,由于QMKP是由QKP与MKP组合而成,在利用EAs求解QKP与MKP时存在的问题,对于QMKP也同样存在,所获得的宝贵经验对于QMKP也具有借鉴意义.

5 利用EAs求解其他KP的研究进展 5.1 RTVKP问题

时变背包问题(time-varying knapsack problem,简称TVKP)[6]是Goldberg和Smith在0-1 KP中引入动态变化因素提出的一个KP问题,它也是一个动态组合优化问题.在TVKP中,背包载重不再固定不变,而是随着时间的推移在给定的若干个固定值之间震荡变化.贺毅朝等人[7]将TVKP推广为随机时变背包问题(randomized time-varying knapsack problem,简称RTVKP),即:背包载重在一个给定范围内随机震荡变化,并且某些项的价值和重量也随着时间的推移进行震荡变化.显然,由于RTVKP中动态变化因素的增多,求解难度比TVKP大为增加.

设RTVKP中,n个项的初始价值集与重量集分别为P0={p01,p02,…,p0n}和W0={w01,w02,…,w0n},p0j∈[Av,Bv],w0j∈[Aw,Bw](1≤jn),背包初始载重为C0∈[Ac,Bc],Av,Bv,Aw,Bw,AcBc均为正整数,且Av<Bv,Aw<Bw,Bw<Ac<Bc< nAw.令Ti(i≥1)表示项的价值、重量或背包载重的第i-1次随机变化与第i次随机变化之间的时间间隔,称为第i次随机振荡变化周期.第i(i≥1)次随机变化后,n个项的价值集与重量集分别记为Pi={pi1,pi2,…,pin}和Wi={wi1,wi2,…,win},背包载重记为Ci∈[Ac,Bc],其中,pij∈[Av,Bv],wij∈[Aw,Bw](1≤jn),满足|(ViWi)-(Vi-1Wi-1)|≤Threshold,并且|(ViWi)-(Vi-1Wi-1)|+|Ci-Ci-1|>0,$Threshold\le 3\sqrt{n}$.记RTVKPi-1(n,Ci-1,Vi-1,Wi-1)(i≥1)表示在周期Ti中以Vi-1为价值集、Wi-1为重量集、Ci-1为背包载重的0-1 KP子问题(记为RTVKPi-1),则RTVKP问题即为依次求解时间间隔序列{Ti}i≥1上的一系列RTVKPi-1(i≥1)子问题的最优值与最优解.

Yi=[yi1,yi2,...,yin]∈{0,1}n表示RTVKPi(i≥0)的可行解,在第i次随机振荡变化周期中,项j(1≤jn)装入载重为Ci的背包时,yij=1,否则,yij=0.于是,RTVKP的数学模型描述为

$\text{Max}f({{Y}_{i}})=\text{Max}\sum\nolimits_{j=1}^{n}{{{y}_{ij}}{{p}_{ij}}}$ (19)
$\text{s}\text{.t}\text{. }\sum\nolimits_{j=1}^{n}{{{y}_{ij}}{{w}_{ij}}}\le {{C}_{i}}$ (20)

其中,i≥0且1≤jn,随机振荡变化周期为Ti+1.

显然,当(ViWi)-(Vi-1Wi-1)=∅时,RTVKP退化为TVKP.令MinT=min{Ti|Ti为RTVKP的第i次随机振荡变化周期,i≥1},则RTVKP实例的MinT值越小,其振荡变化频率越大,越不容易求解.有关RTVKP的Benchmark请参考文献[7, 8].

文献[6]首先利用GA求解TVKP,提出了一种基于二倍体形式的遗传算法.文献[87]利用具有多倍体形式的GA求解TVKP,指出:对于振荡变化频率较大的TVKP,多倍体方法更有优势.Yang[88]提出原对偶遗传算法(primal-dual genetic algorithm,简称PDGA)以求解TVKP,计算结果表明,PDGA的求解效果优于标准GA.文献[89]提出了一种带动态小生境的自组织学习算法(DNSLA),并利用DNSLA求解多个大规模TVKP实例,计算结果极佳.贺毅朝等人[7, 8]研究了如何利用GA,DE和PSO等EAs求解RTVKP,给出了求解该问题的多种非常有效的近似算法.

RTVKP可以看成是由多个具有共性的0-1 KP构成,在利用EAs求解时,可以借鉴求解0-1 KP的经验,对不可行解采用修复与优化法(见算法3)比罚函数法更适宜.此外,当RTVKP的随机震荡变化周期较小时,对于算法的运算速度要求较高,因此,算法中应避免使用过于复杂的进化算子.

5.2 D{0-1}KP问题

D{0-1}KP[13-15]是Guldan于2007年将“折扣”思想引入0-1 KP而提出的一个KP问题,在商贸经营、投资决策、项目筛选和预算控制等方面具有较高的应用价值.D{0-1}KP的一般描述为:给定n个均含有3个项的项集,项集i(0≤in-1)中含有的3个项分别记为3i,3i+1,3i+2,其中,前两个项3i和3i+1具有的价值系数分别为p3ip3i+1,具有的重量系数分别为w3iw3i+1;前两个项合并在一起构成第3个项3i+2,它具有的价值系数为p3i+2=p3i+p3i+1,具有的折扣重量系数为w3i+2,满足w3i+2<w3i+w3i+1并且w3i<w3i+2,w3i+1<w3i+2.在项集i(0≤in-1)中,项3i,3i+1,3i+2中至多有一个可以被选择装入载重为C的背包中.如何选择各项装入背包,使得它们的重量系数之和在不超过背包载重的前提下价值系数之和达到最大?

不失一般性,设pj,wj(0≤j≤3n-1)和C均为正整数,并且w3i+2C(0≤in-1),$\sum\nolimits_{i=0}^{n-1}{{{w}_{3i+2}}}>C.$令D{0-1}KP的价值系数集为P={{p3i,p3i+1,p3i+2}|0≤in-1},重量系数集为W={{w3i,w3i+1,w3i+2}|0≤in-1},背包载重为C,则D{0-1}KP的数学模型为

$\text{Max}f(Y)=\text{Max}\sum\limits_{i=0}^{n-1}{({{y}_{3i}}{{p}_{3i}}+{{y}_{3i+1}}{{p}_{3i+1}}+{{y}_{3i+2}}{{p}_{3i+2}})}$ (21)
$s.t.~{{y}_{3i}}+{{y}_{3i+1}}+{{y}_{3i+2}}\le 1,i=0,1,\ldots ,n-1$ (22)
$\sum\nolimits_{i=0}^{n-1}{({{y}_{3i}}{{w}_{3i}}+{{y}_{3i+1}}{{w}_{3i+1}}+{{y}_{3i+2}}{{w}_{3i+2}})}\le C$ (23)
${{y}_{3i}},{{y}_{3i+1}},{{y}_{3i+2}}\hat{I}\left\{ 0,1 \right\},i=0,1,\ldots ,n-1$ (24)

其中,yj=1表示项j被装入了背包中,yj=0表示项j未被装入背包中.D{0-1}KP的Benchmark见文献[15, 16].

贺毅朝等人[15]建立了D{0-1}KP的一个新的数学模型,利用GA并基于不同编码方法提出了求解它的两种有效算法,其中,所给出的两种修复与优化法是利用EAs求解D{0-1}KP时处理不可行解的通用方法.最近,他们又在文献[90]中给出了处理D{0-1}KP不可行解的一种新方法,并利用BPSO[40]提出了一种求解D{0-1}KP的更高效的方法.

由于D{0-1}KP的提出时间较晚,利用EAs对其求解研究相对较少,因此,如何利用DE,ABC,ACO和HSA等算法有效求解D{0-1}KP问题,将会成为今后的一个研究热点.

5.3 MMKP问题

MMKP[11, 12]是由MCKP与MDKP组合而成的一个KP问题,它的一般描述为:给定n个项集的集合J={J1,J2,…,Jn}和m个载重分别为C1,C2,…,Cm的背包,其中,JpJq=∅,1≤pqn,每个项jJi具有一个价值pijm个重量wij1,wij2,…,wijm,其中,wijk是项jJi被装入载重为Ck的背包时的重量,并且pij,wijkCk均为正整数,1≤in,jJi且1≤|Ji|=ri,1≤km.如何从每个项集中恰好选择一个项装入所有的背包中,在使得装入每个背包中项的重量之和均不超重的前提下,所有背包中项的价值之和达到最大?MMKP的数学模型为

$\text{Max}f(Y)=\text{Max}\sum\limits_{i=1}^{n}{\sum\limits_{j=1}^{{{r}_{i}}}{{{y}_{ij}}{{p}_{ij}}}}$ (25)
$\text{s}\text{.t}\text{. }\sum\limits_{i=1}^{n}{\sum\limits_{j=1}^{{{r}_{i}}}{{{w}_{ijk}}{{y}_{ij}}}}\le {{C}_{k}},\text{ }k=1,2,...,m$ (26)
$\sum\nolimits_{j=1}^{{{r}_{i}}}{{{y}_{ij}}}=1,\text{ }i=1,2,...,n$ (27)
${{y}_{ij}}\hat{I}\left\{ 0,1 \right\},i=1,2,\ldots ,n,j=1,2,\ldots ,{{r}_{i}}$ (28)

其中,yij=0表示项jJi未装入任何背包中,yij=1表示项jJi被装入了所有背包中.MMKP的Benchmark请参考文献[12].

为了利用ACO求解MMKP,文献[12]将最大-最小蚁群系统(max-min ant system)与拉格朗日松弛法(Lagrangian relaxation,简称LR)相结合,利用LR获得各项的值作为ACO的启发式因子,利用修复法处理不可行解,给出了求解MMKP的一种有效方法.计算结果表明,它比已有算法HMMKP,CCFT,RLS和MRLS的求解效果更优.文献[91]提出了一种求解MMKP的多群体遗传算法(multi-population genetic algorithm,简称MPGA),MPGA用两个种群执行进化搜索,用一个种群进行归档以平衡算法在可行空间和不可行空间之间的搜索偏差,具有较好的求解效果.

MCKP与MDKP的难解性决定了MMKP的求解困难性,因此,基于EAs的已有求解方法对于复杂的大规模MMKP实例的求解性能有待进一步提高.显然,如何利用EAs高效求解MMKP,是一个有待于今后进一步深入研究的问题.

5.4 MOKP问题

MOKP[1, 92]是KP问题中的一个多目标优化问题,其一般描述为:给定n个项和m个载重分别为C1,C2,…,Cm的背包,项j相对于背包i的价值为pij,重量为wij,1≤jn且1≤im.求0-1向量Y=[y1,y2,...,yn]∈{0,1}n,在满足m个约束不等式:

$\sum\nolimits_{j=1}^{n}{{{w}_{ij}}{{y}_{j}}}\le {{C}_{i}},\text{ }i=1,2,...,m$ (29)

的前提下,使得f(Y)=[g1(Y),g2(Y),…,gm(Y)]最大.其中,

${{g}_{i}}(Y)=\sum\nolimits_{j=1}^{n}{{{p}_{ij}}{{y}_{j}}},\text{ }i=1,2,...,m$ (30)

文献[92]提出了求解MOKP的一种混合评估分布算法(hybrid estimation of distribution algorithm,简称MOHEDA),给出了一种基于加权和的局部搜索方法,并利用随机修复法处理不可行解.Lu和Yu[93]提出了一种自适应种群多目标量子演化算法(adaptive population multi-objective quantum-inspired evolutionary algorithm,简称APMQEA)以求解MOKP,其个体表示为量子比特,并分成若干个子群求解不同的目标函数.计算表明:APMQEA求得的结果非常接近Pareto最优前沿,而且非支配集有一个良好的分布.文献[94]基于量子人工免疫算法(QAIS)和人工免疫系统(BAIS)提出了一个新的量子人工免疫系统(MOQAIS),可有效求解MOKP问题.文献[95]提出了求解MOKP的一种基于指标的蚁群算法(indicator-based ant colony optimization,简称IBACO),在IBACO中,使用二元质量指标(binary quality indicator)指导蚂蚁进行搜索来提高算法的求解性能.

由于MOKP的多目标和多约束条件限制,导致它的求解难度较大.目前,用于求解MOKP的EAs仅限于以上几种算法,今后还有待进一步探讨利用更多EAs有效求解MOKP的方法.

6 总结与展望

EAs以其极强的全局寻优能力和极好的通用性,在求解KP问题的研究中越来越受到人们的重视.从已有的研究结果来看,利用EAs求解0-1 KP,MDKP和QKP的研究相对比较成熟,人们基于不同的EAs提出了求解这3个问题的许多高效方法.但是,利用EAs求解其他KP问题还存在许多不足:一方面,利用EAs求解这些问题的研究较少,很多性能优越的EAs还未被用于求解这些问题,如求解MKP,RTVKP,MOKP,MMKP,QMKP和D{0-1}KP等问题的EAs还仅限于少数几个,而PCKP,SUKP,MmKP和OLKP等问题甚至还未见利用EAs的求解研究报道;另一方面,在利用EAs求解KP时,表示问题潜在解或可行解的方法还仅限于0-1向量编码和自然数编码等经典方法,新的更适宜的编码方法还有待研究.此外,处理不可行解的方法与技术相对比较单调,缺乏与已有先进技术相结合的新的研究成果.

综合以上分析,下面给出利用EAs求解KP时有待解决的若干问题与研究思路.

(1) 利用EAs求解PCKP,SUKP,MmKP和OLKP等典型KP的有效算法的设计问题;

(2) 由于EAs是一类随机近似算法,在利用它们求解KP时,算法近似性能的估算问题有待解决.对此,是利用经典近似算法中的近似性能(即近似比)进行估算?还是给出一种新的度量方法?值得深入研究;

(3) 利用EAs求解KP时,潜在解或可行解的表示方法问题.例如,利用二进制数、自然数以及其他符号进行混合编码是否可行?利用量子比特矩阵编码是否可行?

(4) 能否基于机器学习、复杂网络、量子纠缠以及并行计算等方法设计比现有EAs更适于求解KP的高效进化算子?这既是关乎KP高效求解的一个关键问题,更是EAs算法设计中的一个核心问题;

(5) 能否利用松弛技术、原对偶技术、代理技术、次梯度方法和Bundle方法等给出处理KP不可行解的更为高效的方法?

(6) 对于还未利用EAs求解的KP,构造具有一定难度的大规模实例,为比较求解它的各EAs优劣提供通用的Benchmark实例;

(7) 利用新提出的EAs(例如果蝇优化(fruit fly optimization)[96]、头脑风暴优化(brain storm optimization)[97]等)求解KP问题的研究.

参考文献
[1] Kellerer H, Pferschy U, Pisinger D. Knapsack Problems. Berlin: Springer-Verlag, 2004. 1-445.
[2] Karp RM. Reducibility among combinatorial problems. In: Miller RE, Thatcher JW, eds. Proc. of the Complexity of Computer Computations. New York: Plenum Press, 1972. 110-137.
[3] Martello S, Toth P. Knapsack Problems: Algorithms and Computer Implementations. New York: John Wiley & Sons, Inc., 1990. 13-102.
[4] Mathews GB. On the partition of numbers. Proc. of the London Mathematical Society, 1897,28:486-490.[doi:10.1112/plms/s1-28.1.486]
[5] Dantzig GB. Discrete variable extremum problems. Operations Research, 1957, 5 :266–277. [doi:10.1287/opre.5.2.266]
[6] Goldberg DE, Smith RE. Nonstationary function optimization using genetic algorithms with dominance and diploidy. In: Proc. of the Int’l Conf. on Genetic Algorithms. Hillsdale: L. Erlbaum Associates Inc., 1987. 59-68. https://www.mendeley.com/research/nonstationary-function-optimization-using-genetic-algorithms-dominance-diploidy-7/
[7] He YC, Zhang XL, Li X, Wu WL, Gao SG. Algorithms for randomized time-varying knapsack problems. Journal of Combinatorial Optimization, 2016, 31 (1) :95–117. [doi:10.1007/s10878-014-9717-1]
[8] He YC, Wang XZ, Li WB, Zhao SL. Exact algorithms and evolutionary algorithms for randomized time-varying knapsack problem. Ruan Jian Xue Bao/Journal of Software, 2016(Pre publication) (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4937.htm[doi:10.13328/j.cnki.jos.004937]
[9] Hiley A, Julstrom BA. The quadratic multiple knapsack problem and three heuristic approaches to it. In: Keijzer M, et al., ed. Proc. of the Genetic and Evolutionary Computation Conf. (GECCO 2006), Vol.1. New York: ACM Press, 2006. 547-552.[doi:10.1145/1143997.1144096]
[10] Saraç T, Sipahioglu A. A genetic algorithm for the quadratic multiple knapsack problem. LNCS, 2007, 4729 :490–498. [doi:10.1007/978-3-540-75555-5_47]
[11] Sbihi A. A best first search exact algorithm for the multiple-choice multidimensional knapsack problem. Journal of Combinatorial Optimization, 2007, 13 :337–351. [doi:10.1007/s10878-006-9035-3]
[12] Ren ZG, Feng ZR, Zhang AM. Fusing ant colony optimization with Lagrangian relaxation for the multiple-choice multidimensional knapsack problem. Information Sciences, 2012, 182 :15–29. [doi:10.1016/j.ins.2011.07.033]
[13] Guldan B. Heuristic and exact algorithms for discounted knapsack problems[MS. Thesis]. University of Erlangen-Nürnberg, 2007. 1-78.
[14] Rong AY, Figueira JR, Klamroth K. Dynamic programming based algorithms for the discounted {0-1} knapsack problem. Applied Mathematics and Computation, 2012, 218 (12) :6921–6933. [doi:10.1016/j.amc.2011.12.068]
[15] He YC, Wang XZ, Li WB, Zhang XL, Chen YY. Research on genetic algorithms for the discounted {0-1} knapsack problem. Chinese Journal of Computers, 2016, 39 (12) :2614–2630(in Chinese with English abstract).
[16] Hu JS, Chen GL, Guo GC. Solving the 0/1 knapsack problem on quantum computer. Chinese Journal of Computers, 1999, 22 (12) :1314–1316(in Chinese with English abstract).
[17] Cormen TH, Leiserson CE, Rivest RL, Stein C. Introduction to Algorithms. 2nd ed., Cambridge: MIT Press, 2001 : 359 -403.
[18] Ibarra OH, Kim CE. Fast approximation algorithms for the knapsack and sum of subset problems. Journal of the ACM, 1975, 22 :463–468. [doi:10.1145/321906.321909]
[19] Motwani R, Raghavan P. Randomized Algorithms. Cambridge: Cambridge University Press, 1995 : 9 -78.
[20] Du DZ, Ko KI, Hu XD. Design and Analysis of Approximation Algorithms. Berlin: Springer Science Business Media LLC, 2012 : 1 -75.
[21] Vazirani VV. Approximation Algorithms. Berlin: Springer-Verlag, 2001 : 43 -67.
[22] Darehmiraki M, Nehi HM. Molecular solution to the 0-1 knapsack problem based on DNA computing. Applied Mathematics and Computation, 2007, 187 :1033–1037. [doi:10.1016/j.amc.2006.09.020]
[23] Zhu Y, Ren LH, Ding YS, Kritaya K. DNA ligation design and biological realization of knapsack problem. Chinese Journal of Computers, 2008, 31 (12) :2207–2214(in Chinese with English abstract).
[24] Michalewicz Z, Schoenauer M. Evolutionary algorithms for constrained pararmeter optimization problems. Evolutionary Computation, 1996, 4 (1) :1–32. [doi:10.1162/evco.1996.4.1.1]
[25] Goldberg DE. Genetic Algorithms in Search, Optimization and Machine Learning. Boston: Addison-Wesley Longman Publishing Co., Inc, 1989 : 1 -95.
[26] Chen GL, Wang XF, Zhuang ZQ, Wang DS. Genetic Algorithm and Its Applications. Beijing: The Posts and Telecommunications Press, 2003 : 1 -192(in Chinese with English abstract).
[27] Poli R, Kennedy J, Blackwell T. Particle swarm optimization. Swarm Intelligence, 2007, 1 (1) :33–57. [doi:10.1109/ICNN.1995.488968]
[28] Dorigo M, Stützle T. Ant Colony Optimization. Cambridge: MIT Press, 2004 : 1 -103.
[29] Storn R, Price K. Differential evolution-A simple and efficient heuristic for global optimization over continuous spaces. Journal of Global Optimization, 1997, 11 :341–359. [doi:10.1023/A:1008202821328]
[30] Li XL. A new intelligent optimization method-Artificial fish swarm algorithm[Ph.D. Thesis]. Hangzhou: Zhejiang University, 2003. 1-87(in Chinese with English abstract).
[31] Karaboga D, Basturk B. A powerful and efficient algorithm for numerical function optimization: Artificial bee colony (ABC) algorithm. Journal of Global Optimization, 2007, 39 (3) :459–471. [doi:10.1007/s10898-007-9149-x]
[32] Geem ZW, Kim JH, Loganathan GV. A new heuristic optimization algorithm: Harmony search. Simulation, 2001, 76 (2) :60–68. [doi:10.1177/003754970107600201]
[33] Eusuff MM, Lansey KE. Optimization of water distribution network design using the shuffled frog-leaping algorithm. Journal of Water Resources Planning and Management, 2003, 129 (3) :210–225. [doi:10.1061/(ASCE)0733-9496(2003)129:3(210)]
[34] Jiao LC, Du HF, Liu F, Gong MG. Immune Optimization Computation, Learning and Recognition. Beijing: Science Publishing Company, 2007 : 1 -213(in Chinese with English abstract).
[35] Michalewicz Z. Genetic Algorithm+Data Structure=Evolution Programs. Berlin: Springer-Verlag, 1996 : 13 -103.
[36] Wu SY, Xu ZQ. A heuristic policy for constructing crossover in genetic algorithms. Chinese Journal of Computers, 1998, 21 (11) :1003–1008(in Chinese with English abstract).
[37] Zhang L, Zhang B. Good point set based genetic algorithm. Chinese Journal of Computers, 2001, 24 (9) :917–922(in Chinese with English abstract).
[38] Lim TY, Al-Betar MA, Khader AT. Taming the 0/1 knapsack problem with monogamous pairs genetic algorithm. Expert Systems with Applications, 2016, 54 :241–250. [doi:10.1016/j.eswa.2016.01.055]
[39] Bansal JC, Deep K. A modified binary particle swarm optimization for knapsack problems. Applied Mathematics and Computation, 2012, 218 :11042–11061. [doi:10.1016/j.amc.2012.05.001]
[40] Kennedy J, Eberhart RC. A discrete binary version of the particle swarm optimization. In: Proc. of the’97 Conf. on System, Man, and Cybernetices. Piscataway: IEEE Service Center, 1997. 4104-4108.[doi:10.1109/ICSMC.1997.637339]
[41] Changdar C, Mahapatra GS, Pal RK. An ant colony optimization approach for binary knapsack problem under fuzziness. Applied Mathematics and Computation, 2013, 223 :243–253. [doi:10.1016/j.amc.2013.07.077]
[42] He YC, Wang XZ, Kou YZ. A binary differential evolution algorithm with hybrid encoding. Journal of Computer Research and Development, 2007, 44 (9) :1476–1484(in Chinese with English abstract). [doi:10.1360/crad20070905]
[43] Zou DX, Gao LQ, Li S, Wu JH. Solving 0-1 knapsack problem by a novel global harmony search algorithm. Applied Soft Computing, 2011, 11 :1556–1564. [doi:10.1016/j.asoc.2010.07.019]
[44] Kong XY, Gao LQ, Ouyang HB, Li S. A simplified binary harmony search algorithm for large scale 0-1 knapsack problems. Expert Systems with Applications, 2015, 42 :5337–5355. [doi:10.1016/j.eswa.2015.02.015]
[45] Pavithr RS, Gursaran. Quantum inspired social evolution (QSE) algorithm for 0-1 knapsack problem. Swarm & Evolutionary Computation, 2016, 29 :33–46. [doi:10.1016/j.swevo.2016.02.006]
[46] Bhattacharjee KK, Sarmah SP. Shuffled frog leaping algorithm and its application to 0/1 knapsack problem. Applied Soft Computing, 2014, 19 :252–263. [doi:10.1016/j.asoc.2014.02.010]
[47] Zhou YQ, Chen X, Zhou G. An improved monkey algorithm for a 0-1 knapsack problem. Applied Soft Computing, 2016, 38 :817–830. [doi:10.1016/j.asoc.2015.10.043]
[48] Chu PC, Beasley JE. A genetic algorithm for the multidimensional knapsack problem. Journal of Heuristics, 1998, 4 :63–86. [doi:10.1023/A:1009642405419]
[49] Kato K, Sakawa M. Genetic algorithms with decomposition procedures for multidimensional 0-1 knapsack problems with block angular structures. IEEE Trans. on Systems, Man, and Cybernetics-Part B: Cybernetics, 2003, 33 (3) :410–419. [doi:10.1109/TSMCB.2003.811126]
[50] Alves MJ, Almeida M. MOTGA: A multiobjective tchebycheff based genetic algorithm for the multidimensional knapsack problem. Computers & Operations Research, 2007, 34 :3458–3470. [doi:10.1016/j.cor.2006.02.008]
[51] Djannaty F, Doostdar S. A hybrid genetic algorithm for the multidimensional knapsack problem. Int’l Journal of Contemporary Mathematical Sciences, 2008, 3 (9) :443–456.
[52] Lai GM, Yuan DH, Yang SY. A new hybrid combinatorial genetic algorithm for multidimensional knapsack problems. Journal of Supercomputing, 2014, 70 :930–945. [doi:10.1007/s11227-014-1268-9]
[53] Martins JP, Fonseca CM, Delbem ACB. On the performance of linkage-tree genetic algorithms for the multidimensional knapsack problem. Neurocomputing, 2014, 146 :17–29. [doi:10.1016/j.neucom.2014.04.069]
[54] Beheshti Z, Shamsuddin SM, Yuhaniz SS. Binary accelerated particle swarm algorithm (BAPSA) for discrete optimization problems. Journal of Global Optimization, 2013, 57 :549–573. [doi:10.1007/s10898-012-0006-1]
[55] Beheshti Z, Shamsuddin SM, Hasan S. Memetic binary particle swarm optimization for discrete optimization problems. Information Sciences, 2015, 299 :58–84. [doi:10.1016/j.ins.2014.12.016]
[56] Chih M. Self-Adaptive check and repair operator-based particle swarm optimization for the multidimensional knapsack problem. Applied Soft Computing, 2015, 26 :378–389. [doi:10.1016/j.asoc.2014.10.030]
[57] Haddar B, Khemakhem M, Hanafi S, Wilbaut C. A hybrid quantum particle swarm optimization for the multidimensional knapsack problem. Engineering Applications of Artificial Intelligence, 2016, 55 :1–13. [doi:10.1016/j.engappai.2016.05.006]
[58] Wang L, Fu XP, Mao YF, Menhas MI, Fei MR. A novel modified binary differential evolution algorithm and its applications. Neurocomputing, 2012, 98 :55–75. [doi:10.1016/j.neucom.2011.11.033]
[59] Liu J, Wu C, Cao J, Wang X, Teo KL. A binary differential search algorithm for the 0-1 multidimensional knapsack problem. In: Proc. of the Applied Mathematical Modelling. 2016.[doi:10.1016/j.apm.2016.06.002]
[60] Layeb A. A hybrid quantum inspired harmony search algorithm for 0-1 optimization problems. Journal of Computational and Applied Mathematics, 2013, 253 :14–25. [doi:10.1016/j.cam.2013.04.004]
[61] Kong XY, Gao LQ, Ouyang HB, Li S. Solving large-scale multidimensional knapsack problems with a new binary harmony search algorithm. Computers & Operations Research, 2015, 63 :7–22. [doi:10.1016/j.cor.2015.04.018]
[62] Zhang B, Pan QK, Zhang XL, Duan PY. An effective hybrid harmony search-based algorithm for solving multidimensional knapsack problems. Applied Soft Computing, 2015, 29 :288–297. [doi:10.1016/j.asoc.2015.01.022]
[63] Wang L, Yang RX, Ni HQ, Ye W, Fei MR, Pardalos PM. A human learning optimization algorithm and its application to multi-dimensional knapsack problems. Applied Soft Computing, 2015, 34 :736–743. [doi:10.1016/j.asoc.2015.06.004]
[64] Ji JZ, Wei HK, Liu CN, Yin BC. Artificial bee colony algorithm based on inductive pheromone updating and diffusion. Journal of Computer Research and Development, 2013, 50 (9) :2005–2014(in Chinese with English abstract).
[65] Baykasoğlu A, Ozsoydan FB. An improved firefly algorithm for solving dynamic multidimensional knapsack problems. Expert Systems with Applications, 2014, 41 :3712–3725. [doi:10.1016/j.eswa.2013.11.040]
[66] Zhang XD, Wu CZ, Li J, Wang XY, Yang ZJ, Lee JM, Jung KH. Binary artificial algae algorithm for multidimensional knapsack problems. Applied Soft Computing, 2016, 43 :583–595. [doi:10.1016/j.asoc.2016.02.027]
[67] Yu XC, Zhang TW. An improved ant algorithm for multidimensional knapsack problem. Chinese Journal of Computers, 2008, 31 (5) :810–819(in Chinese with English abstract).
[68] Kong M, Tian P, Kao YC. A new ant colony optimization algorithm for the multidimensional knapsack problem. Computers & Operations Research, 2008, 35 :2672–2683. [doi:10.1016/j.cor.2006.12.029]
[69] Ji JZ, Huang Z, Liu CN. An ant colony optimization algorithm based on mutation and pheromone diffusion for the multidimensional knapsack problems. Journal of Computer Research and Development, 2009, 46 (4) :644–654(in Chinese with English abstract).
[70] Nakbi W, Alaya I, Zouari W. A hybrid lagrangian search ant colony optimization algorithm for the multidimensional knapsack problem. Procedia Computer Science, 2015, 60 :1109–1119. [doi:10.1016/j.procs.2015.08.158]
[71] Pisinger D. An exact algorithm for large multiple knapsack problems. European Journal of Operational Research, 1999, 114 :528–541. [doi:10.1016/S0377-2217(98)00120-9]
[72] Fukunaga A. A new grouping genetic algorithm for the multiple knapsack problem. In: Proc. of the IEEE Congress on Evolutionary Computation. 2008. 2225-2232.[doi:10.1109/CEC.2008.4631094]
[73] Ren ZH, Wang J. A discrete particle swarm optimization for solving multiple knapsack problems. In: Proc. of the Int’l Conf. on Natural Computation. 2009. 166-170.[doi:10.1109/ICNC.2009.80]
[74] Liu Q, Odaka T, Kuroiwa J, Shirai H, Ogura H. A new artificial fish swarm algorithm for the multiple knapsack problem. IEICE Trans. on Information and Systems, 2014, E97-D (3) :455–468. [doi:10.1587/transinf.E97.D.455]
[75] Qin L, Zhou K, Yi XW. An improved artificial fish school algorithm for multi-knapsack problem. Bulletin of Science and Technology, 2016, 32 (6) :166–171(in Chinese with English abstract).
[76] Yu AB, Yang JB. Genetic algorithm for multi knapsack problem. Computing Technology and Automation, 2002, 21 (2) :59–63(in Chinese with English abstract).
[77] Gallo G, Hammer PL, Simeone B. Quadratic knapsack problem. Mathematical Programming, 1980, 12 :132–149.
[78] Julstrom BA. Greedy, genetic, and greedy genetic algorithms for the quadratic knapsack problem. In: Beyer HG, et al., ed. Proc. of the Genetic and Evolutionary Computation Conf. (GECCO 2005). New York: ACM Press, 2005 :607–614. [doi:10.1145/1068009.1068111]
[79] Azad MAK, Rocha AMAC, Fernandes EMGP. A simplified binary artificial fish swarm algorithm for 0-1 quadratic knapsack problems. Journal of Computational and Applied Mathematics, 2014, 259 :897–904. [doi:10.1016/j.cam.2013.09.052]
[80] Patvardhan C, Bansal S, Srivastav A. Solving the 0-1 quadratic knapsack problem with a competitive quantum inspired evolutionary algorithm. Journal of Computational and Applied Mathematics, 2015, 285 :86–99. [doi:10.1016/j.cam.2015.02.016]
[81] Patvardhan C, Bansal S, Srivastav A. Parallel improved quantum inspired evolutionary algorithm to solve large size quadratic knapsack problems. Swarm and Evolutionary Computation, 2016, 26 :175–190. [doi:10.1016/j.swevo.2015.09.005]
[82] Singh A, Baghel A. A new grouping genetic algorithm for quadratic multiple knapsack. Evolutionary Computation in Combinatorial Optimization, 2007, 12 (9) :201–218.
[83] Soak SM, Lee SW. A memetic algorithm for the quadratic multiple container packing problem. Applied Intelligence, 2012, 36 :119–135. [doi:10.1007/s10489-010-0248-x]
[84] Saraç T, Sipahioglu A. Generalized quadratic multiple knapsack problem and two solution approaches. Computers & Operations Research, 2014, 43 :78–89. [doi:10.1016/j.cor.2013.08.018]
[85] Qian J, Wang BH, Zheng JG, Chen YF, Zhou K. A quantum evolutionary algorithm for quadratic multiple knapsack problem. Chinese Journal of Computers, 2015, 38 (8) :1518–1529(in Chinese with English abstract).
[86] Chen YN, Hao JK, Glover F. An evolutionary path relinking approach for the quadratic multiple knapsack problem. Knowledge-Based Systems, 2016, 92 :23–34. [doi:10.1016/j.knosys.2015.10.004]
[87] Hadad BS, Eick CF. Supporting polyploidy in genetic algorithms using dominance vectors. In: Proc. of the 6th Int’l Conf. on Evolutionary Computation. 1997. 223-234.[doi:10.1007/BFb0014814]
[88] Yang S. Non-Stationary problem optimization using the primal-dual genetic algorithm. In: Proc. of the 2003 Congress on Evolutionary Computation. 2003. 2246-2253.[doi:10.1109/CEC.2003.1299951]
[89] Zhou CH, Xie SA. Dynamic niche-based self-organizing learning algorithm. Ruan Jian Xue Bao/Journal of Software, 2011, 22 (8) :1738–1748(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/3830.htm [doi:10.3724/SP.J.1001.2011.03830]
[90] He YC, Wang XZ, He YL, Zhao SL, Li WB. Exact and approximate algorithms for discounted {0-1} knapsack problem. Information Sciences, 2016, 369 :634–647. [doi:10.1016/j.ins.2016.07.037]
[91] Zhou Q, Luo WJ. A novel multi-population genetic algorithm for multiple-choice multidimensional knapsack problems. In: Cai Z, et al., eds. Proc. of the ISICA 2010. LNCS 6382. New York: Springer-Verlag, 2010 : 148 -157.
[92] Li H, Zhang QF, Tsang E, Ford JA. Hybrid estimation of distribution algorithm for multiobjective knapsack problem. In: Proc. of the Evolutionary Computation in Combinatorial Optimization, European Conf. (Evocop 2004). Coimbra, 2004. 422-425.[doi:10. 1007/978-3-540-24652-7_15]
[93] Lu TC, Yu GR. An adaptive population multi-objective quantum-inspired evolutionary algorithm for multi-objective 0/1 knapsack problems. Information Sciences, 2013, 243 :39–56. [doi:10.1016/j.ins.2013.04.018]
[94] Gao JQ, He GX, Liang RH, Feng ZL. A quantum-inspired artificial immune system for the multiobjective 0-1 knapsack problem. Applied Mathematics and Computation, 2014, 230 :120–137. [doi:10.1016/j.amc.2013.12.088]
[95] Mansour IB, Alaya I. Indicator based ant colony optimization for multi-objective knapsack problem. Procedia Computer Science, 2015, 60 :448–457. [doi:10.1016/j.procs.2015.08.165]
[96] Pan WT. A new fruit fly optimization algorithm: Taking the financial distress model as an example. Knowledge-Based Systems, 2012, 26 :69–74. [doi:10.1016/j.knosys.2011.07.001]
[97] Shi Y. An optimization algorithm based on brain storming process. Int’l Journal of Swarm Intell Res (IJSIR), 2011, 2 (4) :35–62. [doi:10.4018/ijsir.2011100103]
[8] 贺毅朝,王熙照,李文斌,赵书良.求解随机时变背包问题的精确算法与进化算法.软件学报,2016(预发表). http://www.jos.org.cn/1000-9825/4937.htm[doi:10.13328/j.cnki.jos.004937]
[15] 贺毅朝, 王熙照, 李文斌, 张新禄, 陈嶷瑛. 基于遗传算法求解折扣{0-1}背包问题的研究. 计算机学报, 2016, 39(12): 2614–2630.
[16] 胡劲松, 陈国良, 郭光灿. 在量子计算机上求解0/1背包问题. 计算机学报, 1999, 22(12): 1314–1316.
[23] 朱莹, 任立红, 丁永生. Kongsuwan Kritaya背包问题DNA算法的反应设计及其生物实现. 计算机学报, 2008, 31(12): 2207–2214.
[26] 陈国良, 王熙法, 庄镇泉, 王东生. 遗传算法及其应用. 北京: 人民邮电出版社, 2003: 1-192.
[30] 李晓磊.一种新型的智能优化方法——人工鱼群算法[博士学位论文].杭州:浙江大学,2003.
[34] 焦李成, 杜海峰, 刘芳, 公茂果. 免疫优化计算、学习与识别. 北京: 科学出版社, 2007: 1-213.
[36] 吴少岩, 许卓群. 遗传算法中遗传算子的启发式构造策略. 计算机学报, 1998, 21(11): 1003–1008.
[37] 张铃, 张钹. 佳点集遗传算法. 计算机学报, 2001, 24(9): 917–922.
[42] 贺毅朝, 王熙照, 寇应展. 一种具有混合编码的二进制差分演化算法. 计算机研究与发展, 2007, 44(9): 1476–1484. [doi:10.1360/crad20070905]
[64] 冀俊忠, 魏红凯, 刘椿年, 尹宝才. 基于引导素更新和扩散机制的人工蜂群算法. 计算机研究与发展, 2013, 50(9): 2005–2014.
[67] 喻学才, 张田文. 多维背包问题的一个蚁群优化算法. 计算机学报, 2008, 31(5): 810–819.
[69] 冀俊忠, 黄振, 刘椿年. 基于变异和信息素扩散的多维背包问题的蚁群算法. 计算机研究与发展, 2009, 46(4): 644–654.
[75] 覃磊, 周康, 易校尉. 一种求解多背包问题的改进的人工鱼群算法. 科技通报, 2016, 32(6): 166–171.
[76] 虞安波, 杨家本. 多背包问题的遗传算法求解. 计算技术与自动化, 2002, 21(2): 59–63.
[85] 钱洁, 王保华, 郑建国, 陈宇峰, 周奎. 多重二次背包问题的量子进化求解算法. 计算机学报, 2015, 38(8): 1518–1529.
[89] 周传华, 谢安世. 一种基于动态小生境的自组织学习算法. 软件学报, 2011, 22(8): 1738–1748. http://www.jos.org.cn/1000-9825/3830.htm [doi:10.3724/SP.J.1001.2011.03830]