Abstract
This paper presents several methodological and algorithmic improvements over a stateoftheart dynamic programming algorithm for solving the biobjective {0,1} knapsack problem. The variants proposed make use of new definitions of lower and upper bounds, which allow a large number of states to be discarded. The computation of these bounds are based on the application of dichotomic search, definition of new bound sets, and biobjective simplex algorithms to solve the relaxed problem. Although these new techniques are not of a common application for dynamic programming, we show that the best variants tested in this work can lead to an average improvement of 10 to 30 % in CPUtime and significant less memory usage than the original approach in a wide benchmark set of instances, even for the most difficult ones in the literature.
This is a preview of subscription content, access via your institution.
References
Aneja, Y., Nair, K.: Bicriteria transportation problem. Manag. Sci. 25(1), 73–78 (1979)
Bazgan, C., Hugot, H., Vanderpooten, D.: Implementing an efficient fptas for the 01 multiobjective knapsack problem. Eur. J. Oper. Res. 198(1), 47–56 (2009)
Bazgan, C., Hugot, H., Vanderpooten, D.: Solving efficiently the 01 multiobjective knapsack problem. Comput. Oper. Res. 36(1), 260–279 (2009)
Captivo, M., Clímaco, J., Figueira, J., Martins, E., dos Santos, J.: Solving bicriteria 01 knapsack problems using a labeling algorithm. Comput. Oper. Res. 30(12), 1865–1886 (2003)
Cormen, T., Leiserson, C., Rivest, R., Stein, C.: Introduction to Algorithms. MIT Press, Cambridge (2001)
Erlebach, T., Kellerer, H., Pferschy, U.: Approximating multiobjective knapsack problems. Manag. Sci. 48(12), 1603–1612 (2002)
Gomes da Silva, C., Clímaco, J., Figueira, J.: A scatter search method for bicriteria {0,1}knapsack problems. Eur. J. Oper. Res. 169(2), 373–391 (2006)
Gomes da Silva, C., Clímaco, J., Figueira, J.: Core problems in bicriteria {0, 1}knapsack problems. Comput. Oper. Res. 35(7), 2292–2306 (2008)
Gomes da Silva, C., Figueira, J., Clímaco, J.: Integrating partial optimization with scatter search for solving bicriteria {0, 1}knapsack problems. Eur. J. Oper. Res. 177(3), 1656–1677 (2007)
Jenkins, L.: A bicriteria knapsack program for planning remediation of contaminated lightstation sites. Eur. J. Oper. Res. 140(2), 427–433 (2002)
Klamroth, K., Wiecek, M.M.: Dynamic programming approaches to the multiple criteria knapsack problem. Nav. Res. Logist. 47(1), 57–76 (2000)
Kellerer, H., Pferschy, U., Pisinger, D.: Knapsack Problems. Springer, Berlin (2004)
Kostreva, M., Ogryczak, W., Tonkyn, D.: Relocation problems arising in conservation biology. Comput. Math. Appl. 37(4–5), 135–150 (1999)
Ehrgott, M., Gandibleux, X.: Bound sets for biobjective combinatorial optimization problems. Comput. Oper. Res. 34(9), 2674–2694 (2007)
Martello, S., Toth, P.: Knapsack Problems—Algorithms and Computer Implementations. Wiley, New York (1990)
Nemhauser, G., Ullmann, Z.: Discrete dynamic programming and capital allocation. Manag. Sci. 15(9), 494–505 (1969)
Pisinger, D.: A minimal algorithm for the 01 knapsack problem. Oper. Res. 45, 758–767 (1997)
Rosenblatt, M., SinuanyStern, Z.: Generating the discrete efficient fronteir to the capital budgeting problem. Oper. Res. 37(3), 384–394 (1989)
Steuer, R.: Multiple Criteria Optimization: Theory, Computation and Application. Wiley, New York (1986)
Teng, J., Tzeng, G.: A multiobjective programming approach for selecting nonindependent transportation investiment alternatives. Transp. Res., Part B, Methodol. 30(4), 201–307 (1996)
Visée, M., Teghem, J., Pirlot, M., Ulungu, E.L.: Twophases method and branch and bound procedures to solve the bi–objective knapsack problem. J. Glob. Optim. 12(2), 139–155 (1998)
Acknowledgements
The authors acknowledge the anonymous referee that suggested the second version of variant BDP3. J.R. Figueira, L. Paquete and D. Vanderpooten acknowledge the financial support from the LusoFrench bilateral cooperation agreement between LAMSADE and CEGIST (FCT/CNRS 2009). J.R. Figueira and M. Simões acknowledge a grant from CEGIST, Instituto Superior Técnico (PTDC/GES/73853/2006). D. Vanderpooten acknowledges the support by the project ANR09BLAN0361 “GUaranteed Efficiency for PAReto optimal solutions Determination (GUEPARD)”.
Author information
Authors and Affiliations
Corresponding author
Appendices
Appendix A: Simplex algorithm
The continuous 01 biobjective knapsack problem can be formalized as follows (see Sect. 1 for the notation and Eq. (1) for the discrete variant):
The simplex algorithm computes the set of all nondominated vectors of problem (4). It starts from one lexicographicallyoptimal solution. Then, it proceeds with an efficient pivoting process until an efficient solution of optimal value for objective f _{2} is obtained. In order to obtain the lexicographicallyoptimal solution, the objects are sorted in nonincreasing order of the profittoweight ratio \(v_{k}^{1}/w_{k}\). In case of ties, the objects with the same profittoweight ratio are sorted in nonincreasing order of the profittoweight ratio for \(v_{k}^{2}/w_{k}\).
Remark 1
If two objects j and ℓ have the same profittoweight ratio on the first and the second objective, then consider only one object of weights w _{ j }+w _{ ℓ } and of profit \((v^{1}_{j} + v^{1}_{\ell}, v^{2}_{j} + v^{2}_{\ell})\).
The lexicographicaloptimal solution x ^{∗} is obtained by using a greedy procedure that includes sorted objects until the capacity is achieved. Let
be the critical object; then \(x^{*} = (x^{*}_{1},\ldots,x^{*}_{n})\) is such that:
Given that \(x^{*}_{c}\) is not equal to zero (that case will be considered later on), it constitutes an efficient basic variable. Note that an efficient basis is constituted by only one efficient basic variable.
The algorithm uses a pivoting procedure that ensures the transition from one efficient solution to an adjacent one that decreases the value on the first objective. This procedure, which starts with solution x ^{∗} and one of its associated efficient basis \(\{x^{*}_{c}\}\), is described as follows for the general case considering an efficient solution x and one of its associated efficient basis {x _{ c }}.

