1 Introduction

The multi-dimensional multiple-choice knapsack problem (MMCKP) and the multiple-choice knapsack problem (MCKP) are classical generalizations of the knapsack problem (KP) and are applied to modeling many real-life problems, e.g., in project (investments) portfolio selection [21, 29], capital budgeting [24], advertising [27], component selection in IT systems [16, 25], computer networks management [17], adaptive multimedia systems [14], and other.

The multiple-choice knapsack problem (MCKP) is formulated as follows. Given are k sets \(N_{1}, N_{2},\ldots ,N_{k}\) of items, of cardinality \(|N_{i}|=n_{i}\), \(i=1,\ldots ,k\). Each item of each set has been assigned real-valued nonnegative ‘profit’ \(p_{ij}\ge 0\) and ‘cost’ \(c_{ij}\ge 0\), \(i=1,\ldots ,k\), \(j=1,\ldots ,n_{i}\).

The problem consists in choosing exactly one item from each set \(N_{i}\) so that the total cost does not exceed a given \(b\ge 0\) and the total profit is maximized.

Let \(x_{ij}\), \(i=1,\ldots ,k\), \(j=1,\ldots ,n_{i}\), be defined as

$$\begin{aligned} x_{ij}=\left\{ \begin{array}{ll} 1&{}\text{ if } \text{ item }~ j~ \text{ from } \text{ set }~ N_{i}~ \text{ is } \text{ chosen }\\ 0&{}\text{ otherwise. } \end{array}\right. \end{aligned}$$

Note that all \(x_{ij}\) form a vector x of length \(n=\sum _{i=1}^{k}n_{i}\), \(x\in {\mathbb {R}}^{n}\), and we write

$$\begin{aligned} \begin{array}{l} x:=(x_{11},x_{12},\ldots ,x_{1n_{1}},x_{21},\ldots , x_{2n_{2}},\ldots , x_{k1},x_{k2},\ldots ,x_{kn_{k}})^\mathrm{T}.\\ \end{array} \end{aligned}$$

In this paper, we adopt the convention that a vector x is a column vector, and hence the transpose of x, denoted by \(x^\mathrm{T}\), is a row vector.

Problem (MCKP) is of the form

$$\begin{aligned} \begin{array}{ll} (MCKP)&{}\begin{array}{l}\max \ \ \sum \limits _{i=1}^{k}\sum \limits _{j=1}^{n_{i}}p_{ij}x_{ij}\\ \text{ subject } \text{ to }\\ \sum \limits _{i=1}^{k}\sum \limits _{j=1}^{n_{i}}c_{ij}x_{ij}\le b\\ (x_{ij})\in X:=\{(x_{ij})\ |\ \sum \limits _{j=1}^{n_{i}}x_{ij}=1, \\ x_{ij}\in \{0,1\}\ \ i=1,\ldots ,k, \ \ j=1,\ldots ,n_{i}\}. \end{array} \end{array} \end{aligned}$$

By using the above notations, problem (MCKP) can be equivalently rewritten in the vector form

$$\begin{aligned} \begin{array}{ll} (MCKP)&{}\begin{array}{l}\max \ \ p^\mathrm{T} x\\ \text{ subject } \text{ to }\\ c^\mathrm{T} x\le b\\ x=(x_{ij})\in X, \end{array} \end{array} \end{aligned}$$

where p and c are vectors from \({\mathbb {R}}^{n}\),

$$\begin{aligned} \begin{array}{l} p:=(p_{11},p_{12},\ldots ,p_{1n_{1}},p_{21},\ldots , p_{2n_{2}},\ldots , p_{k1},p_{k2},\ldots ,p_{kn_{k}})^\mathrm{T}\\ c:=(c_{11},c_{12},\ldots ,c_{1n_{1}},c_{21},\ldots , c_{2n_{2}},\ldots , c_{k1},c_{k2},\ldots ,c_{kn_{k}})^\mathrm{T},\\ \end{array} \end{aligned}$$

and for any vectors \(u, v\in {\mathbb {R}}^{n}\), the scalar product \(u^\mathrm{T}v\) is defined in the usual way as \(u^\mathrm{T}v:=\sum _{i=1}^{n}u_{i}v_{i}\).

The feasible set F to problem (MCKP) is defined by a single linear inequality constraint and the constraint \(x\in X\), i.e.,

$$\begin{aligned} F:=\{x\in {\mathbb {R}}^{n}\ | \ c^\mathrm{T}x\le b,\quad x\in X\} \end{aligned}$$

and finally

$$\begin{aligned} \begin{array}{ll} (MCKP)&{}\begin{array}{l}\max \ \ p^\mathrm{T} x\\ \text{ subject } \text{ to }\\ x\in F. \end{array} \end{array} \end{aligned}$$

The optimal value of problem (MCKP) is equal to \(\max _{x\in F} \ p^\mathrm{T} x\) and the solution set \(S^{*}\) is given as

$$\begin{aligned} S^{*}:=\left\{ {\bar{x}}\in F\ |\ p^\mathrm{T}{\bar{x}}=\max _{x\in F} \ p^\mathrm{T} x\right\} . \end{aligned}$$

Problem (MCKP) is \(\mathcal{N}\mathcal{P}\)-hard. The approaches to solving (MCKP) can be: heuristics [1, 12], exact methods providing upper bounds for the optimal value of the profit together with the corresponding approximate solutions [26], exact methods providing solutions [18]. There are algorithms that efficiently solve (MCKP) without sorting and reduction [8, 28] or with sorting and reduction [4]. Solving (MCKP) with a linear relaxation (by neglecting the constraints \(x_{ij}\in \{0,1\},\ \ i=1,\ldots ,k, \ \ j=1,\ldots ,n_{i}\)) gives upper bounds on the value of optimal profit. Upper bounds can be also obtained with the help of the Lagrange relaxation. These facts and other features of (MCKP) are described in details in monographs [13, 19].

Exact branch-and-bound methods [6] (integer programming), even those using commercial optimization software (e.g., LINGO, CPLEX) can have troubles with solving large (MCKP) problems. A branch-and-bound algorithm with a quick solution of the relaxation of reduced problems was proposed by Sinha and Zoltners [27]. Dudziński and Walukiewicz proposed an algorithm with pseudo-polynomial complexity [5].

Algorithms that use dynamic programming require integer values of data and for large-scale problems require large amount of memory for backtracking (finding solutions in set X), see also the monograph [19]. The algorithm we propose does not need the data to be integer numbers.

Heuristic algorithms, based on solving linear (or continuous) relaxation of (MCKP) and dynamic programming [7, 22, 24] are reported to be fast, but have limitations typical for dynamic programming.

The most recent approach “reduce and solve” [2, 10] is based on reducing the problem by proposed pseudo cuts and then solving the reduced problems by a Mixed Integer Programming (MIP) solver.

In the present paper, we propose a new exact (not heuristic) method which provides approximate optimal profits together with the corresponding approximate solutions. The method is based on multi-objective optimization techniques. Namely, we start by formulating a linear bi-objective problem (BP) related to the original problem (MCKP). After investigating the relationships between (MCKP) and (BP) problems, we propose an algorithm for solving (MCKP) via a series of scalarized linear bi-objective problems \((BS(\lambda ))\).

The main advantage of the proposed method is that the scalarized linear bi-objective problems \((BS(\lambda ))\) can be explicitly solved by exploiting the structure of the set X. Namely, these scalarized problems can be decomposed into k independent subproblems the solutions of which are given by simple closed-form formulas. This feature of our method is particularly suitable for parallelization. It allows to generate solutions of scalarized problems in an efficient and fast way.

The experiments show that the method we propose generates very quickly an outcome \({\hat{x}}\in F\) which is an approximate solution to (MCKP). Moreover, lower bound (LB) and upper bound (UB) for the optimal profit are provided.

The obtained approximate solution \({\hat{x}}\in F\) could serve as a good starting point for other, e.g., heuristic or exact algorithms for finding an optimal solution to the problem (MCKP).

The organization of the paper is as follows. In Sect. 2, we provide preliminary facts on multi-objective optimization problems and we formulate a bi-objective optimization problem (BP) associated with (MCKP). In Sect. 3, we investigate the relationships between the problem (BP) and the original problem (MCKP). In Sect. 4, we formulate scalarized problems \((BS(\lambda ))\) for bi-objective problem (BP) and we provide closed-form formulae for solutions to problems \((BS(\lambda ))\) by decomposing them into k independent subproblems \((BS(\lambda ))_{i}\), \(i=1,\ldots ,k\). In Sect. 5, we present our method (together with the pseudo-code) which provides a lower bound (LB) for the optimal profit together with the corresponding approximate feasible solution \({\hat{x}}\in F\) to (MCKP) for which the bound (LB) is attained. In Sect. 6, we report on the results of numerical experiments. The last section concludes.

2 Multi-objective optimization problems

Let \(f_{i}:{\mathbb {R}}^{n}\rightarrow {\mathbb {R}}\), \(i=1,\ldots ,k\), be functions defined on \({\mathbb {R}}^{n}\) and \(\varOmega \subset {\mathbb {R}}^{n}\) be a subset in \({\mathbb {R}}^{n}\).

The multi-objective optimization problem is defined as

$$\begin{aligned} \begin{array}{ll} (P)&{}\begin{array}{l} \text {V}\max \ \ (f_{1}(x),\ldots ,f_{k}(x))\\ \text{ subject } \text{ to }\\ x\in \varOmega ,\\ \end{array}\end{array} \end{aligned}$$

where the symbol \('\text {V}\max '\) means that solutions to problem (P) are understood in the sense of Pareto efficiency defined in Definition 2.1.

Let

$$\begin{aligned} {\mathbb {R}}_{+}^{k}:=\{x=(x_{1},\ldots ,x_{k})\in {\mathbb {R}}^{k}\ :\ x_{i}\ge 0,\quad i=1,\ldots ,k\}. \end{aligned}$$

Definition 2.1

A point \(x^{*}\in \varOmega \) is a Pareto efficient (Pareto maximal) solution to (P) if

$$\begin{aligned} f(\varOmega )\cap (f(x^{*})+{\mathbb {R}}^{k}_{+})=\{f(x^{*})\}. \end{aligned}$$

In other words, \(x^{*}\in \varOmega \) is a Pareto efficient solution to (P) if there is no \({\bar{x}}\in \varOmega \) such that

$$\begin{aligned} \begin{array}{l} f_{i}({\bar{x}})\ge f_{i}(x^{*})\quad { for}\ \ i=1,\ldots ,k\ \ { and}\\ f_{\ell }({\bar{x}})> f_{\ell }(x^{*})\quad { for}~{ some}~{ l}\ \ 1\le \ell \le k. \end{array} \end{aligned}$$
(1)

The problem (P) where all the functions \(f_{i}\), \(i=1,\ldots ,k\) are linear is called a linear multi-objective optimization problem.

Remark 2.1

The bi-objective problem

$$\begin{aligned} \begin{array}{ll} f_{1}(x)\rightarrow \max ,\ f_{2}(x)\rightarrow \min \\ { subject}~ { to}\\ x\in \varOmega \\ \end{array} \end{aligned}$$

with Pareto solutions \(x^{*}\in \varOmega \) defined as

$$\begin{aligned} (f_{1}(\varOmega ),f_{2}(\varOmega ))\cap [(f_{1}(x^{*}),f_{2}(x^{*}))+{\mathbb {R}}_{+-}^{2}]=\{(f_{1}(x^{*}),f_{2}(x^{*}))\} \end{aligned}$$
(2)

where

$$\begin{aligned} {\mathbb {R}}_{+-}^{2}:=\{x=(x_{1},x_{2})\in {\mathbb {R}}^{2}\ :\ x_{1}\ge 0,\ x_{2}\le 0\} \end{aligned}$$

is equivalent to the problem

$$\begin{aligned} \begin{array}{ll} f_{1}(x)\rightarrow \max ,\ -f_{2}(x)\rightarrow \max \\ { subject}~ { to}\\ x\in \varOmega \\ \end{array} \end{aligned}$$

in the sense that Pareto efficient solution sets (as subsets of the feasible set \(\varOmega \)) coincide and Pareto elements (the images in \({\mathbb {R}}^{2}\) of Pareto efficient solutions) differ in sign in the second component.

2.1 A bi-objective optimization problem related to (MCKP)

In relation to the original multiple-choice knapsack problem (MCKP), we consider the linear bi-objective binary optimization problem (BP1) of the form

$$\begin{aligned} \begin{array}{ll} (BP1)&{}\begin{array}{l} \sum \limits _{i=1}^{k}\sum \limits _{j=1}^{n_{i}}p_{ij}x_{ij}\rightarrow \max ,\ \sum \limits _{i=1}^{k}\sum \limits _{j=1}^{n_{i}}c_{ij}x_{ij}\rightarrow \min \\ \text{ subject } \text{ to }\\ (x_{ij})\in X. \end{array} \end{array} \end{aligned}$$

In this problem, the left-hand side of the linear inequality constraint \(c^\mathrm{T}x\le b\) of (MCKP) becomes a second criterion and the constraint set reduces to the set X. There are two-fold motivations of considering the bi-objective problem (BP1).

First motivation comes from the fact that in (MCKP) the inequality

$$\begin{aligned} \sum _{i=1}^{k}\sum _{j=1}^{n_{i}}c_{ij}x_{ij}\le b \end{aligned}$$

is usually seen as a budget (in general: a resource) constraint with the left-hand-side to be preferably not greater than a given available budget b. In the bi-objective problem (BP1), this requirement is represented through the minimization of \(\sum _{i=1}^{k}\sum _{j=1}^{n_{i}}c_{ij}x_{ij}\). In Theorem 3.1 of Sect. 3, we show that under relatively mild conditions among solutions of the bi-objective problem (BP1) [or the equivalent problem (BP)] there are solutions to problem (MCKP).

Second motivation is important from the algorithmic point of view and is related to the fact that in the proposed algorithm we are able to exploit efficiently the specific structure of the constraint set X which contains k linear equality constraints (each one referring to a different group of variables) and the binary conditions only. More precisely, the set X can be represented as the Cartesian product

$$\begin{aligned} X=X^{1}\times X^{2}\times \cdots \times X^{k}, \end{aligned}$$
(3)

of the sets \(X^{i}\), where \(X^{i}:=\{x^{i}\in {\mathbb {R}}^{n_{i}}\ |\ \sum _{j=1}^{n_{i}}x_{ij}=1, x_{ij}\in \{0,1\},\ j=1,\ldots ,n_{i}\}\), \(i=1,\ldots ,k\) and

$$\begin{aligned} x=(\underbrace{x_{11},\ldots ,x_{1n_{1}}}_{x^{1}},\underbrace{x_{21},\ldots ,x_{2n_{2}}}_{x^{2}},\ldots , \underbrace{x_{k1},\ldots ,x_{kn_{1}}}_{x^{k}})^\mathrm{T}, \end{aligned}$$
(4)

i.e.,

$$\begin{aligned} x=(x^{1},\ldots ,x^{k})^\mathrm{T} \end{aligned}$$

and \(x^{i}=(x_{i1},\ldots ,x_{in_{i}})\). Accordingly,

$$\begin{aligned} p=(p^{1},\ldots ,p^{k})^\mathrm{T},\ \ \text{ and }\ \ c=(c^{1},\ldots ,c^{k})^\mathrm{T}. \end{aligned}$$

Note that due to the presence of the budget inequality constraint the feasible set F of problem (MCKP) cannot be represented in the form analogous to (3).

According to Remark 2.1, problem (BP1) can be equivalently reformulated in the form

$$\begin{aligned} \begin{array}{ll} (BP)&{}\begin{array}{l} \text {V}\max \ (p^\mathrm{T}x,\ (-c)^\mathrm{T}x)\\ \text{ subject } \text{ to }\\ x\in X. \end{array} \end{array} \end{aligned}$$

3 The relationships between (BP) and (MCPK)

Starting from the multiple-choice knapsack problem (MCKP) of the form

$$\begin{aligned} \begin{array}{ll} (MCKP)&{}\begin{array}{l} \max \ p^\mathrm{T}x\\ \text {subject to}\\ x\in F,\\ \end{array} \end{array} \end{aligned}$$

in the present section we analyse relationships between problems (MCKP) and (BP).

We start with a basic observation. Recall first that (MCKP) is solvable, i.e., the feasible set F is nonempty if

$$\begin{aligned} b\ge \min _{x\in X} c^\mathrm{T}x. \end{aligned}$$

On the other hand, if \(b\ge \max _{x\in X} c^\mathrm{T}x\), (MCKP) is trivially solvable. Thus, in the sequel we assume that

$$\begin{aligned} C_{min}:=\min _{x\in X} c^\mathrm{T}x\le b<C_{max}:=\max _{x\in X} c^\mathrm{T}x. \end{aligned}$$
(5)

Let \(P_{max}:=\max _{x\in X} p^\mathrm{T}x\), i.e., \(P_{max}\) is the maximal value of the function \(p^\mathrm{T}x\) on the set X. The following observations are essential for further considerations.

  1. 1.

    First, among the elements of X which realize the maximal value \(P_{max}\), there exists at least one which is feasible for (MCKP), i.e., there exists \(x_{p}\in X\), \(p^\mathrm{T}x_{p}= P_{max}\) such that \(c^\mathrm{T}x_{p}\le b\), i.e.,

    $$\begin{aligned} C_{min}\le c^\mathrm{T}x_{p}\le b<C_{max}. \end{aligned}$$
    (6)

    Then, clearly, \(x_{p}\) solves (MCKP).

  2. 2.

    Second, none of elements which realize the maximal value \(P_{max}\) is feasible for (MCKP), i.e., for every \(x_{p}\in X\), \(p^\mathrm{T}x_{p}= P_{max}\) we have \(c^\mathrm{T}x_{p}> b\), i.e., any \(x_{p}\) realizing the maximal value \(P_{max}\) is infeasible for (MCKP), i.e.

    $$\begin{aligned} C_{min}\le b<c^\mathrm{T}x_{p}\le C_{max}. \end{aligned}$$
    (7)

In the sequel, we concentrate on Case 2, characterized by (7). This case is related to problem (BP). To see this let us introduce some additional notations. Let \(x_{cmin}\in X\) and \(x_{pmax}\in X\) be defined as

$$\begin{aligned} \begin{array}{lll} c^\mathrm{T}x_{cmin}=C_{min}\ &{}\text {and}\ \ &{} p^\mathrm{T}x_{cmin}=\max \nolimits _{c^\mathrm{T}x=C_{min}}p^\mathrm{T}x\\ p^\mathrm{T}x_{pmax}=P_{max}\ &{}\text {and}\ \ &{} c^\mathrm{T}x_{pmax}=\min \nolimits _{p^\mathrm{T}x=P_{max}}c^\mathrm{T}x. \end{array} \end{aligned}$$

Let \(S_{bo}\) be the set of all Pareto solutions to the bi-objective problem (BP),

$$\begin{aligned} S_{bo}:=\{x\in X\ :\ (p^\mathrm{T},(-c)^\mathrm{T})(X)\cap [(p^\mathrm{T}x,(-c)^\mathrm{T}x)+{\mathbb {R}}^{2}_{+}]=\{(p^\mathrm{T}x,(-c)^\mathrm{T}x)\}\}, \end{aligned}$$

(c.f. Definition 2.1). The following lemma holds.

Lemma 3.1

Assume that we are in Case 2, i.e., condition (7) holds. There exists a Pareto solution to the bi-objective optimization problem (BP), \({\bar{x}}\in S_{bo}\) which is feasible to problem (MCKP), \(i.e., c^\mathrm{T}{\bar{x}}\le b\) which amounts to \({\bar{x}}\in F\).

Proof

According to Definition 2.1, both \(x_{pmax}\in X\) and \(x_{cmin}\in X\) are Pareto efficient solutions to (BP), i.e., there is no \(x\in X\) such that \((p^\mathrm{T}x, c^\mathrm{T}x)\ne (p^\mathrm{T}x_{pmax}, c^\mathrm{T}x_{pmax})\) and

$$\begin{aligned} p^\mathrm{T}x\ge p^\mathrm{T}x_{pmax}\ \text{ and } \ c^\mathrm{T}x\le c^\mathrm{T}x_{pmax} \end{aligned}$$

and there is no \(x\in X\) such that \((p^\mathrm{T}x, c^\mathrm{T}x)\ne (p^\mathrm{T}x_{cmin}, c^\mathrm{T}x_{cmin})\) and

$$\begin{aligned} p^\mathrm{T}x\ge p^\mathrm{T}x_{cmin}\ \text{ and } \ c^\mathrm{T}x\le c^\mathrm{T}x_{cmin}. \end{aligned}$$

Moreover, by (7),

$$\begin{aligned} C_{min}=c^\mathrm{T}x_{cmin}\le b<c^\mathrm{T}x_{pmax}. \end{aligned}$$
(8)

In view of (8), \({\bar{x}}=x_{cmin}\in S_{bo}\) and \({\bar{x}}=x_{cmin}\in F\) (\(c^\mathrm{T}x_{cmin}\le b\)) which means that \({\bar{x}}\) is feasible to problem (MCKP), which concludes the proof. \(\square \)

Now we are ready to formulate the result establishing the relationship between solutions of (MCKP) and Pareto efficient solutions of (BP) in the case where the condition (7) holds.

Theorem 3.1

Suppose we are given problem (MCKP) satisfying condition (7). Let \(x^{*}\in X\) be a Pareto solution to (BP), such that

$$\begin{aligned} b-c^\mathrm{T}x^{*}=\min _{x\in S_{bo},b-c^\mathrm{T}x\ge 0} b-c^\mathrm{T}x.\ \ \ \ \ \ (*) \end{aligned}$$

Then \(x^{*}\) solves (MCKP).

Proof

Observe first that, by Lemma 3.1, there exist \(x\in S_{bo}\) satisfying the constraint \(c^\mathrm{T}x\le b\), i.e., condition \((*)\) is not dummy.

By contradiction, suppose that a feasible element \(x^{*}\in F\), i.e., \(x^{*}\in X\), \(c^\mathrm{T}x^{*}\le b\), is not a solution to (MCKP), i.e., there exists an \(x_{1}\in X\), such that

$$\begin{aligned} c^\mathrm{T}x_{1}\le b\ \ \text{ and }\ p^\mathrm{T}x_{1}>p^\mathrm{T}x^{*}.\ \ \ (**) \end{aligned}$$

We show that \(x^{*}\) cannot satisfy condition \((*)\). If \(c^\mathrm{T}x_{1}\le c^\mathrm{T} x^{*}\), then \(x^{*}\) is not a Pareto solution to (BP), i.e., \(x^{*}\not \in S_{bo}\), and \(x^{*}\) does not satisfy condition \((*)\). Otherwise, \(c^\mathrm{T}x_{1}> c^\mathrm{T} x^{*}\), i.e.,

$$\begin{aligned} b-c^\mathrm{T}x^{*}> b-c^\mathrm{T} x_{1}. \end{aligned}$$
(9)

If \(x_{1}\in S_{bo}\), then because \(x^{*}\in S_{bo}\), then, according to (9), \(x^{*}\) cannot satisfy condition \((*)\).

If \(x_{1}\not \in S_{bo}\), there exists \(x_{2}\in S_{bo}\) which dominates \(x_{1}\), i.e., \((p^\mathrm{T}x_{2}, (-c)^\mathrm{T}x_{2})\in (p^\mathrm{T}x_{1}, (-c)^\mathrm{T}x_{1})+{\mathbb {R}}_{+}^{2}\). Again, if \(c^\mathrm{T}x_{2}\le c^\mathrm{T} x^{*}\), then \(x^{*}\) is not a Pareto solution to (BP), i.e., \(x^{*}\) cannot satisfy condition \((*)\). Otherwise, if \(c^\mathrm{T}x_{2}> c^\mathrm{T} x^{*}\), then either \(x^{*}\not \in S_{bo}\) and consequently \(x^{*}\) cannot satisfy condition \((*)\), or \(x^{*}\in S_{bo}\), in which case \(b-c^\mathrm{T}x^{*}> b-c^\mathrm{T} x_{1}\) and \(x^{*}\) does not satisfy condition \((*)\), a contradiction which completes the proof. \(\square \)

Theorem 3.1 says that under condition (7) any solution to (BP) satisfying condition \((*)\) solves problem (MCKP). General relations between constrained optimization and multi-objective programming were investigated in [15].

Basing ourselves on Theorem 3.1, in Sect. 5 we provide an algorithm for finding \(x\in S_{bo}\), a Pareto solution to (BP), which is feasible to problem (MCKP) and for which the condition \((*)\) is either satisfied or is, in some sense, as close as possible to be satisfied. In this latter case, the algorithm provides upper and lower bounds for the optimal value of (MCKP) (see Fig.  1).

Fig. 1
figure 1

Illustration to the content of Theorem 3.1; black dots—outcomes of Pareto efficient solutions to (BP), star—Pareto efficient outcome to (BP) which solves (MCKP)

4 Decomposition of the scalarized bi-objective problem (BP)

In the present section, we consider problem \((BS(\lambda _{1},\lambda _{2}))\) defined by (10) which is a linear scalarization of problem (BP). In our algorithm BISSA, presented in Sect. 5, we obtain an approximate feasible solution to (MCKP) by solving a (usually very small) number of problems of the form \((BS(\lambda _{1},\lambda _{2}))\). The main advantage of basing our algorithm on problems \((BS(\lambda _{1},\lambda _{2}))\) is that they are explicitly solvable by simple closed-form expressions (17) .

For problem (BP) the following classical scalarization result holds.

Theorem 4.1

[9, 20] If there exist \(\lambda _{\ell }>0\), \(\ell =1,2\), such that \(x^{*}\in X\) is a solution to the scalarized problem

$$\begin{aligned} \begin{array}{ll} (BS(\lambda _{1},\lambda _{2}))&{}\begin{array}{l} \max \limits _{x\in X} \ \lambda _{1} p^\mathrm{T}x+\lambda _{2} (-c)^\mathrm{T}x\\ \end{array} \end{array} \end{aligned}$$
(10)

then \(x^{*}\) is a Pareto efficient solution to problem (BP).

Without loosing generality we can assume that \(\sum _{l=1}^{2}\lambda _{\ell }=1\). In the sequel, we consider, for \(0<\lambda <1\), scalarized problems of the form

$$\begin{aligned} \begin{array}{ll} (BS(\lambda ))&{}\begin{array}{l} \max \limits _{x\in X} \lambda p^\mathrm{T}x+(1-\lambda ) (-c)^\mathrm{T}x\\ \end{array} \end{array} \end{aligned}$$
(11)

Remark 4.1

According to Theorem 4.1, solutions to problems

$$\begin{aligned} \max \limits _{x\in X} p^\mathrm{T}x,\ \ \ \max \limits _{x\in X} (-c)^\mathrm{T}x \end{aligned}$$
(12)

need not be Pareto efficient because the weights are not both positive. However, there exist Pareto efficient solutions to (BP) among solutions to these problems.

Namely, there exist \(\varepsilon _{1}>0\) and \(\varepsilon _{2}>0\) such that solutions to problems

$$\begin{aligned} \begin{array}{ll} (P1)&\max \limits _{x\in X} p^\mathrm{T}x+\varepsilon _{1}(-c)^\mathrm{T}x \end{array} \end{aligned}$$

and

$$\begin{aligned} \begin{array}{ll} (P2)&\max \limits _{x\in X} (-c)^\mathrm{T}x+\varepsilon _{2}p^\mathrm{T}x \end{array} \end{aligned}$$

are Pareto efficient solutions to problems (12), respectively. Suitable \(\varepsilon _{1}\) and \(\varepsilon _{2}\) will be determined in the next section.

4.1 Decomposition

Due to the highly structured form of the set X and the possibility of representing X in the form (3),

$$\begin{aligned} X=X^{1}\times X^{2}\times \cdots \times X^{k}, \end{aligned}$$

we can provide explicit formulae for solving problems \((BS(\lambda ))\). To this aim we decompose problems \((BS(\lambda ))\) as follows.

Recall that by using the notation (4) we can put any \(x\in X\) in the form

$$\begin{aligned} x:=(x^{1},x^{2},\ldots ,x^{k})^\mathrm{T}, \end{aligned}$$

where \(x^{i}=(x_{i1},\ldots ,x_{in_{i}})\), \(i=1,\ldots ,k\), and \(\sum _{j=1}^{n_{i}}x_{ij}=1\).

Let \(0<\lambda <1\). According to (3) we have

$$\begin{aligned} X^{i}:=\left\{ x^{i}=(x_{i1},\ldots ,x_{in_{i}})\in {\mathbb {R}}^{n_{i}}\ :\ \sum _{j=1}^{n_{i}}x_{ij}=1,\ \ \ x_{ij}\in \{0,1\},\ \ j=1,\ldots ,n_{i}\right\} \end{aligned}$$

for \(i=1,\ldots ,k\). Consider problems \((BS(\lambda ))_{i}\), \(i=1,\ldots ,k\), of the form

$$\begin{aligned} \begin{array}{ll} (BS(\lambda ))_{i}&{}\begin{array}{l} \max \limits _{x^{i}\in X^{i}} [\lambda (p^{i})^\mathrm{T}x^{i}+(1-\lambda ) (-c^{i})^\mathrm{T}x^{i}]\\ \end{array} \end{array} \end{aligned}$$
(13)

By solving problems \((BS(\lambda ))_{i}\), \(i=1,\ldots ,k\), we find their solutions \({\bar{x}}^{i}\). We shall show that

$$\begin{aligned} {\bar{x}}:=({\bar{x}}^{1},\ldots ,{\bar{x}}^{k})^\mathrm{T} \end{aligned}$$

solves \((BS(\lambda ))\). Thus, problem (11) is decomposed into k subproblems (13), the solutions of which form solutions to (11).

Note that similar decomposed problems with feasible sets \(X^i\) and another objective functions have already been considered in [3] in relation to multi-dimensional multiple-choice knapsack problems.

Now we give a closed-form formulae for solutions of \((BS(\lambda ))_{i}\). For \(i=1,..,,k\), let

$$\begin{aligned} V_{i}:=\max \{\lambda p_{ij}+(1-\lambda ) (-c_{ij}) \ :\ 1\le j\le n_{i}\}. \end{aligned}$$
(14)

and let \(1\le j^{*}_{i}\le n_{i}\) be the index number for which the value \(V_{i}\) is attained, i.e.,

$$\begin{aligned} V_{i}=\lambda p_{ij_{i}^{*}}+(1-\lambda ) (-c_{ij_{i}^{*}}). \end{aligned}$$
(15)

We show that

$$\begin{aligned} {\bar{x}}^{i}:=(0,..,\underbrace{1}_{j_{i}^{*}},0,\ldots ,0)\ \ \ \end{aligned}$$
(16)

is a solution to \((BS(\lambda ))_{i}\) and

$$\begin{aligned} {\bar{x}}^{*}:=({\bar{x}}^{1},{\bar{x}}^{2},\ldots ,{\bar{x}}^{k})^\mathrm{T} \end{aligned}$$
(17)

is a solution to \((BS(\lambda ))\). The optimal value of \((BS(\lambda ))\) is

$$\begin{aligned} V:=V_{1}+\cdots +V_{k}. \end{aligned}$$
(18)

Namely, the following proposition holds.

Proposition 4.1

Any element \({\bar{x}}^{i}\in {\mathbb {R}}^{n_{i}}\) given by (16) solves \((BS(\lambda ))_{i}\) for \(i=1,\ldots ,k\) and any \({\bar{x}}^{*}\in {\mathbb {R}}^{n}\) given by (17) solves problem \((BS(\lambda ))\).

Proof

Clearly, \({\bar{x}}^{i}\) are feasible for \((BS(\lambda ))_{i}\), \(i=1,\ldots ,k\), because \({\bar{x}}^{i}\) is of the form (16) and hence belongs to the set \(X^{i}\) which is the constraint set of \((BS(\lambda ))_{i}\). Consequently, \({\bar{x}}^{*}\) defined by (17) is feasible for \((BS(\lambda ))\) because all the components are binary and the linear equality constraints

$$\begin{aligned} \sum _{j=1}^{n_{i}} x^{i}_{j}=1, \quad \ i=1,2,\ldots ,k \end{aligned}$$

are satisfied.

To see that \({\bar{x}}^{i}\) are also optimal for \((BS(\lambda ))_{i}\), \(i=1,\ldots ,k\), suppose by the contrary, that there exists \(1\le i\le k\) and an element \(y\in {\mathbb {R}}^{n_{i}}\) which is feasible for \((BS(\lambda ))_{i}\) with the value of the objective function strictly greater than the value at \({\bar{x}}^{i}\), i.e.,

$$\begin{aligned} \sum _{j=1}^{n_{i}}[\lambda p_{ij}+(1-\lambda ) (-c_{ij})]y_{j}> \sum _{j=1}^{n_{i}}[\lambda p_{ij}+(1-\lambda ) (-c_{ij})]{\bar{x}}^{i}_{j}. \end{aligned}$$

This, however, would mean that there exists an index \(1\le j\le n_{i}\) such that

$$\begin{aligned} \lambda p_{ij}+(1-\lambda ) (-c_{ij})>\lambda p_{ij^{*}}+(1-\lambda ) (-c_{ij^{*}}) \end{aligned}$$

contrary to the definition of \(j^{*}\).

To see that \({\bar{x}}^{*}\) is optimal for \((BS(\lambda ))\), suppose by the contrary, that there exists an element \(y\in {\mathbb {R}}^{n}\) which is feasible for \((BS(\lambda ))\) and the value of the objective function at y is strictly greater than the value of the objective function at \({\bar{x}}^{*}\), i.e.,

$$\begin{aligned} \lambda p^\mathrm{T}y+(1-\lambda ) (-c)^\mathrm{T}y>\lambda p^\mathrm{T}{\bar{x}}^{*}+(1-\lambda ) (-c)^\mathrm{T}{\bar{x}}^{*}. \end{aligned}$$

In the same way as previously, we get the contradiction with the definition of the components of \({\bar{x}}^{*}\) given by (17). \(\square \)

Let us observe that each optimization problem \((BS(\lambda ))_{i}\) can be solved in time \(O(n_{i})\), hence problem \((BS(\lambda ))\) can be solved in time O(n), where \(n=\sum _{i=1}^{k}n_{i}\).

Clearly, one can have more than one solution to \((BS(\lambda ))_{i}\), \(i=1,\ldots ,k\). In the next section, according to Theorem 3.1, from among all the solutions of \((BS(\lambda ))\) we choose the one for which the value of the second criterion is greater than and as close as possible to \(-b\).

Note that by using Proposition 4.1, one can easily solve problems (P1) and (P2) defined in Remark 4.1, i.e., by applying (18) we immediately get

$$\begin{aligned} F_{1}:=\max _{x\in X} p^\mathrm{T}x,\quad \ F_{2}:=\max _{x\in X} (-c)^\mathrm{T}x \end{aligned}$$

the optimal values of (P1) and (P2) and by (17), we find their solutions \({\bar{x}}_{1}\) and \({\bar{x}}_{2}\), respectively.

Proposition 4.1 and formula (17) allows to find \(\varepsilon _{1}>0\) and \(\varepsilon _{2}>0\) as defined in Remark 4.1. By (17), it is easy to find elements \({\bar{x}}_{1},{\bar{x}}_{2}\in X\) such that

$$\begin{aligned} F_{1}= p^\mathrm{T}{\bar{x}}_{1},\quad F_{2}= (-c)^\mathrm{T}{\bar{x}}_{2}. \end{aligned}$$

Put

$$\begin{aligned} {\bar{F}}_{1}:= p^\mathrm{T}{\bar{x}}_{2},\quad {\bar{F}}_{2}:= (-c)^\mathrm{T}{\bar{x}}_{1} \end{aligned}$$

and let

$$\begin{aligned} {\bar{V}}_{1}:=F_{1}-decr(p),\quad {\bar{V}}_{2}:=F_{2}-decr(-c), \end{aligned}$$

where decr(p) and \(decr(-c)\) denote the smallest nonzero decrease on X of functions p and \((-c)\) from \({F}_{1}\) and \({F}_{2}\), respectively. Note that decr(p) and \(decr(-c)\) can easily be found.

Remark 4.2

The following formulas describe decr(p) and \(decr(-c)\),

$$\begin{aligned} decr(p):=\min _{1\le i \le k} (p_{max}^{i}-p_{submax}^{i}),\ \ decr(-c):=\min _{1\le i \le k} ((-c)_{max}^{i}-(-c)_{submax}^{i}), \end{aligned}$$
(19)

where \(p^{i}\) and \(c^{i}\), \(i=1,\ldots ,k\), are defined by (4), \(p_{submax}^{i}\), \((-c)_{submax}^{i}\), \(i=1,\ldots ,k\), are submaximal values of functions \((p^{i})^\mathrm{T}x^{i}\), \(((-c)^{i})^\mathrm{T}x^{i}\), \(x^{i}\in X^{i}\), \(i=1,\ldots ,k\).

For any \(1\le i\le k\), the submaximal values of a linear function \((d^{i})^\mathrm{T}x^{i}\) on \(X^{i}\) can be found by: ordering first the coefficients of the function \((d^{i})\) decreasingly,

$$\begin{aligned} (d^{i})^{j1}>(d^{i})^{j2}\ge \cdots \ge (d^{i})^{jm_{i}}, \end{aligned}$$

and next observing that the submaximal (i.e., smaller than maximal but as close as possible to the maximal) value of \((d^{i})\) on \(X^{i}\) is attained for

$$\begin{aligned} {\bar{x}}^{i}:=(0,\ldots ,\underbrace{1}_{j2},0,\ldots 0). \end{aligned}$$

Basing on Remark 4.2 one can find values of \(p_{submax}^{i}\) and \((-c)_{submax}^{i}\) in time \(O(n_{i})\), \(i=1,\ldots ,k\), even without any sorting. It can be done for a given i by finding a maximal value among all \(p_{ij}\) (\(c_{ij}\)), \(j=1,\ldots ,n_{i}\), except \(p_{max}^{i}\) (\(c_{max}^{i}\)). Therefore the computational cost of calculating decr(p) and \(decr(-c)\) is O(n).

We have the following fact.

Proposition 4.2

Let \(F_{1}\), \(F_{2 }\), \({\bar{F}}_{1}\), \({\bar{F}}_{2}\), \({\bar{V}}_{1}\), \({\bar{V}}_{2}\) be as defined above. The problems

$$\begin{aligned} \begin{array}{ll} (P1)&\max \limits _{x\in X} p^\mathrm{T}x+\varepsilon _{1}(-c)^\mathrm{T}x \end{array} \end{aligned}$$

and

$$\begin{aligned} \begin{array}{ll} (P2)&\max \limits _{x\in X} (-c)^\mathrm{T}x+\varepsilon _{2}p^\mathrm{T}x \end{array} \end{aligned}$$

where

$$\begin{aligned} \varepsilon _{1}:=\frac{F_{1}-{\bar{V}}_{1}}{F_{2}-{\bar{F}}_{2}},\quad \varepsilon _{2}:=\frac{F_{2}-{\bar{V}}_{2}}{F_{1}-{\bar{F}}_{1}}, \end{aligned}$$
(20)

give Pareto efficient solutions to problem (BP), \({\bar{x}}_{1}\) and \({\bar{x}}_{2}\), respectively. Moreover,

$$\begin{aligned} f_{1}({\bar{x}}_{1})=F_{1}\ \ \text {and}\ \ f_{2}({\bar{x}}_{2})=F_{2}, \end{aligned}$$

i.e., \({\bar{x}}_{1}\), \({\bar{x}}_{2}\) solve problems (12), respectively.

Proof

Follows immediately from the adopted notations, see Fig. 2. For instance, the objective of problem (P1) is represented by the straight line passing through points \((F_{1},{\bar{F}}_{2})\) and \(({\bar{V}}_{1},F_{2})\), i.e.,

$$\begin{aligned} F_{1}+\varepsilon _{1}{\bar{F}}_{2}={\bar{V}}_{1}+\varepsilon _{1}F_{2} \end{aligned}$$

which gives (20). The choice of \(F_{1}\), \({\bar{F}}_{2}\) and \({\bar{V}}_{1}\), \(F_{2}\) guarantees that \({\bar{x}}_{1}\) solves (P1) (and analogously for \({\bar{x}}_{2}\) which solves (P2)). \(\square \)

Fig. 2
figure 2

Construction of \(\varepsilon _{1}\) and \(\varepsilon _{2}\)

5 Bi-objective approximate solution search algorithm (BISSA) for solving (MCKP)

In this section, we propose the bi-objective approximate solution search algorithm BISSA, for finding an element \({\hat{x}}\in F\) which is an approximate solution to (MCKP). The algorithm relies on solving a series of problems \((BS(\lambda ))\) defined by (11) for \(0<\lambda <1\) chosen in the way that the Pareto solutions \(x(\lambda )\) to \((BS(\lambda ))\) are feasible for (MCKP) and for which \((-c)^\mathrm{T}x(\lambda )+b\ge 0\) and \((-c)^\mathrm{T}x(\lambda )+b\) diminishes for subsequent \(\lambda \).

According to Theorem 4.1, each solution to \((BS(\lambda ))\) solves the linear bi-objective optimization problem (BP),

$$\begin{aligned} \begin{array}{ll} (BP)&{}\begin{array}{l} \text {Vmax} (p^\mathrm{T}x,(-c)^\mathrm{T}x)\\ \text {subject to}\ \ x\in X. \end{array} \end{array} \end{aligned}$$

According to Theorem 3.1, any Pareto efficient solution \(x^{*}\) to problem (BP) which is feasible to (MCKP), i.e., \((-c)^\mathrm{T}x^{*}\ge -b\), and satisfies condition \((*)\), i.e.,

$$\begin{aligned} (-c)^\mathrm{T}x^{*}+b=\min _{x\in S_{bo}, (-c)^\mathrm{T}x+b\ge 0} (-c)^\mathrm{T}x+b\ \ \ \ \ \ (*) \end{aligned}$$

solves problem (MCKP). Since problems \((BS(\lambda ))\) are defined with the help of linear scalarization, we are not able, in general, to enumerate all \(x\in S_{bo}\) such that \((-c)^\mathrm{T}x+b\ge 0\) in order to find an \(x^{*}\) which satisfy condition \((*)\). On the other hand, by using linear scalarization, we are able to decompose and easily solve problems \((BS(\lambda ))\).

The BISSA algorithm aims at finding a Pareto efficient solution \({\hat{x}}\in X\) to (BP) which is feasible to (MCKP), i.e., \(c^\mathrm{T}{\hat{x}}\le b\) for which the value of \(b-c^\mathrm{T}{\hat{x}}\) is as small as possible (but not necessarily minimal) and approaches condition \((*)\) of Theorem 3.1 as close as possible.

Here, we give a description of the BISSA algorithm. The first step of the algorithm (lines 1–5) is to find solutions to problems (P1) and (P2) as well as their outcomes. The solutions are the extreme Pareto solutions to problem (BP). Those points named \({(a_{1},b_{1})}^0\) and \({(a_{2},b_{2})}^0\) are presented in Fig. 3. Then (lines 6-9), in order to assert whether a solution to problem (MCKP) exists or not, a basic checking is made against value \(-b\). If the algorithm reaches line 10, no solution has been found yet, and we can begin the exploration of the search space.

Fig. 3
figure 3

Outcome \(f({\hat{x}})\) and bounds derived by the BISSA algorithm; \(x^{*}\)—the solution to problem (MCKP)

We calculate \(\lambda \) according to line 13. The value of \(\lambda \) is the slope of the straight line joining \((a_{1},b_{1})\) and \((a_{2},b_{2})\). At the same time it is the scalarization parameter defining the problem \((BS(\lambda ))\) (formula 11). The outcome of the solution to problem \((BS(\lambda ))\) cannot lie below the straight line determined by points \((a_{1},b_{1})\) and \((a_{2},b_{2})\). It must lie on or above this line, as it is the Pareto efficient solution to problem (BP). Then, problem \((BS(\lambda ))\) is solved (line 14) by using formulae (16) and (17). Next, in lines 15–27 of the repeat-until loop a scanning of the search space is conducted to find solutions to problem (BP) which are feasible to problem (MCKP). If there exist solutions with outcomes lying above the straight line determined by \(\lambda \) (the condition in line 15 is true), either the narrowing of the search space is made (by determining new points \((a_{1},b_{1})\) and \((a_{2},b_{2})\), see Fig. 3, and points with upper index equal to 1), and the loop continues, or the solution to problem (MCKP) is derived. If not, the solution x from set S which outcome lies above the line determined by \(-b\) [the feasible solution to problem (MCKP)] and for which value \(f_{2}(x)+b\) is minimal in this set, is an approximate solution (\({\hat{x}}\)) to problem (MCKP), and the loop terminates. Finally (line 28), the upper bound \(f_{1}({\hat{x}})+u\) on the profit value of exact solution to problem (MCKP) is calculated.

figure a

The BISSA algorithm finds either an exact solution to problem (MCKP), or (after reaching line 27) a lower bound (LB) with its solution \({\hat{x}}\) and an upper bound (UB) (see Fig. 3). A solution found by the algorithm is, in general, only an approximate solution to problem (MCKP) because a triangle (called further the triangle of uncertainty) determined by points \((f_{1}({\hat{x}}), f_{2}({\hat{x}})), (f_{1}({\hat{x}})+u, -b), (f_{1}({\hat{x}}),-b)\) may contain other Pareto outcomes [candidates for outcomes of exact solutions to problem (MCKP)] which the proposed algorithm is not able to derive. The reason is that we use a scalarization technique based on weighted sums of criteria functions to obtain Pareto solutions to problem (BP).

Let us recall that each instance of the optimization problem \((BS(\lambda ))\) can be solved in time O(n), but the number of these instances solved by the proposed algorithm depends on the size of the problem (values k and \(n_{i}\)) and the data.

6 Computational experiments

Most publicly available test instances refer not to the (MCKP) problem (let us recall, that there is only one inequality or budget constraint in the problem we consider) but to multi-dimensional knapsack problems. Due to this fact we generate new random instances (available from the authors on request). However, to compare solutions obtained by the BISSA algorithm to the exact solutions we used the minimal algorithm for the multiple-choice knapsack problem [22] which we call EXACT and its implementation in C [23]. The EXACT algorithm gives the profit value of the optimal solution as well as the solution obtained by the greedy algorithm for the (MCKP) problem, so the quality of the BISSA algorithm approximate solutions can be assessed in terms of the difference or relative difference between profit values of approximate solutions and exact ones.

Since the difficulty of knapsack problems (see, e.g., the monograph [19]) depends on the correlation between profits and weights of items, we conducted two computational experiments: Experiment 1 with uncorrelated data instances (easy to solve) and Experiment 2 with weakly correlated data instances (more difficult to solve) (c.f.[11]). The explanation why weakly correlated problems are more difficult to solve by the BISSA algorithm than uncorrelated ones we give later.

To prepare test problems (data instances) we used a method proposed in [22] and our own procedure for calculating total cost values.

The BISSA algorithm has been implemented in C. The implementation of BISSA algorithm was run on off-the-shelf laptop (2GHz AMD processor, Windows 10), and the implementation of EXACT algorithm was run on PC machine (4x3.2GHz Intel processor, Linux). The running time for BISSA and EXACT algorithms for each of the test problems was below one second.

The contents of the tables columns containing experiment results is as follows.

1:

Problem no.

2:

Profit of the exact solution found by the EXACT algorithm.

3:

Profit of the approximate solution found by the BISSA algorithm.

4:

Difference between 2 and 3.

5:

Relative (%) difference between 2 and 3.

6:

Upper bound for (MCKP) found by the BISSA algorithm.

7:

The difference between the upper bound and profit of the approximate solution.

8:

The relative difference between the upper bound and profit of the approximate solution.

9:

Upper bound for (MCKP) found by the greedy algorithm.

10:

Number of \((BS(\lambda ))\) problems solved by the BISSA algorithm.

Table 1 Obtained results for Experiment 1, problem set (unc, 10, 1000)
Table 2 Obtained results for Experiment 1, problem set (unc, 100, 100)

Experiment 1: uncorrelated data (unc) instances

We generated 10 test problems assuming that \(k=10\) and \(n_{i}=1000, i=1,\ldots ,k\) (problem set (unc, 10, 1000)), 10 test problems assuming that \(k=100\) and \(n_{i}=100, i=1,\ldots ,k\) (problem set (unc, 100, 100)), and 10 test problems assuming that \(k=1000\) and \(n_{i}=10, i=1,\ldots ,k\) (problem set (unc, 1000, 10)). For each test problem profits (\(p_{ij}\)) and costs (\(c_{ij}\)) of items were randomly distributed (according to the uniform distribution) in [1, R], \(R=10000\). Profits and costs of items were integers. For each test problem the total cost b was equal to either \(c + random(0,\frac{1}{4}*c)\), or \(c - random(0,\frac{1}{4}*c)\) randomly selected with the same probability equal to 0.5), where \(c=\frac{1}{2}\sum _{i=1}^{k}(\min _{j=1,\ldots ,n_{i}}c_{ij}+\max _{j=1,\ldots ,n_{i}}c_{ij})\), and random(0, r) denotes randomly selected (according to the uniform distribution) integer from [0, r].

