1 Introduction

The well-known minimum cost network flow problem (MCNFP) seeks the minimum cost assignment of flow to arcs, such that a fixed amount of supply is delivered from a set of supply nodes to a set of sink nodes. Many applications require the solution of a series of MCNFPs in which only the attributes (e.g. capacity, cost, supply) along a subset of arcs or nodes of the network change from one problem instance to the next. This work, for example, was motivated by the need to obtain updated solutions for an on-line problem, where new information involving the network attributes is obtained in real-time and updated solutions to the MCNFP must be determined. One can use an existing solution technique to solve each new MCNFP as it arises. However, significant savings in computation time can often be achieved through the use of a reoptimization technique that begins from the prior optimal solution to determine the updated optimal solution for the given network attribute changes. In this paper, a dual ascent reoptimization technique is proposed for updating optimal flows for the MCNFP given any number of heterogeneous changes to the network attributes (i.e. supply at the nodes, arc costs and arc capacities) and the optimal solutions to the prior primal and dual problems.

The primary motivation for this work is the real-time provision of evacuation instructions to people seeking quick egress from a large sensor-equipped building that has come under attack by natural or terrorist forces. Specifically, Miller-Hooks and Krauthammer [20] proposed an expert system that provides electronic integration of real-time bomb damage assessment (BDA) or target vulnerability assessment (TVA) tools with on-line evacuation, rescue and recovery-related optimization techniques. Conditions surrounding an event warranting evacuation often involve hazards that strengthen and spread over time [17]. The BDA/TVA tools rely on sensor and other technologies to provide real-time analyses of the current and predicted future operational capacity of a building and its circulation systems (i.e. means of egress). Thus, real-time updates to the circulation system network attributes can be obtained and this information can be employed by the reoptimization technique developed herein to provide dynamically updated optimal instructions for the evacuees and rescue workers. As evacuees move through the building, capacity of the links is recaptured, permitting additional evacuees to use the links as they are cleared. This work, by focusing on reoptimization for the static MCNFP, provides a necessary first step in addressing its time-varying and dynamic extensions (given in [9, 21]).

Several works have developed reoptimization techniques for use in updating minimum cost network flows. These techniques can be categorized into two types of methods: simplex-based and combinatorial. Ali et al. [3] proposed two dual reoptimization techniques based on network simplex. The first addresses supply and arc capacity changes and the second addresses cost changes. They proposed the use of cut-sets for the efficient execution of entering and leaving variable selections and tested changes in either supply, arc cost or arc capacity along a few arcs simultaneously. In the same experiments, they compared their technique to a primal technique that exploits the spanning tree properties of network simplex bases developed earlier by Ali et al. [2] and showed that the dual approach is significantly faster. Shetty [25] proposed a specialized primal partitioning reoptimization approach for updating integer programming solutions with side constraints. Meyr [18] developed a dual reoptimization algorithm for solving linear programming subproblems of a simultaneous lotsizing and scheduling problem. These techniques all have nonpolynomial worst-case computational complexity.

Extensive computational experiments of reoptimization methods for the MCNFP were conducted in [4, 13]. Experiments in [4] sought to compare the performance of reoptimization implementations of a primal simplex method, dual simplex method, and the out-of-kilter method under changes in either arc costs, arc capacities, or supply at the nodes. Simultaneous heterogeneous changes across these categories were not considered. They describe steps required to create the reoptimization versions of the simplex-based techniques and explain that only trivial changes are required for the out-of-kilter method extension. More than a decade later, Frangioni and Manca sought to compare reoptimization versions of more recent algorithms for the MCNFP, including, among others, primal-dual algorithms of Bertsekas and Tseng [7] and Goldberg [14], as well as CPLEX’s NETOPT. Only changes in cost were considered.

A few works allude to or briefly mention possible reoptimization extensions, but do not provide detailed algorithms, proofs, or results of numerical experiments. Ahuja et al. [1] describe a combinatorial method for sensitivity analysis that reduces the updated MCNFP to a set of shortest path problems in residual graphs. It may be possible to extend this concept for use in reoptimization. Preliminary comments on the use of combinatorial methods, as opposed to simplex-based methods, are given by Singh [26]. These techniques or potential extensions would, at best, be pseudo-polynomial in worst-case computational complexity. Similarly, Bertsekas [5, 6] suggested that dual ascent methods and auction algorithms may be amenable for use in reoptimization, but did not provide details. He briefly discussed that one can modify arc flows to meet optimality conditions for problem instances involving a small number of arc capacity changes or supply changes at a small number of the nodes and then apply a dual ascent technique [6]. A related technique is proposed herein that also simultaneously considers changes to arc costs.

The shortest path problem can be viewed as a special case of the MCNFP. Numerous works have presented reoptimization techniques for use in updating shortest path trees in deterministic and static networks. Many of these works are reviewed in Pallottino and Scutella [24] and Miller-Hooks and Yang [22]. Miller-Hooks and Yang proposed pseudo-polynomial reoptimization algorithms for updating least time paths in time-varying networks given multiple heterogeneous updates to arc costs. Additionally, Desrochers and Soumis [10] presented a primal-dual reoptimization method that runs in pseudo-polynomial time for the shortest path problem with time windows. These works consider only updates in arc costs or travel times. These techniques cannot be readily extended to address capacity updates.

