Using 3D-printing in disaster response: The two-stage stochastic 3D-printing knapsack problem

In this paper, we will shed light on when to pack and use 3D-printers in disaster response operations. For that, we introduce a new type of problem, which we call the two-stage stochastic 3D-printing knapsack problem. We provide a two-stage stochastic programming formulation for this problem, for which both the first and the second stage are NP-hard integer linear programs. We reformulate this formulation to an equivalent integer linear program, which can be efficiently solved by standard solvers. Our numerical results illustrate that for most situations using a 3D-printer is beneficial. Only in extreme circumstances, where the quality of printed items is extremely low, the size of the 3D-printer is extremely large compared to the knapsack size, when there is no time to print the items, or when demand for items is low, packing no 3D-printers is the best option.

Finally, it is worth mentioning that our model formulation of the TSS-3DKP and associated (numerical) results may find future applications in other domains such as the military (e.g, a military mission on a remote location) and aerospace (e.g., a long-term mission to Mars).
The remainder of this paper is organized as follows. We start in Section 2 with a literature review.
In Section 3, we introduce our two-stage stochastic programming problem. In Section 4, we focus on solving our problem, by presenting and testing a deterministic equivalent. Then, in Section 5, we identify, via numerical experiments, under which circumstances it is beneficial to bring 3D-printers, and by how much, to a disaster area. We close with a conclusion in Section 6.

Literature review
In this section, we will identify how our TSS-3DKP contributes to the literature. We do so by providing an overview of the (OM/OR) literature on two-stage stochastic knapsack problems, disaster operations management, and 3D-printing, and for each of them, identify how our TSS-3DKP contributes to it.

Two-stage stochastic knapsack problems
A classical combinatorial optimization problem is the knapsack problem (Kolesar (1967)). In this problem, a decision maker has to fill a knapsack with items, each with an associated weight and reward. The aim of the decision maker is to find the best layout, i.e., a feasible combination of items, according to the size of the knapsack, that maximizes the sum of the rewards. Many variations of this classical problem have been studied. For some of these variations, the decision maker has to fill a knapsack based on incomplete information (e.g., the reward of items is uncertain) and has recovery options once complete information becomes available. The aim of the decision maker is then to maximize the expected reward. In literature, these variations are classified as two-stage stochastic knapsack problems. The first stage refers to the setting with partial information and the second stage refers to the setting with complete information and recovery options.
The literature on two-stage stochastic knapsack problems is relative young and consists of a few papers only. Kosuch and Lisser (2011) study a two-stage stochastic knapsack problem with normally distributed item weights and a recovery option that limits to either the addition or the removal of items. To restrict the probability that the item weights exceed the knapsack size (in the second stage) they include a chance constraint to the first-stage problem. A variant, with discretely distributed item weights, is studied by Kosuch (2014). Knapsack size uncertainty is studied by Akker et al. (2016).
They model this uncertainty by discrete scenarios and introduce a recovery option that consists of the removal of items. This problem is extended to multiple knapsacks by Tönissen et al. (2017). Finally, a quadratic version of the two-stage stochastic knapsack problem with item weight uncertainty has been studied by Lisser et al. (2010) and with both item weight and reward uncertainty by Song et al. (2018).
Our paper contributes to this new stream of literature, by studying a two-stage stochastic knapsack problem with uncertainty in (item) demand and a recovery option that consists of 'creating' new items out of another item (i.e., the printing material). To the best of our knowledge, this paper is the first that studies a two-stage stochastic knapsack problem with such type of uncertainty and recovery option.