The results for problem sets (unc, 10, 1000), (unc, 100, 100) and (unc, 1000, 10) are given, respectively, in tables Tables 12 and 3.

Experiment 2: weakly correlated (wco) data instances

We generated 10 test problems assuming that \(k=20\) and \(n_{i}=20, i=1,\ldots ,k\) (problem set (wco, 20, 20)). For each test problem costs (\(c_{ij}\)) of items in set \(N_{i}\) were randomly distributed (according to the uniform distribution) in [1, R], \(R=10000\), and profits of items (\(p_{ij}\)) in this set were randomly distributed in \([c_{ij}-10, c_{ij}+10]\), such that \(p_{ij}\ge 1\). Profits and costs of items were integers. For each test problem the total cost b was calculated as for Experiment 1.

Table 3 Obtained results for Experiment 1, problem set (unc, 1000, 10)
Table 4 Obtained results for Experiment 2, problem set (wco, 20, 20)

The results for problem set (wco, 20, 20) are given in Table 4.

In the case of uncorrelated data instances, the BISSA algorithm was able to find approximate solutions (and profit values) to problems with 10000 binary variables in reasonable time. The relative difference between profit values of exact and approximate solutions are small for each of the test problems. Upper bounds found by the BISSA algorithm are almost the same as upper bounds found by the greedy algorithm for (MCKP). Even for the problem set (unc, 1000, 10) number of \((BS(\lambda ))\) problems solved by the BISSA algorithm is relatively small in regards to number of decision variables.

