| Preface | p. xvii |
| Preliminaries | |
| The Linear Programming Problem | p. 3 |
| Standard form | p. 3 |
| General form | p. 4 |
| Computational form #1 | p. 5 |
| Computational form #2 | p. 13 |
| Concluding remarks | p. 17 |
| Translation of bounds | p. 17 |
| Yet another formulation | p. 17 |
| The Simplex Method | p. 19 |
| Theoretical background | p. 20 |
| Basis and solution | p. 21 |
| The geometry of constraints | p. 23 |
| Neighboring bases | p. 26 |
| The primal simplex method | p. 28 |
| Optimality conditions | p. 28 |
| Improving a nonoptimal basic feasible solution | p. 29 |
| Algorithmic description of the simplex method | p. 33 |
| Finding a basic feasible solution | p. 34 |
| The two-phase simplex method | p. 37 |
| Duality | p. 38 |
| The dual simplex method | p. 40 |
| Dual feasibility | p. 40 |
| Improving a dual feasible solution | p. 41 |
| Algorithmic steps of the dual | p. 43 |
| Further properties of the primal-dual relationship | p. 46 |
| Concluding remarks | p. 47 |
| Large Scale LP Problems | p. 49 |
| Sparisty | p. 49 |
| Instances of large problems | p. 51 |
| Structure | p. 52 |
| Fill-in | p. 53 |
| Numerical difficulties | p. 55 |
| Computational Techniques | |
| Design Principles of LP Systems | p. 59 |
| Requirements of LP software | p. 60 |
| Computer hardware | p. 62 |
| The software side of implementing LP solvers | p. 65 |
| Data Structures and Basic Operations | p. 69 |
| Storing sparse vectors | p. 70 |
| Operations involving sparse vectors | p. 71 |
| Addition and accumulation of sparse vectors | p. 71 |
| Dot product of sparse vectors | p. 74 |
| Storing sparse matrices | p. 74 |
| Linked lists | p. 76 |
| Implementation of forward/backward linking | p. 80 |
| Concluding remarks | p. 84 |
| Problem Definition | p. 87 |
| The MPS format | p. 87 |
| Processing the MPS format | p. 93 |
| LP Preprocessing | p. 97 |
| Presolve | p. 97 |
| Contradicting individual bounds | p. 100 |
| Empty rows | p. 100 |
| Empty columns | p. 100 |
| Singleton rows | p. 100 |
| Removing fixed variables | p. 101 |
| Redundant and forcing constraints | p. 102 |
| Tightening individual bounds | p. 102 |
| Implied free variables | p. 104 |
| Singleton columns | p. 105 |
| Dominated variables | p. 105 |
| Reducing the sparsity of A | p. 107 |
| The algorithm | p. 108 |
| Implementation | p. 109 |
| Scaling | p. 110 |
| Postsolve | p. 116 |
| Unscaling | p. 117 |
| Undo presolve | p. 118 |
| Undo reformulation | p. 119 |
| Basis Inverse, Factorization | p. 121 |
| Product form of the inverse | p. 122 |
| General form | p. 123 |
| Sparsity exploiting form | p. 124 |
| Implementing the PFI | p. 129 |
| Operations with the PFI | p. 131 |
| LU factorization | p. 134 |
| Determining a sparse LU form | p. 136 |
| Implementing the LU factorization | p. 143 |
| Maintaining triangularity during iterations | p. 149 |
| Operations with the LU form | p. 155 |
| Concluding remarks | p. 158 |
| The Primal Algorithm | p. 161 |
| Solution, feasibility, infeasibility | p. 162 |
| Optimality conditions | p. 164 |
| Improving a BFS | p. 167 |
| The logic of the ratio test | p. 173 |
| Extensions to the ratio test | p. 175 |
| Algorithmic description of PSM-G | p. 176 |
| Computational considerations | p. 178 |
| Determining the reduced costs | p. 181 |
| Computing d[subscript j] | p. 182 |
| Updating [pi] | p. 182 |
| Updating d[subscript j] | p. 183 |
| Selecting an incoming (improving) variable | p. 184 |
| Dantzig pricing | p. 187 |
| Partial pricing | p. 187 |
| Sectional pricing | p. 188 |
| Normalized pricing | p. 189 |
| A general pricing framework | p. 198 |
| Improving an infeasible basic solution | p. 203 |
| Analysis of w(t) | p. 208 |
| The logic of the ratio test | p. 217 |
| Extensions to the ratio test | p. 217 |
| Computational considerations | p. 224 |
| Adaptive composite pricing in phase-1 | p. 227 |
| Handling degeneracy | p. 230 |
| Anti-degeneracy column selection | p. 232 |
| Wolfe's 'ad hoc' method | p. 234 |
| Expanding tolerance | p. 237 |
| Perturbation, shifting | p. 241 |
| Starting bases | p. 244 |
| Logical basis | p. 244 |
| Crash bases | p. 246 |
| CPLEX basis | p. 253 |
| A tearing algorithm | p. 255 |
| Partial basis | p. 259 |
| The Dual Algorithm | p. 261 |
| Dual feasibility, infeasibility | p. 261 |
| Improving a dual feasible solution | p. 262 |
| Dual algorithm with type-1 and type-2 variables | p. 263 |
| Dual algorithm with all types of variables | p. 266 |
| Bound flip in dual | p. 267 |
| Extended General Dual algorithm | p. 270 |
| Improving a dual infeasible solution | p. 277 |
| Analysis of the dual infeasibility function | p. 281 |
| Dual phase-1 iteration with all types of variables | p. 284 |
| Row selection (dual pricing) | p. 292 |
| Dantzig pricing | p. 293 |
| Steepest edge | p. 293 |
| Devex | p. 296 |
| Pricing in dual phase-1 | p. 297 |
| Computing the pivot row | p. 297 |
| Degeneracy in the dual | p. 298 |
| Various Issues | p. 301 |
| Run parameters | p. 301 |
| Parameter file | p. 302 |
| String parameters | p. 302 |
| Algorithmic parameters | p. 303 |
| Numerical parameters | p. 303 |
| Performance evaluation, profiling | p. 303 |
| Some alternative techniques | p. 306 |
| Superbasic variables | p. 306 |
| Row basis | p. 307 |
| Modeling systems | p. 310 |
| A prototype simplex solver | p. 311 |
| Index | p. 321 |
| Table of Contents provided by Syndetics. All Rights Reserved. |