Computing in Operations Research Using Julia
By Miles Lubin, Iain Dunning. INFORMS journal on computing, 2013
361 citations recorded by the source corpus.
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 .
View Paper: https://www.semanticscholar.org/paper/7787051231a92d98001ed73eab17e18b7cbfe8bc
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
- Velibor V. Misic
- Jack Dunn
- Jackson Gorham
- Dimitris J. Bertsimas
- Michael I. Jordan
- Lester W. Mackey
- Tamara Broderick
- Francis R. Bach
Citations in the corpus
- Enhancing Distribution System Resilience With Mobile Energy Storage and Microgrids (2019, unknown): “17 [33] on an Intel Xeon 2.”
- Measuring Sample Quality with Diffusions (2016, methodology): “We solve all linear programs using Julia for Mathematical Programming [59] with the Gurobi 6.0.4 solver [70] and use the C++ greedy spanner implementation of Bouts et al. [6] to compute our 2-spanners.”
- Polyhedral approximation in mixed-integer convex optimization (2016, background): “Pajarito is an opensource stand-alone Julia solver, now publicly released2 at https://github. com/JuliaOpt/Pajarito.jl, that heavily relies on the infrastructure of JuMP [17].”
- Optimal classification trees (2017, methodology): “We formulated our MIOmodels using the JuMP package, a state-of-the-art library for algebraic modeling and mathematical optimization (Lubin and Dunning 2015), and solved them using the Gurobi 6.”
- Linear Response Methods for Accurate Covariance Estimates from Mean Field Variational Bayes (2015, methodology): “As in Section 3.1, we implemented the variational solution using the autodifferentiation software JuMP [19].”
- A two-step linear programming model for energy-efficient timetables in metro railway networks (2015, methodology): “The energy calculation is done using SPSIM , which is a proprietary software owned by Thales Canada Inc ( Vlad and Tatarnikov, 2011 ), and Cubature , which is an opensource Julia package written by Steven G. Johnson that uses an adaptive algorithm for the approximate calculation of multiple integral”
- Julia: A Fresh Approach to Numerical Computing (2014, methodology): “jl Julia package [20] and made available as a web service.”
- Robust Classification (2019, methodology): “The optimization problems required by each method were formulated in JUMP, a state-ofthe-art library for algebraic modeling and mathematical optimization (Lubin and Dunning 2015).”
- Optimization of Tree Ensembles (2017, methodology): “All linear and mixed-integer optimization models are formulated in the Julia programming language (Bezanson et al. 2012), using the JuMP package (Julia for Mathematical Programming; see Lubin and Dunning 2015), and solved using Gurobi 6.5 (Gurobi Optimization, Inc. 2015).”
- Measuring Sample Quality with Stein's Method (2015, methodology): “[20] and solve all optimization programs using Julia for Mathematical Programming [21] with the default Gurobi 6.”
- Interpretable Optimal Stopping (2018, methodology): “All methods were implemented in the Julia technical computing language, version 0.6.2 (Bezanson et al. 2017).”