1.
Given that variable x _{ c } is basic, compute the reduced costs associated to variable x _{ j } on the objective i that is \(V^{i}_{(c,j)}= v_{j}^{i}  v_{c}^{i} \cdot w_{j}/w_{c}\), i=1,2 and j=1,…,n. The indexes of candidates variables to enter the basis are:
$$J = \left \{j \in \{1,\ldots,n\}\setminus c \mbox{ such that: } \begin{array}{l} V^1_{(c,j)}<0 \mbox{ and } V^2_{(c,j)}>0, \mbox{ if } x_j = 0\\[7pt] V^1_{(c,j)}>0 \mbox{ and } V^2_{(c,j)}<0, \mbox{ if } x_j = 1\\ \end{array} \right \} $$If J is an empty set, the algorithm terminates since it is not possible to increase the value of solution x on the second objective. Hence, x is an efficient solution that is optimal for the second objective. Otherwise, the algorithm proceeds with an efficient pivoting between x _{ c } and variable \(x_{j^{*}}\) (j ^{∗}∈J), which provides a new efficient solution such that the slope of the line through this new solution and the previous solution x is the smallest. Then, j ^{∗} is such that
$$\frac{V^2_{(c,j^*)}}{V^1_{(c,j^*)}} = \min_{j \in J} \frac{V^2_{(c,j)}}{V^1_{(c,j)}} $$
Remark 2
Since the objects of the same profittoweight ratio for all j∈{1,…,n}∖c were added, it does not hold that \(V^{1}_{(c,j)} = 0\) and \(V^{2}_{(c,j)} = 0\).
Remark 3
However, it is possible to obtain variables such that \(V^{1}_{(c,j)} = 0\) and \(V^{2}_{(c,j)} < 0\) or \(V^{1}_{(c,j)} < 0\) and \(V^{2}_{(c,j)} = 0\), for x _{ j }=0, as well as variables such that \(V^{1}_{(c,j)} = 0\) and \(V^{2}_{(c,j)} > 0\) or \(V^{1}_{(c,j)} > 0\) and \(V^{2}_{(c,j)} = 0\), for x _{ j }=1. Note that these variables are not candidates to enter the basis since they cannot lead to an efficient pivoting and to a new efficient solution.
Remark 4
Index j ^{∗} is the index in J that maximizes \(V^{2}_{(c,j)}/ (V^{1}_{(c,j)}V^{2}_{(c,j)} )\).

