The Network Simplex Algorithm |
The network simplex solver in PROC OPTLP attempts to leverage the speed of the network simplex algorithm to more efficiently solve linear programs by using the following process:
It heuristically extracts the largest possible network substructure from the original problem.
It uses the network simplex algorithm to solve for an optimal solution to this substructure.
It uses this solution to construct an advanced basis to warm-start either the primal or dual simplex solver on the original linear programming problem.
The network simplex algorithm is a specialized version of the simplex algorithm that uses spanning-tree bases to more efficiently solve linear programming problems that have a pure network form. Such LPs can be modeled using a formulation over a directed graph, as a minimum-cost flow problem. Let be a directed graph, where denotes the nodes and denotes the arcs of the graph. The decision variable denotes the amount of flow sent between node and node . The cost per unit of flow on the arcs is designated by , and the amount of flow sent across each arc is bounded to be within . The demand (or supply) at each node is designated as , where denotes a supply node and denotes a demand node. The corresponding linear programming problem is as follows:
The network simplex algorithm used in PROC OPTLP is the primal network simplex algorithm. This algorithm finds the optimal primal feasible solution and a dual solution that satisfies complementary slackness. Sometimes the directed graph is disconnected. In this case, the problem can be decomposed into its weakly connected components and each minimum-cost flow problem can be solved separately. After solving each component, the optimal basis for the network substructure is augmented with the non-network variables and constraints from the original problem. This advanced basis is then used as a starting point for the primal or dual simplex method. The solver automatically selects the solver to use after network simplex. However, you can override this selection with the SOLVER2= option.
The network simplex algorithm can be more efficient than the other solvers on problems with a large network substructure. You can view the size of the network structure in the log.