Disaster operations management
Disaster operations represent the set of activities performed before, during and after a disaster in order to diminish its impact (Altay and Green (2006)). In general, it is hard to prepare for, and consequently to manage such type of activities. This is mainly due to the unpredictable nature of disasters.
In the OM/OR literature on disaster operations management, this uncertainty plays a predominant role (see, e.g., the extensive literature reviews of Galindo and Batta (2013) and Leiras et al. (2014)).
Two-stage stochastic programming is an appropriate method to deal with such uncertainties. Instead of using standard cost minimizing objectives, in disaster operations management, meeting expected demand is often preferred due to significant consequences with respect to human lives (Barbarosolu and Arda (2004) and Rawls and Turnquist (2010)). In Balcik and Beamon (2008) the fulfillment of demand is modelled by maximizing the expected satisfied demand, in Salmerón and Apte (2010) by minimizing the expected casualties, and in Noyan et al. (2016) by maximizing the expected accessibility. A common first-stage decisions is the in-advance storage of relief items (Davis et al. (2013);Lodree Jr et al. (2012)) or locating facilities (Elçi and Noyan (2018); Li et al. (2011)). A few authors use other first-stage decisions such as the retrofitting of roads (Peeta et al. (2010)), buildings (Zolfaghari and Peyghaleh (2015)) or bridges (Liu et al. (2009)). The most prevalent second-stage decisions are the transport of commodities in the aftermath of a disaster (Rezaei-Malek et al. (2016); Tofighi et al. (2016)) or an evacuation plan (Li et al. (2012(Li et al. ( , 2011). We refer to Grass and Fischer (2016) for an overview of two-stage stochastic programming problems for disaster operations management.
In this paper, we also use two-stage stochastic programming to deal with uncertainty (namely, demand uncertainty). In particular, we will use this method in a disaster response setting. To the best of our knowledge, we are the first who use two-stage stochastic programming to investigate whether bringing 3D-printers to a disaster area is useful or not. We want to emphasize that there exist some qualitative papers on 3D-printing for disaster response missions (see, e.g., Savonen et al. (2018) and Rodríguez-Espíndola and Beltagui (2018)). These studies focus on the necessary requirements and specifications 3D-printers should have for being successfully used in a disaster area.

3D-printing
Although the technique of 3D-printing, also known as additive manufacturing, has already been applied in practice for years, the development of quantitative models studying the impact of 3D-printing in OM/OR literature is rather limited. To the best of our knowledge, there exist a few published works in this domain only. Westerweel et al. (2018) investigate the impact of 3D-printing on component design. In particular, they characterise under which conditions a component should be produced with traditional technology and under which conditions a component should be produced via 3D-printers. Song and Zhang (2019) present a general framework to study the design of spare parts logistics in the presence of 3D-printing technology. In particular, they formulate a model that determines which parts to stock and which to print. Khajavi et al. (2014) and Liu et al. (2014) both model a multi-echelon spare parts supply chain and numerically investigate the effect of centralized versus decentralized 3D-printing capacity. Dong et al. (2016) evaluate the choice between traditional technology and 3Dprinting related to assortment planning for general inventories in a manufacturing setting. An overlap in all these papers is the presence of a 3D-printer with a, possibly unlimited, amount of printing material. However, in our problem, the presence of a 3D-printer and associated printing material is not guaranteed: it is an essential decision in our optimization problem. This indicates that we do study a new type of 3D-printing (OM/OR) problem and so contribute to this rather new stream of literature.

Two-stage stochastic 3D-printer knapsack problem
In this section, the two-stage stochastic 3D-printing knapsack problem (shortly TSS-3DKP) will be formulated. We will do so by first describing the two stages (i.e., the first and second stage) and thereafter presenting the mathematical formulation of our TSS-3DKP.

The first stage
In the first stage, a decision maker has to fill a multidimensional knapsack (e.g., a cargo airplane at a home location) with physical items, units of printing material and 3D-printers such that it does not exceed the weight capacity W and volume capacity V of the knapsack. Each physical item i, from the set of physical items N, has a weight w i and a volume v i . In addition, each unit of printing material has weight w b and volume v b and each 3D-printer has weight w p and volume v p . The first-stage decision of the decision maker is denoted by vector a = ((a i ) i∈N , a p , a b ) with a i the number of times item i ∈ N is added to the knapsack, a b the units of printing material included into the knapsack, and a p the number of 3D-printers added to the knapsack.

The second stage
In the second stage (e.g., a disaster area) the decision maker has to allocate the a b units of printing material to the a p 3D-printers. Before the decision maker does so, demand for items is revealed and the physically brought items that match (this) demand are allocated. Demand is modelled by a discrete set of scenarios S, where each scenario s ∈ S specifies the demand d s i for all items i ∈ N and occurs with probability q s ∈ [0, 1] such that ∑ s∈S q s = 1. We want to stress that, in literature on disaster operations management, discrete scenarios are often used to model uncertainty. This is due to the uniqueness of disasters, which makes the determination of probability distributions problematic (see, e.g., Grass and Fischer (2016)). For each scenario s ∈ S, we denote the number of physically brought items that match demand by a s i = min{a i , d s i } for all i ∈ N and consequently, denote remaining demand by d s i − a s i for all i ∈ N. Based on this remaining demand, the decision maker has to allocate the a b units of printing material to the a p 3D-printers. For this second-stage decision, the decision maker has to take into account the maximum amount of printing time T per 3D-printer, and the fact that each printable item i ∈ N p , with N p ⊆ N, requires m i units of printing material and time t i to print. Finally, given that P(x) = {i ∈ N + |i ≤ x} is defined as the set of 3D-printers for any x ∈ N 0 , the second-stage decision of the decision maker for each scenario s ∈ S is denoted by , with p s ij the number of times item i is printed on 3D-printer j in scenario s.
Meeting demand via a physically brought item i ∈ N or printed item i ∈ N p results in an item-specific reward, which may depend on its nature (i.e., whether it is printed or not). This reward may represent the (relative) importance of having such an item. The reward for a physically brought and matched item i ∈ N is r i and its printed reward is αr i with α ∈ [0, 1] for all i ∈ N p . This factor α resembles the lower quality of the printed items. The total reward for a given first-stage decision a and a second-stage decision p s for scenario s ∈ S is given by ∑ i∈N a s i r i + α ∑ i∈N p ∑ j∈P(a p ) p s ij r i . And, subsequently, the expected total reward, based on all possible demand scenarios, is given by Aim of the decision maker is to make a first-stage decision a and a second-stage decision p s for all s ∈ S that maximizes the expected total reward 1 .

Mathematical formulation of the TSS-3DKP
Now we give a mathematical formulation of our two-stage stochastic 3D-printing knapsack problem. where, Constraints (1) and (2) ensure that no more number of items, units of printing material and 3D-printers will be packed, according to the weight and volume restrictions of the knapsack. Constraint (3), which is a big-M formulation, guarantees that it is only allowed to pack printing material if at least one 3D-printer is taken. Constraint (4) ensures integrality of the decision variables. Constraints (5), (6), and (7) ensure that reward can only be gained for those physical items and printed items that meet demand. Constraint (8) guarantees that the amount of printing material used does not exceed the amount of printing material packed. Constraints (9) ensure that each 3D-printer can be used for at most T time units. Constraints (10) and (11) ensure integrality of the decision variables. Note that we model a s i (= min{a i , d s i }) as a decision variable in our second-stage problem which takes, due to our formulation, the minimum of the values a i and d s i for all i ∈ N and all s ∈ S. Also note that the number of constraints (9) and (11) depend on the first-stage decision a p . Hence, the number of constraints and variables of the second-stage problem depend on the decisions in the first-stage problem.
We want to emphasize that both the first-stage and the second-stage problem of our TSS-3DKP are NP-hard integer programming problems. Both problems are NP-hard because they are generalisations of the unbounded knapsack problem (Martello and Toth, 1990), which is a classical NP-hard combinatorial optimization problem. We will support these claims, by showing that special cases of our first and second-stage problems can be recognized as unbounded knapsack problems. For the first-stage, we consider the special case with no 3D-printers, no printing material, and exactly one scenario for which demand for each item is infinite. Furthermore, we set V = 0 and v i = 0 for all i ∈ N. For this situation, our first-stage problem can be recognized as a classical unbounded knapsack with size (i.e., weight capacity) W and items with weight w i and reward r i for all i ∈ N. For the second-stage, we consider the special case with no physical items, exactly one 3D-printer, infinite demand, and m i = 0 for all i ∈ N p . For this situation, our second-stage problem can be recognized as a classical unbounded knapsack with size T and items with weight t i and reward αr i for all i ∈ N p .
We will now illustrate our two-stage stochastic 3D-printing problem by means of a small example.
Example 1. Consider a knapsack with weight capacity W = 4 and volume capacity V = 4, that can be filled with two types of printable items (i.e., N with r 1 = 1 and r 2 = 2. The items require m 1 = m 2 = 2 units of printing material and each unit of printing material has weight w b = 1 and volume v b = 1. In addition, each 3D-printer has weight w p = 2 and volume v p = 2, and, in total, there are two scenarios (i.e., S = {s 1 , s 2 }), with q s 1 = 0.7 and q s 2 = 0.3. Demand is given by d Finally, the maximum amount of printing time per 3D-printer is given by T = 1, the printing time per item by t 1 = t 2 = 1, and the quality factor (per printed item) by α = 0.8.
For this specific situation, there exist three candidates solutions, namely: (i) taking one physical item of type 1, (ii) taking one physical item of type 2, or (iii) taking one 3D-printer with 2 units of printing material. For the first two candidate solutions, no 3D-printer is taken, and consequently, the expected total reward for the first strategy equals (0.7 · 1 =)0.7 and for the second strategy equals (0.3 · 2 =)0.6. For determining the expected reward for the third strategy, we first need to identify how the units of printing material should be used in the two demand scenarios. For the first demand scenario (i.e., s 1 ), it is optimal to print item 1, resulting in (0.7 · 0.8 · 1 =)0.56, and for the second demand scenario (i.e., s 2 ), it is optimal to print item 2, resulting in (0.3 · 0.8 · 2 =)0.48. Hence, the expected total reward under the third strategy equals (0.56 + 0.48 =)1.04, implying that bringing a 3D-printer and allocating the printing material according to demand is optimal.
To the best of our knowledge, there exist no standard (commercial) solvers that can directly solve two-stage stochastic programming problems. For that reason, we will transform our TSS-3DKP into another, but equivalent, formulation that is suitable for standard solvers (e.g., CPLEX).

Solving the TSS-3DKP
In this section we will present an equivalent formulation of our TSS-3DKP that can be solved by standard solvers. Moreover we will show, via some numerical experiments, that this equivalent formulation can be solved (with standard solvers) within reasonable computation time.

An equivalent formulation for solving the TSS-3DKP
It is well-known that a standard two-stage stochastic programming problem can be modelled as a large integer linear programming problem with variables and constraints for each of the scenarios. Such an integer linear programming formulation is called the deterministic equivalent. The idea is to transform our TSS-3DKP, which is also a two-stage stochastic programming problem, into its deterministic equivalent. However, the TSS-3DKP has the non-standard feature that the number of constraints and variables in the second-stage depends on the first-stage decisions, implying that the deterministic equivalent cannot be given directly. We overcome this dependency, by identifying an upper bound on the total number of 3D-printers that can be packed, and include printed-related constraints and variables of the second-stage problem into our deterministic equivalent as if the knapsack would be filled with this upper bound of 3D-printers. Although this approach may lead to an increase in the total number of constraints and variables, it allows for a reformulation of our TSS-3DKP 2 .
Before we present the deterministic equivalent formulation, we first explain how we determine an upper bound on the maximum number of packed 3D-printers. For each scenario s ∈ S, we determine how many 3D-printers are needed to print all demand d s , assuming that items are allocated one by one in order of their indices to the 3D-printers. Hence, we first try to allocate all demand of item 1 to the first 3D-printer, followed by item 2, 3, . . . , |N p |, and we go to the next 3D-printer if adding another item would exceed the printing T of the 3D-printer. Taking the maximum number of 3D-printers over all possible scenarios then gives us our first upper bound U. Sometimes, this upper bound exceeds the total knapsack weight or volume. In those cases, we select the maximum number of 3D-printers that fit the knapsack as upper bound. Formally, we define our upper bound as We will now illustrate our upper bound by means of a small example.
Example 2. Consider a situation with two types of printable items (i.e., N = N p = {1, 2, }), two scenarios (i.e., S = {s 1 , s 2 }) with associated demands d s 1 1 = 3, d s 1 2 = 1, d s 2 1 = 1, d 2 2 2 = 2, a knapsack with weight capacity W = 10 and volume capacity V = 12, a 3D-printer with w p = 5, v p = 3, T = 5, and printing times t 1 = 2 and t 2 = 3. We now allocate the demand of the items to the 3D-printers in order of their indices. Hence, for scenario s 1 , we allocate two items of type 1 to the first 3D-printer, and one item of type 1 and one item of type 2 to the second 3D-printer. For scenario s 2 , we allocate one item of type 1 and one item of type 2 to the first 3D-printer, one item of type 2 to the second 3D-printer, and one item of type 2 to the third 3D-printer. The maximum number of 3D-printers needed (over all scenarios) is thus U = 3. Moreover, ⌊ W w p ⌋ = 2 and ⌊ V v p ⌋ = 4, implying an upper bound on the total number of 3D-printers of Z = 2.
For the deterministic equivalent formulation, we also need to introduce some new notation. For the given upper bound Z, we define binary variables y j ∈ {0, 1} for all j ∈ P(Z), with y j = 1 if 3D-printer j is packed and 0 otherwise. Now, we are ready to present the deterministic equivalent of our TSS-3DKP.
The objective coincides with the original objective of the TSS-3DKP: it is the expected total reward obtained from meeting demand by physical and 3D-printed items over all possible scenarios. Constraints (12) and (13) limit the total item, 3D-printer and printing material weight and volume to the weight and volume restrictions of the knapsack. The big-M Constraint (14) guarantees that printing material is only taken when at least one 3D-printer is taken. This constraint guarantees indirectly that we can only print when we have a 3D-printer. Constraints (15), (16) and (17)

Computational experiments
In this section, we will discuss the outcomes of our computational experiments to provide insights in the solvability of our deterministic equivalent formulation. We do so by first explaining how we generate our instances and then continue by discussing our computational experiments.

Instance generation
For every instance, we first specify the following parameters: the number of items |N|, an upper limit to demand D, the number of scenario |S|, the (printed item) quality factor α, and the 3D-printer weight w p and volume v p . Thereafter, we will generate the items. Remember that every item has a weight w i , a volume v i , a reward r i , a required printing material m i , and printing time t i . We generate the weight w i and the reward r i according to the uncorrelated instance class of Pisinger (Pisinger, 2005 ]⌉ for all i ∈ N and the probability q s = 1 |S| . We continue by generating printing time T ∼ ⌊U[0.2, 1] · ∑ s∈S q s ∑ i∈N p t i d s i ⌉. Note that this printing time T is a fraction of the average total time to print all items. Finally, we generate the knapsack weight capacity W ∼ ⌊U[0.5, 1] · ∑ s∈S q s ∑ i∈N w i d s i ⌉, which can be seen as a fraction of the average total weight of all items, and volume capacity V ∼ ⌊U[0.5, 2] · W⌉, which depends on the knapsack weight capacity.
We will study various instance sets with varying number of items, upper limit demand and number of scenarios, but with the same α = 0.8 and w p = v p = 5000. We will refer to such an instance set by NxDySz with x the number of items, y the upper limit to the demand and z the number of scenarios.

Computational results
The experiments are programmed in Java with the CPLEX library version 12.8.0, and run on a laptop with an Intel Core i7-4710MQ Quad Core 2.5 GHz processor with 32 GB of RAM. We use CPLEX standard settings and the reported solution times include everything that is required to solve our instances, such as the time required for reading the instances, the time to determine upper bound Z, the time required for building the model, and the time to solve the model. The maximum computation time to solve a single instance is set equal to 3600 seconds.
We will test our ILP-3DKP(Z) on five different instance sets, each consisting of 100 instances. The first instance set, which we use as a base case, consists of 100 items, an upper limit of demand of 100, and 50 scenarios. Recall that we (can) refer to this instance set as N100D100S50. In addition, we will study instance set N200D100S50, N100D200S50, N100D100S100, and N200D200S100.
We will study each instance set on four performance criteria: the average number of cuts and nodes used by the branch-and-bound tree of CPLEX, the number of instances that cannot be solved within 3600 seconds, and the average computation time of those instances that can be solved within 3600 seconds. For the first two criteria (i.e., cuts and nodes) we want to stress that if an instance is not solved within 3600 seconds, a fail is registered, and the number of cuts and nodes used so far is reported. The performance criteria of the five instance sets can be found in Table 2.   Table 2 indicates that almost all instances (except for the two failed ones) can be solved within minutes.

Instance set cuts (#) nodes (#) fails (#) time (seconds)
In particular, we observe, based on individual results not reported here, that most of these instances do not require branching (i.e., generate no nodes) and are solved entirely by adding cuts. However, the two failed instances (one from N100D100S50 and one from N100D100S100) turn out to be hard to solve (i.e., they cannot be solved to optimality within 3600 seconds). These particular instances have a high number of generated nodes (namely 3017763 and 1158576) and consequently require extensive branching. Moreover, it turns out that, if we increase the maximum computation time to 86,400 seconds (i.e., 24 hours) these two instances cannot be solved to optimality either.
Since finding an optimal solution seems to be a problem for some instances, the next step is to investigate the effect of the stopping criteria on the branch-and-cut algorithm (in CPLEX). The standard stopping criteria of this algorithm is the relative gap of 0.01%. We will study the effect by solving a specific instance set for various relative gaps, namely 0.01%, 0.1%, 1.0%, and 10%. The specific instance set combines the five, previously introduced, instance sets. We present our results in Table 3.
The results from Table 3 indicate that for some instances, a lot of time is spent on improving the solution slightly, or on proving that the optimal solution has been found. This becomes most apparent  when increasing the gap from 0.01% to 0.1%. In that specific case, the number of nodes decreases from 11750 to 1, which illustrates that branching is not required anymore for most instances. Moreover, from Table 3, we can learn that increasing the relative gap from 0.1% to 10% has a rather limited effect on the average computation time (i.e., computation time reduces from 4 to 3 seconds, on average).

Relative gap cuts (#) nodes (#) fails (#) time (seconds)
We believe that for practical applications (e.g., a disaster response mission), it is important to obtain sufficiently good solutions within hours. Solving our TSS-3DKP with a relative gap of 0.1% will exactly do that. Consequently, we will apply this relative gap in the remainder of this paper.

To print or not to print?
In Section 4, we presented a deterministic equivalent of our two-stage stochastic 3D-printing knapsack problem. We have shown that, with this formulation, it is possible to solve our original problem with standard solvers in reasonable computation time. Consequently, this formulation can be used to identify whether bringing 3D-printers to a disaster area is useful, or not. As discussed in the introduction of this paper (i.e., in Section 1), this decision depends, amongst others, on the following five aspects: (i) the quality of printed items, (ii) the volume and weight of 3D-printers, (iii) the storage efficiency of printing material, (iv) the 3D-printing time, and (v) demand uncertainty. In this section, we will study the effect of these five aspects on the outcomes of our TSS-3DKP. For that, we will, for each aspect, construct a number of instance sets. These instance sets will be constructed such that they vary in the associated aspect only (e.g., a varying quality of the printed items α, or a varying weight w p and volume v p of the 3D-printer). Per instance set, we then answer the following two questions: 1. Should we bring 3D-printers, and if so, how many?
2. What is the added value of using 3D-printers?
For answering the first question, we will return, per instance set, the median, minimum, maximum, and average number of 3D-printers taken. For answering the second question, we will first determine, per instance, the percentage increase in total reward if bringing 3D-printers is allowed. We then answer our second question by taking the median, minimum, maximum, and average of this percentage over all instances of the instance set. Since we construct several instance sets per aspect, we will answer these questions several times per aspect. We now continue by discussing these outcomes per aspect.

The quality of printed items
As discussed in the introduction of this paper, the quality of printed items is still inferior to physical items. This could prevent a decision maker from packing 3D-printers. In this section, we will study the effect of this quality on our two questions. We model the quality of the printed items by solving instance set N100D100S50 for different values of α. In particular, we will solve this instance set for α ∈ {0.1, 0.2, . . . , 1.0}. The results are presented in Table 4.

3D-printers (#) reward (%)
α median min-max (average) median min-max ( Table 4: An overview of the median, minimum, maximum and average number of both the packed 3D-printers and the percentage increase in reward, for varying values of α. From Table 4 we can learn that an increase in α (i.e., a higher quality of printed items) coincides with an increase in (i) the number of packed 3D-printers and (ii) the percentage increase in total reward.
Next, we observe that for values of α larger or equal than 30%, it is beneficial to bring 3D-printers, implying that printing items, even with a fairly low quality, payoffs rapidly.

The effect of the weight and volume of 3D-printers
The weight and volume of a 3D-printer is still significant nowadays. This weight and volume can also be used for transporting physical items. In this section, we will study the effect of the 3D-printers weight and volume on our two questions. We will do so by introducing a factor k. This factor represents the number of times a 3D-printer fits (in terms of weight and volume) within the knapsack.

3D-printers (#) reward (%)
k median min-max (average) median min-max (average)  The results of Table 5 show that the number of packed 3D-printers and the percentage increase in total reward increases in k. We observe that even for fairly low values of k, it is already beneficial to pack a 3D-printer. The weight and volume of a 3D-printer should exceed 33% (k < 3) of the total knapsack weight and volume before packing physical items only (and thus no 3D-printer) is more beneficial.

The storage efficiency of printing material
As discussed in the introduction of this paper, the storage efficiency of physical items is inferior to the storage efficiency of printing material. In this section, we study the effect of the storage efficiency of printing material on our two questions. We do this by introducing factor l. This factor indicates the fraction of printing material needed in comparison to physical items, in terms of both weight as volume. In particular, we will study instance set N100D100S50 with l ∈ {0, 0.1, 0.2, ..., 1} and set The results are presented in Table 6.
The results of Table 6 show that the number of 3D-printers and the percentage increase in total reward decreases for an increasing l (i.e. if the material needed to print items takes up more space). Even when there is no benefit of the storage efficiency of the printing material (i.e., l = 1) a 3D-printer is still often packed. This illustrates that the uncertainty in demand can be enough to bring 3D-printers.

3D-printing time
Time is crucial during a disaster response mission. However, the time to print a single item may still require hours. This may results in a relative low number of printed items. This number will increase if the time to print a single item reduces (e.g., due to improvements in printing technology). In this section, we will investigate how a change in this printing time effects our two questions. In particular, we will model this by introducing a factor m ∈ {0, 0.1, 0.2, ..., 1.0, ∞}. This factor indicates the fraction of items that can be printed on one 3D-printer, on average. Given this setup, we will use maximum amount of printing time T = ⌊m · ∑ s∈S q s ∑ i∈N p t i d s i ⌉. We will present our results in Table 7.
From Table 7, we observe that, except for the case m = 0, in which no 3D-printers are taken, the number of packed 3D-printers decreases in m and converges for large m to exactly one 3D-printer.
Note that for m = ∞ all items can be printed on one 3D-printer and consequently there is no reason to pack more than one 3D-printer. From Table 7, we also observe that for 0.6 ≤ m ≤ 1 at most one 3D-printer is packed, although not all items can be printed on one 3D-printer. It turns out that in this interval, on average, more than half of the printing time of the demand is utilized on the first 3D-printer. Consequently, the second 3D-printer is, on average, not fully utilized, which makes it likely that this second 3D-printer is not being packed at all. Furthermore, we observe from Table 7 that the percentage increase in total reward increases until m = 0.8 and stabilizes afterwards. This indicates that for large m, some items are preferred being packed physically (e.g. to get a better reward), although these items could be printed without packing any additional 3D-printers.

The effect of demand uncertainty
One of main advantages of using 3D-printers is the possibility to deal with demand uncertainty.
Consequently, it is likely that the number of packed 3D-printers increases for an increasing degree of uncertainty. In this section, we will investigate the effect of this degree of uncertainty on our two questions. We will model the degree of demand uncertainty by solving our instance sets for different values of the upper limit of demand D. In particular, we will study instance set N100D100S50 with D ∈ {2 0 , 2 1 , 2 2 , . . . , 2 17 }. Recall that, in our instance generator, D identifies the domain of the uniform distributions that generate the demand for all items. Consequently, an increasing D will coincide with a higher degree of uncertainty. Moreover, recall that in our instance generator, the knapsack weight and volume capacity, and the printing time are based on the total average demand. In this section, we are only interested in the effect of changing D. For that reason, we fix the following parameters W = V = 100, 000 and T = 4000. We report our results in Table 8.
From Table 8, we observe that both the number of 3D-printers as the percentage increase in reward increase up to a certain degree of uncertainty (i.e., D = 2048 and D = 256, respectively), and decrease afterwards. The increasing part confirms our intuition that more uncertainty coincides with packing more 3D-printers. The decreasing parts, however, is counterintuitive. This outcome, which is a result of our way to model uncertainty, can be explained as follows. For sufficiently large degrees of uncertainty, demand of items will exceed the knapsack weight and volume capacity for a majority of the scenarios. As a consequence, many of these scenarios can be recognized as if there was no restriction on demand for these items. This means that we can recognize our knapsack problem as a deterministic one.
Consequently, there is no reason to pack 3D-printers to adapt for demand uncertainty. The only remaining reason to pack 3D-printers is the better packing efficiency of printing material. Hence, the number of 3D-printers packed will reduce significantly and this is exactly what we see in Table 8.

Conclusion
In this paper, we shed light on when to bring 3D-printers or not, which amount of printing material to pack and which items to bring physically, to a disaster area. For that, we introduce a new type of problem, which we call the two-stage stochastic 3D-printing knapsack problem. We present a deterministic equivalent of our problem, which allows us to solve the problem with standard solver techniques. Our numerical results illustrates how the quality of printed items, the weight and volume of 3D-printers, the storage efficiency of printing material, the printing time, and the demand uncertainty effect the outcomes of our model. It turns out that for most situations packing a 3D-printer is beneficial. Only in extreme circumstances, where the quality of printed items is extremely low, the size of the 3D-printer is extremely large compared to the knapsack size, when there is no time to print the items, or when demand for items is low, taking no 3D-printers is the best option.
For future research, we identify four interesting research directions. The first one relates to the modelling assumptions of the 3D-printers. In our paper, we consider a sort of "ideal" 3D-printer: it can print all items with the same type of printing material and it can be set-up, and used easily in a disaster response mission. It would be of interest to see how robust our model is against these type of assumptions (e.g., what happens if we have different types of 3D-printers that can print specific types of items only?). As a second research direction, one could extend our TSS-3DKP by including dependencies between the items. With this modelling feature, it is possible to include composed items that consist of several printed or physical subitems. As a third research direction, one could extend our TSS-3DKP by introducing decision dependent uncertainty (cf. Goel and Grossmann (2006)). In such a setting, one could invest time to get more accurate demand information. Clearly, this creates a trade-off between reducing demand uncertainty and arriving late(r) at a disaster area. As a final research direction, it is of interest to see how our TSS-3DKP could be applied to other application domains (e.g., a military or aerospace setting), which each may have their own, unique, characteristics.
One of the strengths of our model is that sufficiently large instances can be solved by commercial solvers within reasonable computation time. However, this may no longer be the case for (the aforementioned) future research directions. Consequently, the need for (other) efficient solution methods becomes apparent. A candidate for this is logic-based Benders decomposition (Hooker and Ottosson, 2003), a generalization of Benders decomposition (Benders, 1962) that allows the second-stage problem to be any optimization problem rather than precisely a linear or nonlinear programming problem.