Computing in Operations Research Using Julia

The state of numerical computing is currently characterized by a divide between highly efficient yet typically cumbersome low-level languages such as C, C++, and Fortran and highly expressive yet typically slow high-level languages such as Python and MATLAB. This paper explores how Julia, a modern programming language for numerical computing that claims to bridge this divide by incorporating recent advances in language and compiler design (such as just-in-time compilation), can be used for implementing software and algorithms fundamental to the field of operations research, with a focus on mathematical optimization. In particular, we demonstrate algebraic modeling for linear and nonlinear optimization and a partial implementation of a practical simplex code. Extensive cross-language benchmarks suggest that Julia is capable of obtaining state-of-the-art performance.Data, as supplemental material, are available at http://dx.doi.org/10.1287/ijoc.2014.0623 .

[1]  Carl Friedrich Bolz,et al.  Tracing the meta-level: PyPy's tracing JIT compiler , 2009, ICOOOLPS@ECOOP.

[2]  Iain Dunning,et al.  PuLP : A Linear Programming Toolkit for Python , 2011 .

[3]  David L. Woodruff,et al.  Pyomo: modeling and solving mathematical programs in Python , 2011, Math. Program. Comput..

[4]  Leo Liberti,et al.  Branching and bounds tighteningtechniques for non-convex MINLP , 2009, Optim. Methods Softw..

[5]  David Kendrick,et al.  GAMS, a user's guide , 1988, SGNM.

[6]  I. Maros Computational Techniques of the Simplex Method , 2002 .

[7]  Alan Edelman,et al.  Julia: A Fast Dynamic Language for Technical Computing , 2012, ArXiv.

[8]  Uwe H. Suhl,et al.  Computing Sparse LU Factorizations for Large-Scale Linear Programming Bases , 1990, INFORMS J. Comput..

[9]  J. A. Julian Hall,et al.  Towards a practical parallelisation of the simplex method , 2010, Comput. Manag. Sci..

[10]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[11]  Paula M. J. Harris Pivot selection methods of the Devex LP code , 1973, Math. Program..

[12]  Dominique Orban,et al.  DrAmpl: a meta solver for optimization problem analysis , 2010, Comput. Manag. Sci..

[13]  D. Gay,et al.  More AD of Nonlinear AMPL Models: Computing Hessian Information and Exploiting Partial Separability † , 1996 .

[14]  John G. Lewis,et al.  Sparse matrix test problems , 1982, SGNM.

[15]  Joel Andersson,et al.  A General-Purpose Software Framework for Dynamic Optimization (Een algemene softwareomgeving voor dynamische optimalisatie) , 2013 .

[16]  Robert E. Bixby,et al.  Solving Real-World Linear Programs: A Decade and More of Progress , 2002, Oper. Res..

[17]  Stephen P. Boyd,et al.  The CVX Users' Guide Release 2.0 (beta) , 2013 .

[18]  Gaël Varoquaux,et al.  The NumPy Array: A Structure for Efficient Numerical Computation , 2011, Computing in Science & Engineering.

[19]  J. Lofberg,et al.  YALMIP : a toolbox for modeling and optimization in MATLAB , 2004, 2004 IEEE International Conference on Robotics and Automation (IEEE Cat. No.04CH37508).

[20]  K. I. M. McKinnon,et al.  Hyper-Sparsity in the Revised Simplex Method and How to Exploit it , 2005, Comput. Optim. Appl..

[21]  Murray Hill More AD of Nonlinear AMPL Models: Computing Hessian Information and Exploiting Partial Separability † , 1996 .