In the next section, the MCNFP formulation is reviewed, notation is defined and the reoptimization problem is stated in terms of the proposed notation. In Section 3, a polynomial two-step dual ascent reoptimization technique for the MCNFP is proposed. In the first step of the algorithm, arc and node attribute updates are transferred to flow and node imbalance changes. The transformed problem is solved by a dual ascent technique in the second step. Proof of correctness and complexity are provided in Section 4. The contributions of this work are, thus, the steps necessary for developing a reoptimization version of a well-known technique for the MCNFP. These steps have applicability in similar conversion of related dual ascent methodologies and provide insight into how to design reoptimization techniques for the MCNFP given multiple, simultaneous and heterogeneous changes to arc costs and capacities. Results of numerical experiments conducted to assess the benefits of employing reoptimization over starting from scratch are discussed in Section 5. These results provide an understanding as to when such reoptimization methods may be most useful and when they may fail. This is followed by conclusions and extensions in Section 6.

2 Problem Definition and Notation

Let \(G=({{{\emph{{\texttt N}}}}, {{\emph{{\texttt A}}}}})\) be a digraph, where \({\emph{{\texttt N}}}=\{1,{\ldots},n\}\) is the set of nodes, \(\vert {\emph{{\texttt N}}}\vert =n\), and \({\emph{{\texttt A}}}\) is the set of arcs connecting the nodes, \(\vert {\emph{{\texttt A}}}\vert =m\). Additionally, let

\({\emph{{\texttt C}}}=\left\{ {\left. {c_{ij} } \right|\left( {i,j}\, \right)\in {\emph{{\texttt A}}}} \right\}\) :

the set of integer-valued, positive costs for traversing each arc;

\({\emph{{\texttt U}}}=\left\{ {\left. {u_{ij} } \right|\left( {i,j}\, \right)\in {\emph{{\texttt A}}}} \right\}\) :

the set of integer-valued, positive arc capacities;

\(\texttt{B}=\left\{ {b_i } \right\}_{i\in \textsf{N}}\) :

integer-valued supply (or demand) at node i, ∀ i ∈ N; and

\(X=\left\{ {\left. {x_{ij} } \right|\left( {i,j}\, \right)\in {\emph{{\texttt A}}}} \right\}\) :

set of arc flow decision variables.

The MCNFP is commonly formulated as follows.

$$ \label{eq1} \left( P \,\right)\;{\rm Min}\sum\limits_{\left( {i,j} \right)\in A} {c_{ij} x_{ij} } $$
(1)

subject to

$$ \label{eq2} \sum\limits_{{\{j\vert (i,j\,)}\in \textsf{A}\}} {x_{ij} } - \sum\limits_{{\{j\vert (j,i)}\in \textsf{A}\}} {x_{ji} } =b_i { , }\,\,\forall i\in N $$
(2)
$$ \label{eq3} 0\le x_{ij} \le u_{ij} { ,}\,\,\forall \left( {i, j} \,\right)\in {\emph{{\texttt A}}} $$
(3)

The MCNFP seeks to minimize the total cost for shipping flow through the network (objective (1)) such that mass balance (constraints (2)) and capacity limitation (constraints (3)) constraints are met. The dual (D) of (P) is provided next.

Dual variables, π i ,∀i\(\in {\emph{{\texttt N}}}\), and α ij ,\(\forall (i,j\,) \in {\emph{{\texttt A}}},\) are associated with each conservation of flow and capacity limitation constraint in (P), respectively.

$$ \label{eq4} \left( D \right)\;\max \sum\limits_{i\in \textsf{N}} {b_i \cdot \pi _i -\sum\limits_{(i,j\,)\in A} {u_{ij} \cdot \alpha _{ij} } } $$
(4)

subject to

$$ \label{eq5} \pi _i -\pi _j -\alpha _{ij} \le c_{ij} ,\forall \left( {i,j} \,\right)\in {\emph{{\texttt A}}} $$
(5)
$$ \label{eq6} \alpha _{ij} \ge 0,\forall \left( {i,j} \,\right)\in {\emph{{\texttt A}}} $$
(6)
$$ \label{eq7} \pi _j \ {\rm unrestricted,}\;\forall j\in {\emph{{\texttt N}}} $$
(7)

With respect to dual variables, π, of the flow conservation constraints of (D) (also referred to as the node potentials), reduced costs can be defined as in Eq. 8.

$$ \label{eq8} c_{ij}^\pi =c_{ij} -\pi _i +\pi _j ,\forall \left( {i,j} \,\right)\in {\emph{{\texttt A}}}. $$
(8)

It has been shown that the dual can be rewritten as an unconstrained math program in terms of reduced cost [1]:

$$ \left( {D^{\prime}} \right)\max \sum\limits_{i\in \textsf{N}} {b_i \cdot \pi _i -\sum\limits_{(i,j\,)\in A} {\max \big\{0,-c_{ij}^\pi \big\}\cdot u_{ij} } } . $$