In the case of weakly correlated data instances, the BISSA algorithm solved problems with 400 binary variables in reasonable time. The relative difference between profit values of exact and approximate solutions is, in average, greater than for uncorrelated test problems. As one can see in Table 4, upper bounds found by the BISSA algorithm are almost the same as upper bounds found by the greedy algorithm for (MCKP). The reason why the BISSA algorithm solves weakly correlated instances with a significantly smaller number of variables than for uncorrelated ones in reasonable time is as follows. In line 24 of the BISSA algorithm, in order to find an element \({\hat{x}}\), we have to go through the solution set S to the problem \((BS(\lambda ))\) [the complete scan of set S according to values of the second objective function of problem (BP)]. For weakly correlated data instances the cardinality of the set S may be large even for problems belonging to class (wco, 30, 30). We conducted experiments for problem class (wco, 30, 30). For the most difficult test problem in this class, the cardinality of solution set S to the problem \((BS(\lambda ))\) was 199,065,600. For greater weakly correlated problems that number may be even larger.

7 Conclusions and future works

A new approximate method of solving multiple-choice knapsack problems by replacing the budget constraint with the second objective function has been presented. Such a relaxation of the original problem allows to the smart scanning of the decision space by quick solving of the binary linear optimization problem (it is possible by the decomposition of this problem to independently solved easy subproblems). Let us note that our method can also be used for finding an upper bound for the multi-dimensional multiple-choice knapsack problem (MMCKP) via the relaxation obtained by summing up all the linear inequality constraints [1].

The method can be compared to greedy algorithm for multiple-choice knapsack problems which also finds, in general, an approximate solution and an upper bound.

Two preliminary computational experiments have been conducted to check how the proposed algorithm behaves for simple to solve (uncorrelated) instances and hard to solve (weakly correlated) instances. The results have been compared to results obtained by the exact state-of-the-art algorithm for multiple-choice knapsack problems [22]. For weakly correlated problems, the number of solution outcomes which have to be checked in order to derive the triangle of uncertainty (so also an approximate solution to the problem and its upper bound) grows fast with the size of the problem. Therefore, for weakly correlated problems we are able to solve smaller problem instances in reasonable time than for uncorrelated problem instances.

It is worth underlying that in the proposed method profits and costs of items as well as total cost can be real numbers. It could be of value when one wants to solve multiple-choice knapsack problems without changing real numbers into integers (as one has to do for dynamic programming methods).

Further work will cover investigations of how the algorithm behaves for weekly and strongly correlated instances as well as on the issue of finding a better solution by a smart “scanning” of the triangle of uncertainty.