2.
Let δ=w _{ c }/w _{ j }. The values of variables x _{ c } and x _{ j } are updated as follows.
$$\mbox{if } x_j = 0 \begin{cases} \mbox{if } \delta x_c < 1 \qquad \begin{cases} x_j := \delta x_c\\ x_c := 0\\ x_j \mbox{ enters the basis in substitution of $x_{c}$} \end{cases} \\[20pt] \mbox{if } \delta x_c > 1 \qquad \begin{cases} x_j := 1\\ x_c := x_c  \delta\\ x_c \mbox{ remains in the basis} \end{cases} \\[20pt] \mbox{if } \delta x_c = 1 \qquad \begin{cases} x_j := 1\\ x_c := 0\\ \mbox{The solution is integer} \end{cases} \end{cases} $$$$\mbox{if } x_j = 1 \begin{cases} \mbox{if } \delta (1x_c) < 1 \begin{cases} x_j := 1  \delta(1  x_c)\\ x_c := 1\\ x_j \mbox{ enters the basis in substitution of $x_{c}$} \end{cases} \\[20pt] \mbox{if } \delta (1x_c) > 1 \begin{cases} x_j := 0\\ x_c := x_c + \delta\\ x_c \mbox{ remains in the basis} \end{cases} \\[20pt] \mbox{if } \delta (1x_c) = 1 \begin{cases} x_j := 0\\ x_c := 1\\ \mbox{The solution is integer} \end{cases} \\ \end{cases} $$
The final solution is efficient. The pivoting process is repeated with the new basic solution. In case of degeneration, i.e., when we obtain an integer solution, the pivoting procedure is slightly different. We consider all possible increasing pivots between x _{ i } and x _{ j } for i=1,…,n and j=i+1,…,n satisfying that
Among all these possible pivots satisfying (5), the algorithm pivots between x _{ c } and \(x_{j^{*}}\) such that
Hence, the algorithm updates the values of x _{ c } and \(x_{j^{*}}\) using Step 2 described above.
Appendix B: Computational results
Rights and permissions
About this article
Cite this article
Figueira, J.R., Paquete, L., Simões, M. et al. Algorithmic improvements on dynamic programming for the biobjective {0,1} knapsack problem. Comput Optim Appl 56, 97–111 (2013). https://doi.org/10.1007/s105890139551x
Received:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s105890139551x
Keywords
 Biobjective 01 knapsack problems
 Multiobjective combinatorial optimization
 Bounds sets
 Dichotomic search
 Biobjective simplex algorithm