Let \({\emph{{\texttt B}}}^{\prime}=\{ {b_{_i }^{\prime} } \}_{i\in N} \), \({\emph{{\texttt C}}}^{\prime}=\{ {c_{_{ij} }^{\prime} } \}_{( {i,j} )\in A} \) and \({\emph{{\texttt U}}}^{\prime}=\{ {u_{_{ij} }^{\prime} } \}_{\left( {i,j} \right)\in A} \), where \(b_i^{\prime} \) denotes the updated value of supply at node \(i\in {\emph{{\texttt N}}}\), \(c_{ij}^{\prime} \) denotes the updated value of the arc cost for arc \((i,j\,)\in {\emph{{\texttt A}}}\), and \(u_{ij}^{\prime} \) denotes the updated arc capacity for arc \((i,j\,) \in {\emph{{\texttt A}}}\). The reoptimization problem is defined herein as the problem of determining the updated optimal solution given the prior optimal solution X * for the primal problem, \(\pi =\left\{ {\pi _i } \right\}_{i\in N} \) or the dual problem, and knowledge of the arc and node attributes, \(\texttt{B}\), \(\texttt{C}\) and \(\texttt{U}\) and their updated values \({\emph{{\texttt B}}} ^{\prime} \), \({\emph{{\texttt C}}} ^{\prime} \) and\( {\emph{{\texttt U}}} ^{\prime} \).

3 The Dual Ascent Reoptimization Algorithm

The proposed two-step Dual Ascent Reoptimization technique for updating optimal flows for the MCNFP given any number of simultaneous, heterogeneous changes to the network attributes and the optimal solutions to the prior primal and dual problems is presented. Given the network attribute changes that create the new problem instance, the optimal solution to the prior problem instance may not be primal feasible and it is likely that conditions for optimality will not hold for the new problem instance. As the feasible region of the dual is unrestricted (formulation (D’)), dual feasibility is not in question. The proposed Dual Ascent Reoptimization technique begins by transferring supply, arc cost and arc capacity changes to flow changes and node imbalances (Step 1). When node imbalances exist, primal feasibility (i.e. mass balance constraints) is violated. Primal feasibility in all constraints, but mass balance constraints, are restored (resulting in a valid pseudoflow, i.e. a flow vector X that satisfies capacity and nonnegativity constraints of (P)) and conditions for optimality are met. Primal feasibility is achieved by a dual ascent algorithm for the MCNFP that pushes flow through the network until no node imbalances remain (Step 2). This transformation procedure and subsequent application of a dual ascent technique forming the Dual Ascent Reoptimization algorithm are described in detail next.

3.1 Algorithm Dual Ascent Reoptimization (Given X *, π, \(\texttt{B}\), \(\texttt{C}\), \(\texttt{U}\), \({\emph{{\texttt B}}}^{\prime} \), \({\emph{{\texttt C}}}^{\prime} \), \({\emph{{\texttt U}}} ^{\prime}\))

  1. Step 1.

    Transformation

    {transfers supply, arc cost, and capacity changes to changes in flow and node imbalances}

    1. (1)

      \(x_{ij}^{\prime} =x_{ij}^\ast \), ∀ (\(i,j\,)\in \texttt{A}\).

    2. (2)

      Capacity changes

      1. (a)

        \(u_{ij}^{\prime} >u_{ij} \):

        if x ij  = u ij , then \(x_{ij}^{\prime} =u_{ij}^{\prime} \).

      2. (b)

        \(u_{ij}^{\prime} <u_{ij} \):

        if \(u_{ij}^{\prime} <x_{ij} \), then \(x_{ij}^{\prime} =u_{ij}^{\prime} \).

    3. (3)

      Cost changes

      1. (a)

        \(c_{ij}^{\prime} >c_{ij} \):

        if \(x_{ij}^{\prime} =u_{ij}^{\prime} \) and \(c_{ij}^\pi >0\), then \(x_{ij}^{\prime} =0\)

        if \(0<x_{ij}^{\prime} <u_{ij}^{\prime} \), then \(x_{ij}^{\prime} =0\)

      2. (b)

        \(c_{ij}^{\prime} <c_{ij} \):

        if \(x_{ij}^{\prime} =0\) and \(c_{ij}^\pi <0\), then \(x_{ij}^{\prime} =u_{ij}^{\prime} \)

        if \(0<x_{ij}^{\prime} <u_{ij}^{\prime} \), then \(x_{ij}^{\prime} =u_{ij}^{\prime} \)

    4. (4)

      Update g i for all \(i\in \texttt{N}\):

      $$ g_{_i } =b_{i }^{\prime} +\sum\limits_{\{j\vert (j,i)\in \textsf{A}\}} {x_{{ji} }^{\prime} -\sum\limits_{\{j\vert (i,j\,)\in \textsf{A}\}} {x_{{ij} }^{\prime} } } $$
  2. Step 2.

    Dual Ascent Technique Application

Apply a dual ascent technique to solve the resulting MCNFP from Step 1 beginning from the pseudoflow-price vector pair (X,π) and resulting node imbalances \(\left\{ {g_i } \right\}_{i\in \textsf{N}} \).

The algorithm terminates with the optimal flow vector, X *, and updated dual prices, π, for the updated problem instance. Note that Step 1 can be implemented more efficiently than described by combining the conditional statements.

Two implementations of the Dual Ascent Reoptimization algorithm are considered. These implementations employ either the Successive Shortest Path (SSP) algorithm (due to [8, 15, 16] or the Capacity Scaling (CS) algorithm (originally proposed by Edmonds and Karp [11]). The SSP algorithm relies on a residual network G(X) described in Ford and Fulkerson [12] and incrementally loads flow on the residual network by pushing the flow along the shortest path from source to sink. The capacity associated with each arc in G(X) is the remaining (or residual) capacity for a given flow. The algorithm begins with a valid pseudoflow that meets optimality conditions and strives for primal feasibility in terms of the mass balance constraints. The residual network employs backward arcs to permit the return of capacity to an arc, corresponding to reversing decisions from previous iterations.

The CS algorithm is a variant of the SSP algorithm. It ensures that each shortest path augmentation carries a sufficiently large amount of flow to guarantee a reasonable level of worst-case performance. Initially, parameter Δ is set to \(2^{\left\lfloor {\log Q} \right\rfloor }\), where Q is an upper bound on the largest supply at any node or the largest arc capacity. Each augmentation carries exactly Δ units of flow. When no remaining node imbalance is at least Δ or at most − Δ, Δ is reduced by a factor of 2 and the process is repeated. A Δ-residual network G(X, Δ) is defined as a subgraph of G(X) and consists of only those arcs with residual capacity of at least Δ. Every arc in G(X,Δ) satisfies the reduced cost optimality conditions; however, some arcs in G(X) (i.e. those not in G(X,Δ)) might violate reduced cost optimality conditions.

Comprehensive reviews of these and other techniques for the MCNFP can be found in [1, 6], among other texts.

4 Proof of Correctness and Complexity

Step 1 terminates with pseudoflow (X ,π)-pair that satisfies complementary slackness conditions (CSCs) for every arc (\(i,j\,)\in {\emph{{\texttt A}}}\):

$$ \label{eq9} {\rm If}\;c_{ij}^\pi >0,\;{\rm then}\;x_{ij}^{\prime} =0; $$
(9)
$$ \label{eq10} {\rm if}\;0<x_{ij}^{\prime} <u_{ij} ,\;{\rm then}\;c_{ij}^\pi =0; $$
(10)
$$ \label{eq11} {\rm or}\;{\rm if}\;c_{ij}^\pi <0,\;{\rm then}\;x_{ij}^{\prime} =u_{ij}. $$
(11)

Proof of the following lemma, Lemma 1, establishes that Step 1 of the proposed algorithm terminates with an integer pseudoflow \(=\{ { {x_{ij}^{\prime} }|( {i,j}\, )\in {\emph{{\texttt A}}}} \}\) that, together with π from the prior problem instance, satisfies CSCs (911) for every arc (\(i,j\,)\in {\emph{{\texttt A}}}\), and thus, provides a viable starting point for a dual ascent technique as employed in Step 2. The dual ascent technique seeks to restore primal feasibility, while ensuring that CSCs hold. The resulting solution is optimal, i.e. it satisfies complementary slackness optimality conditions (as given in [1]).

Before proceeding to Lemma 1, the implications of Step 1 of the Dual Ascent Reoptimization algorithm for heterogeneous arc attribute changes are given.

  1. Case 1.

    \(u_{ij}^{\prime} >u_{ij} \) and \(c_{ij}^{\prime} >c_{ij} \):

    If (x ij  = u ij and \(c_{ij}^\pi >0)\) or (\(x_{ij} \ne u_{ij} )\), then \(x_{ij}^{\prime} =0\).

    Alternatively, if not (x ij  = u ij and \(c_{ij}^\pi \le 0)\), then \(x_{ij}^{\prime} =0\).

  2. Case 2.

    \(u_{ij}^{\prime} >u_{ij} \) and \(c_{ij}^{\prime} <c_{ij} \):

    If (x ij  = u ij ) or (x ij  = 0 and \(c_{ij}^\pi <0)\) or (0 < x ij  < u ij ), then \(x_{ij}^{\prime} =u_{ij}^{\prime} \).

    Alternatively, if not (x ij  = 0 and \(c_{ij}^\pi \ge 0)\), then \(x_{ij}^{\prime} =u_{ij}^{\prime} \).

  3. Case 3.

    \(u_{ij}^{\prime} <u_{ij} \) and \(c_{ij}^{\prime} >c_{ij} \):

    If ((x ij  = u ij or \(x_{ij} =u_{_{ij} }^{\prime} )\) and \(c_{ij}^\pi >0)\) or (\(0<x_{ij} <u_{_{ij} }^{\prime} )\), then \(x_{ij}^{\prime} =0\).

    Else if (x ij  = u ij ) or (\(u_{_{ij} }^{\prime} <x_{ij} <u_{ij} )\), then \(x_{ij}^{\prime} =u_{ij}^{\prime} \).

    Note: Do nothing only if (\(x_{ij} =u_{_{ij} }^{\prime} \) and \(c_{ij}^\pi \le 0)\) are simultaneously true.

  4. Case 4.

    \(u_{ij}^{\prime} <u_{ij} \) and \(c_{ij}^{\prime} <c_{ij} \):

    If (\(x_{ij} \ne 0)\) or (x ij  = 0 and \(c_{ij}^\pi <0)\), then \(x_{ij}^{\prime} =u_{ij}^{\prime} \).

    Alternatively, if not (x ij  = 0 and \(c_{ij}^\pi \ge 0)\), \(x_{ij}^{\prime} =u_{ij}^{\prime} \).

Lemma 1

Step 1 of the proposed algorithm results in a pseudoflow X that, together with dual variables, π, from the prior problem instance, satisfy CSCs for the updated problem instance.

Proof

The algorithm begins by setting the current primal solution, X , to the optimal flow vector X * for the original problem instance. Thus, for the original problem instance, X is primal feasible and, with node potentials π, CSCs are met. Given an updated problem instance for which arc capacities and/or costs are updated for one or more arcs, it is possible that X may no longer be primal feasible, as capacity constraints may no longer be met, and CSCs may no longer hold.

For each arc, one can consider how the steps of Step 1 restore primal feasibility (although, mass balance constraints may be violated as a result of node imbalances) and ensure that CSCs are met under each of the potential scenarios involving arc attribute updates. The possible scenarios are: (1) \(u_{ij}^{\prime} >u_{ij} \) with no change in c ij ; (2) \(u_{ij}^{\prime} <u_{ij} \) with no change in c ij ; (3) \(c_{ij}^{\prime} >c_{ij} \) with no change in u ij ; (4) \(c_{ij}^{\prime} <c_{ij} \) with no change in u ij ; (5) \(u_{ij}^{\prime} >u_{ij} \) and \(c_{ij}^{\prime} >c_{ij} \) (case 1); (6) \(u_{ij}^{\prime} >u_{ij} \) and \(c_{ij}^{\prime} <c_{ij} \) (case 2); (7) \(u_{ij}^{\prime} <u_{ij} \) and \(c_{ij}^{\prime} >c_{ij} \) (case 3); and (8) \(u_{ij}^{\prime} <u_{ij} \) and \(c_{ij}^{\prime} <c_{ij} \) (case 4).

Scenarios (1) and (2)

A change in arc capacity will not affect the value of any reduced cost, \(c_{ij}^\pi \). Thus, for scenarios (1) and (2), we need only take action to ensure that CSCs (9), (10) and (11) will hold for these reduced costs. If the capacity along an arc (i,j ) has increased (i.e. \(u_{ij}^{\prime} >u_{ij} )\) and x ij  = u ij , then by setting \(x_{ij}^{\prime} =u_{ij}^{\prime} \), feasibility is restored and CSCs are met, because they were met for the original problem (i.e. if \(c_{ij}^\pi <0\), the arc flow will be at its upper bound as required by CSC (9)). Step 1.2a ensures that this is the case. If, on the other hand, the capacity along an arc (i,j ) has decreased (i.e. \(u_{ij}^{\prime} <u_{ij})\), if x ij  = u ij , then \(c_{ij}^\pi \le 0\) and by setting \(x_{ij}^{\prime} =u_{ij}^{\prime} \), CSCs will be met, since they were met previously. If \(u_{ij}^{\prime} <x_{ij} <u_{ij} \), then \(c_{ij}^\pi =0\) since CSCs held for the original problem. By setting \(x_{ij}^{\prime} =u_{ij}^{\prime} \) in Step 1.2b, feasibility in terms of primal capacity constraints is restored and CSCs will hold. If 0 < x ij  < u ij and \(x_{ij} <u_{ij}^{\prime} \), there is no need to take any action. CSC (10) held for the original problem and will hold for the updated problem.

Scenarios (3) and (4)

A change in \(c_{ij}^{} \) may lead to a change in \(c_{ij}^{\pi} \). If an arc cost increases (i.e. \(c_{ij}^{\prime} >c_{ij} )\), then the associated reduced cost will increase, i.e. \(c_{ij}^{\pi ^{\prime}} >c_{ij}^\pi\). If \(c_{ij}^{\pi} >0\) then \(c_{ij}^{\pi ^{\prime}} >0\), and there is no change: \(x_{ij}^{\prime} =x_{ij} =0\) (CSC (9) continues to hold). If, however, \(c_{ij}^\pi <0\) (implying that x ij  = u ij ), it is possible that \(c_{ij}^{\pi ^{\prime}} >0\), and change to \(x_{ij}^{\prime} \) is required, i.e. \(x_{ij}^{\prime} =0\), to ensure that CSC (9) holds. But, if it remains that \(c_{ij}^{\pi ^{\prime}} <0\), there should be no change in \(x_{ij}^{} \), i.e. \(x_{ij}^{\prime} =x_{ij} =u_{ij} \) (CSC (11) continues to hold). Similarly, if 0 < x ij  < u ij , then \(c_{ij}^\pi =0\) and \(c_{ij}^{\pi ^{\prime}} >0\). Thus, \(x_{ij}^{\prime} \) must be set to 0 to ensure that CSC (9) is met. If an arc cost decreases (i.e. \(c_{ij}^{\prime} <c_{ij})\), then the reduced cost will decrease, i.e. \(c_{ij}^{\pi ^{\prime}} <c_{ij}^\pi\). If \(c_{ij}^\pi <0\), then \(c_{ij}^{\pi ^{\prime}} <0\), and no update in arc flow is required, i.e. \(x_{ij}^{\prime} =x_{ij} =u_{ij}\) (CSC (11) continues to hold). If, however, 0 < x ij  < u ij , then \(c_{ij}^\pi =0\) and \(c_{ij}^{\pi ^{\prime}} <0\); thus, it is necessary to set \(x_{ij}^{\prime} =u_{ij} \). If \(c_{ij}^\pi >0\), then x ij  = 0 (since CSC (9) holds for the original problem). A decrease in c ij may lead to \(c_{ij}^{\pi ^{\prime}} <0\) and an update in arc flow, i.e. \(x_{ij}^{\prime} =u_{ij}\), will be required to ensure that CSC (11) is met. Step 1.3b ensures that these conditions hold.

Scenario (5) ( \({u_{ij}^{\prime} >u_{ij}}\) and \({c_{ij}^{\prime} >c_{ij} }\) )

When both capacity and cost increase, the reduced cost of (i,j ) increases. By setting \(x_{ij}^{\prime} =0\) in all instances except where CSC (11) holds (through the steps of the algorithm as described in Case 1), CSC (9) will hold and all CSCs will be met.

Scenario (6) ( \({u_{ij}^{\prime} >u_{ij}} \) and \({c_{ij}^{\prime} <c_{ij} } \) )

When capacity increases and cost decreases, the reduced cost of (i,j ) decreases. By setting \(x_{ij}^{\prime} =u_{ij}^{\prime} \) in all instances except where CSC (9) holds (through the steps of the algorithm as described in Case 2), CSC (11) will hold and all CSCs will be met.

Scenario (7) ( \({u_{ij}^{\prime} <u_{ij}} \) and \({c_{ij}^{\prime} >c_{ij} }\) )

When capacity decreases and cost increases, the reduced cost of (i,j ) increases. If \(c_{ij}^\pi >0\), then \(c_{ij}^{\pi ^{\prime}} >0\) and no change will be required, since x ij  = 0, because CSC (9) held for the original problem. If \(c_{ij}^\pi \le 0 \) but \(c_{ij}^{\pi ^{\prime}} >0\), then by setting \(x_{ij}^{\prime} =0\) as in Step 1.3a, CSCs are restored. If x ij  = u ij , then x ij is set to \(u_{{ij} }^{\prime} \) to restore primal feasibility in terms of capacity constraints (Step 1.2b). If \(c_{ij}^{\pi} >0\), but \(x_{ij}^{\prime} =u_{ij}^{\prime} \) (which may result from restoring primal feasibility in terms of capacity constraints), then \(x_{ij}^{\prime} \) is set to zero (in Step 1.3a) and CSC (9) will hold. Likewise, if \(0<x_{ij} <u_{_{ij} }^{\prime} \), then \(c_{ij}^\pi =0\) and \(c_{ij}^{\pi ^{\prime}} >0\). \(x_{ij}^{\prime} \) is set to zero to restore CSC (9) in Step 1.3a.

Scenario (8) ( \({u_{ij}^{\prime} <u_{ij}} \) and \({c_{ij}^{\prime} <c_{ij}}\) )

When both capacity and cost decrease, the reduced cost of (i,j ) decreases. By setting \(x_{ij}^{\prime} =u_{ij}^{\prime} \) in all instances except where CSC (9) holds (through the steps of the algorithm as described in Case 2), CSC (11) will hold and all CSCs will be met.

A supply change will result in a pair of node surpluses and deficits, i.e. node imbalances, where the sum of node surpluses will equal the sum of node deficits. All imbalances in mass balance constraints are maintained as node imbalances. Thus, upon completion of Step 1, flow X is a valid pseudoflow, satisfying primal capacity and nonnegativity constraints and meeting CSCs.□

The algorithm enters Step 2 with pseudoflow X , optimal dual variables π for the prior problem instance, and node imbalances. As long as the arc capacities are integer-valued, which is required, integrality is maintained throughout.

Proposition 1

The proposed algorithm terminates with the optimal flow X * for the updated MCNFP given multiple heterogeneous changes to the supply at nodes, arc costs and capacities and the prior optimal solution of the MCNFP.

Discussion

By Lemma 1, Step 1 of the proposed algorithm terminates with a valid integer-valued pseudoflow, X , and a set of node imbalances. Given the dual prices from the prior problem instance, the flow-price vector pair (X ,π) satisfies the CSCs. Thus, (X ,π provides a valid initial solution for the SSP, CS, or other dual ascent algorithm employed in Step 2. It can be seen that these algorithms preserve integrality and ensure that CSCs of the pair (X ,π) hold. At each step, a dual ascent direction is taken until node imbalances are eliminated. Discussion of the SSP, CS and other dual ascent techniques can be found in Bertsekas [6] and Ahuja et al. [1], among other references.

The worst-case computational complexity of the Dual Ascent Reoptimization algorithm depends largely on the complexity of the chosen technique for Step 2 as shown in Proposition 2, where it is assumed that the CS algorithm is employed.

Proposition 2

The worst-case computational complexity of the Dual Ascent Reoptimization algorithm employing the CS algorithm in Step 2 is O((mlogU)(m+nlogn)).

Proof

The transformation procedures of Step 1, in the worst-case, will require updates to flows along all arcs and changes in imbalances at all nodes. Thus, the complexity of Step 1 is O(m + n) = O(m). The complexity of Step 2 is O((mlogU)(m + nlogn)), where U is the upper bound of maximum node imbalance and maximum arc capacity [1]. Note that this assumes a Fibonacci heap implementation within the path finding steps. Thus, the complexity of the Dual Ascent Reoptimization algorithm is O((mlogU)(m + nlogn)) + O(m) or O((mlogU)(m + nlogn)).□

The CS algorithm implementation of the Dual Ascent Reoptimization algorithm as discussed in Proposition 1 is polynomial. One could employ the refined scaling scheme proposed by Orlin [23], for example, to obtain a strongly polynomial algorithm.

5 Numerical Experiments

Extensive numerical experiments were conducted to assess the average computational performance of the proposed Dual Ascent Reoptimization algorithm as compared with re-solving from scratch using a comparable classic dual ascent technique. All techniques were implemented in Microsoft Visual C+ + and run on a personal computer with Intel® Pentium® 4 Processor of 3.20 GHz and 2 GB RAM.

5.1 Experimental Design

The average run times required for the two implementations of the Dual Ascent Reoptimization algorithm considered herein, the first employing the CS algorithm in Step 2 (referred to as CS-R) and the second employing the SSP algorithm (referred to as SSP-R), are compared with the average run times required to solve the updated problem instance starting from scratch using either the CS or SSP technique.

The experiments were performed on three randomly generated networks with 300, 500 or 1000 nodes. The networks were created by a random network generator adapted from Ziliaskopoulos [27], described in Miller-Hooks [19]. For each network, the average in- and out-degree at each node is set to approximately 4. The in- or out-degree of the nodes in these networks can each vary between 2 and 9. This selection of network density for these experiments was based on the motivating application of evacuation.

To create the initial set of problem instances, specifications of supply at the nodes, arc traversal times, and arc capacities were chosen. Three size problems were specified with respect to supply: small, medium and large. The small problem instances consist of one source-sink pair with 10 units of supply. The medium problem instances include combinations of 5 source-sink pairs, each with 5, 10 or 20 units of supply, and 10 source-sink nodes each with 10 units of supply. The large problem instances contain 20 or 50 source-sink node pairs, each with 10 units of supply.

For the majority of the runs, arc traversal times were randomly generated between 1 and 23 units of time and were assumed to be integer-valued. Integer-valued arc capacities were randomly generated between 3 and 50 units. Additional runs with a cost upper bound of 50 and capacities with ranges [0,50] and [3,30] were considered. While problem instances were generated to ensure that they were nontrivial, relatively large arc capacity bounds were used to avoid generating too many infeasible updated problem instances.

Updates in arc traversal times and capacities for each problem instance were also randomly generated. The percentages of arc updates varied from 5% to 20%. Several combinations of arc attribute updates were explored: increase of costs only, decrease of costs only, mixed changes (increase and decrease) of costs only, increase of capacities only, decrease of capacities only, mixed changes (increase and decrease) of capacities only, increase of both costs and capacities, decrease of both costs and capacities, and mixed changes (increase and decrease) of both costs and capacities. For mixed changes involving both costs and capacities or increases and decreases in a given category, updates were split between the two categories. For increases (decreases) in cost or capacity, updated values were randomly generated between the current value and the upper bound (lower bound) of the range employed to generate the current value.

Additional experiments on the 500 node network were conducted to assess the impact of changes in supply on the benefits of reoptimization. The problem instances that were tested involved either 5 or 50 source-sink pairs, an upper bound on supply of between 5 and 15 at each source node, up to 80% of affected source nodes, and changes that were all increasing, decreasing or split.

For each set of runs, ten randomly generated problem instances were constructed and solved. Average results were computed and compared.

5.2 Experimental Results and Findings

As extensive experiments were run, it is not convenient to provide results from all the experiments. Thus, a representative portion of the results of the experiments are provided in Appendix. While results are provided only for the 500 node network, in this section, general findings from analysis of the results on all three networks (with 300, 500 and 1000 nodes) are discussed.

5.2.1 The CS Algorithm vs. the SSP Algorithm

Despite that the CS algorithm has significantly better worst-case computational complexity, the SSP algorithm (with pseudo-polynomial worst-case computational complexity) outperformed the CS algorithm in nearly all runs, typically requiring only a small fraction of the time required by the CS algorithm. For example, for the 500 node problem instances, in 13 of 15 sets of runs, the SSP algorithm performed better than the CS algorithm, requiring an average of 13.8% of the time required by the CS algorithm. In the remaining two sets of runs, involving 20 or 50 source-sink pairs, the CS algorithm outperformed the SSP algorithm in many of the runs, but by a smaller margin. This appears to be due to decisions made in the initial iterations of the CS algorithm in which a large portion of the flow is shipped along the shortest paths that are identified on a Δ-residual network. These initially chosen paths may differ considerably from those employed in the optimal solution and, therefore, the CS algorithm may spend significant computational effort in later iterations reversing earlier decisions. It is expected that similar reversals would be required of other related scaling-based techniques. Since the SSP algorithm does not work in a Δ-residual network, fewer reversals are required. The experiments indicate that while the CS algorithm has better worst-case computational performance than the SSP algorithm, in average performance, the SSP algorithm performs best. Thus, results of the SSP algorithm provide a baseline for comparison in assessing the benefits of reoptimization.

Similar results were noted for SSP-R and CS-R. That is, SSP-R significantly outperformed CS-R in every test, requiring, for example, 7.0% and 8.5% of the time required by CS-R on average for the 500 and 300 node problem instances, respectively.

The superiority of the SSP algorithm and SSP-R over the CS algorithm and CS-R, respectively, in terms of average performance on the problem instances considered herein might be expected due to the properties of the problem instances that arc considered in terms of the relative size of supply as compared with the number of nodes in the network.

5.2.2 SSP-R vs. the SSP Algorithm

SSP-R consistently outperformed the SSP algorithm, regardless of the number of source-sink pairs for 10% or more of the arcs with changes when, regardless of the direction of capacity changes, costs increase or remain unchanged. In instances with larger than 10% of arcs with changes and increasing costs, SSP-R performs nearly equivalently, in the worst case, to the SSP algorithm. In most runs involving cost decreases, regardless of variations in other factors, the SSP algorithm outperformed SSP-R and often by a very large margin. In one extreme case, the run time for SSP-R required 552 times the time required of the SSP algorithm. This instance involved the 1,000 node network with one source-sink pair, 20 supply units, and 15% changes in only costs (decrease only). Thus, these results indicate that when costs decrease, it is almost always best to resolve from scratch. A reduction in cost will generate a new set of shortest paths, requiring significant changes in optimal assignment of flow to arcs (of paths). In a few sets of runs, the SSP algorithm outperformed SSP-R by a small margin for 15 and 20% changes to arc values by class even when costs did not decrease.

Similar trends persisted with increasing number of changes in the network attributes; however, the results indicate that, as expected, as the number of changes increases, the benefits of reoptimization decrease. Given that costs increase while capacities remain constant or both costs and capacities increase, the breakeven mark occurs with changes in roughly 15–20% of the arcs by class.

It was also observed that the greater the number of source-sink pairs, the better the performance of SSP-R (and CS-R). For example, for the 500 node problem instances, with 50 source-sink pairs, SSP-R outperformed the SSP algorithm in every set of tests, requiring as little as 1% of the run time. This improved relative performance is due to the fact that at the end of Step 1, numerous nodes may have nonzero imbalances. The larger the number of source-sink pairs, the larger the overlap with the set of nodes with imbalances.

5.2.3 Supply Level

The amount of supply did not appear to impact the relative performance of SSP-R as compared with the SSP algorithm; however, it was noted that, while the SSP algorithm was modestly impacted by increasing supply, the CS algorithm’s performance deteriorated with increasing supply. Additionally, SSP-R significantly outperformed the SSP algorithm in every run for which supply was changed, while costs and capacities remained constant, regardless of the size of the change or number of source-sink pairs.

5.2.4 Additional Observations and Caveats

In some of the more difficult problem instances, a number of the problem instances considered for each set of runs were infeasible. In such instances, results are reported based on the subset of feasible problems. There were a few sets of problem instances for which no problem instance was feasible. The greater the number of nodes, number of source-sink pairs, supply, and percentage of capacity decreases, the more likely the problem instances were to be infeasible. Finally, comparative results were consistent across networks; they did not vary due to network size. Average run times generally increased with increasing network size; however, such comparisons must be made with caution, because the problem difficulty could not be perfectly controlled across networks. In comparing results on the 300 and 500 node networks, the average run time of SSP-R increased worse than linearly with increasing problem size for the problem instances involving decreasing costs, but often increased nearly linearly for other categories of updates.

A subset of the runs involving the 1,000 node network were run on a Sun-Fire-V490 Sparc workstation with 4GB Ram due to the large memory requirements of the CS algorithm and CS-R. While run times cannot be compared across computer platforms, the same general trends in relative performance were noted.

6 Conclusions and Extensions

A two-step dual ascent reoptimization technique is proposed for determining updated optimal flows for the MCNFP given any number of simultaneous, heterogeneous changes to the network attributes, including supply at the nodes, arc costs and arc capacities. Extensive numerical experiments were conducted to assess the algorithm’s average computational performance given two implementations, the first of which relies on the CS algorithm and the second on the SSP algorithm. Consistently, in average performance, SSP-R outperformed CS-R and the SSP algorithm outperformed the CS algorithm.

In a comparison of SSP-R with starting from scratch by employing the SSP algorithm on the new problem instance, reoptimization was found to be significantly beneficial in terms of computation time in nearly all situations involving changes where costs did not all decrease (i.e. costs increased, cost changes were mixed (increased and decreased), or no change in cost). The experiments involved changes in up to 40% of the arcs (20% in cost and 20% in capacity) and reoptimization was found to perform better than solving from scratch in some problem instances involving as many changes. Thus, significant savings in computation time can be achieved through the use of reoptimization for a large number of heterogeneous changes. However, the proposed reoptimization technique is not recommended for problem instances with a significant number of arcs with decreasing costs. Since the evacuation problem that motivated this work involves only costs that are expected to worsen (increase) with time, as progressive collapse of the building’s structures continues or as fire and smoke spread through the structure, the proposed optimization technique can contribute significantly to this application.

Additional numerical experiments were conducted to assess the performance of the proposed reoptimization technique in comparison with NETOPT (based on network simplex) included in CPLEX, a widely available commercial software product. CPLEX is a standard for comparison. Results of these experiments (included in the tables of Appendix for the 500 node network) show that the reoptimization approach (SSP-R) outperforms the commercial software for nearly all problem instances for which SSP-R outperformed SSP under moderate supply instances. At the higher levels of supply that were tested, CPLEX outperforms SSP-R in all instances. Performance was similar, and at times better, for SSP-R as compared to CPLEX for the 1,000 node network. One must note that CPLEX is a commercially developed software product that has been on the market for many years. The code has been improved over many commercially available versions and was developed by professional computer scientists.

The proposed reoptimization concepts can be applied in addressing time-varying extensions of the MCNFP that could only be addressed in CPLEX through a time-expansion of the network. Specifically, these concepts can be employed in creating a reoptimization version of the Time-Dependent Quickest Flow Problem (TDQFP) algorithm and its extensions for solving the time-dependent evacuation and quickest transshipment problems [21]. This is because the TDQFP algorithm, like the related algorithms for time-varying minimum cost flow problems due to Cai et al. [9], has at its core a SSP structure. Conditions warranting building evacuation, the motivating application for this work, change rapidly with time. Thus, such a time-dependent extension that captures the variations in conditions over time and the dynamic characteristics of flow (i.e. allowing arc capacities to be recaptured as flow moves through the network) is essential for addressing this real-world application. The authors are working to extend the proposed reoptimization procedure employing concepts of the TDQFP algorithm for use in time-varying and dynamic networks.