Iain at MIT

Iain Dunning

Ph.D. Candidate, Operations Research Center, Massachusetts Institute of Technology

Contact: iaindunning at gmail, @iaindunning, github/IainNZ, LinkedIn

› About Me

I am a fifth year doctoral candidate at the MIT Operations Research Center. My primary research interests are optimization under uncertainty, the intersection of machine learning and optimization, and software tools for optimization.

I have created and contributed to many open source projects, many relating to the Julia programming language. I'm a co-founder of the JuliaOpt organization, which aims to make Julia the language of choice for optimization. My main contributions are JuMP, an algebraic modeling language for optimization, and JuMPeR, an extension of JuMP for robust optimization. I lead and maintain the Julia package ecosystem testing infrastructure.

I previously worked as a quantitative analyst at G o o g l e (intern, developed algorithm for part of search engine, tested by mashing Big Data), and in various engineering, consulting, and analyst roles in New Zealand. I obtained my undergraduate degree (B.E. (Hons)) in engineering from the University of Auckland.

I have taught analytics and related software tools to graduate students at MIT, MBAs and EMBAs at the MIT Sloan School of Management, and over 30,000 students around the world (and counting) as part of the EdX online class "The Analytics Edge".

› Blog Posts

› Research

» Journal articles
  • D. Bertsimas, I. Dunning, M. Lubin. "Reformulation versus cutting planes for robust optimization". to appear in Computational Management Science, 2015. [preprint]  [show/hide abstract]
  • M. Lubin, I. Dunning. "Computing in Operations Research using Julia". INFORMS Journal on Computing, 27(2), pages 238-248, 2015. [article]  [preprint]  [show/hide abstract]
  • I. Dunning, S. Gupta, and J. Silberholz. "What Works Best When? A Framework for Systematic Heuristic Evaluation." Submitted. [preprint]  [show/hide abstract]
  • I. Dunning, J. Huchette, and M. Lubin. "JuMP: A modeling language for mathematical optimization." Submitted. [preprint]  [show/hide abstract]
  • D. Bertsimas, I. Dunning. "Multistage Robust Mixed Integer Optimization with Adaptive Partitions." Submitted. [preprint]  [show/hide abstract]
» Talks
  • "Multistage Robust Mixed Integer Optimization with Adaptive Partitions." ISMP 2015. [slides]
  • "JuliaOpt: Optimization packages in Julia." JuliaCon 2015. [slides]
  • "Julia's Package Ecosystem: Past, Present, & Future" JuliaCon 2015. [slides]
  • "A Framework for the Systematic Evaluation of Computational Methods." INFORMS 2014.
  • "Solver-independent MILP Callbacks in JuMP (w/ Applications to Robust Integer Optimization." INFORMS 2014.
  • "JuliaOpt: Optimization packages in Julia." JuliaCon 2014.
  • "Computing in Operations Research using Julia." INFORMS 2013.
  • "OpenSolver: Open source optimisation for Excel." (with A. Mason) 45th Annual Conference of the ORSNZ 2010. [paper]. Winner of COIN-OR INFORMS Cup 2011

› Software

» JuliaOpt


I am one of the founders of the JuliaOpt organization, a collection of optimization-related packages for Julia. I am a co-creator of JuMP, a modeling language for optimization problems. I've also been involved in creating and maintaining several of the solver wrappers. I have spoken about JuliaOpt at JuliaCon 2014, at UC Berkeley, and in the talks and papers about JuMP mentioned above.

» Julia package listing and continuous integration.

I am the creator and maintainer for the official Julia package listing. The listing is automatically generated by PackageEvaluator.jl, which tests every registered package every day on both release and unstable Julia. Tests run in a Vagrant-launched VirtualBox Ubuntu VM. I'm submitted patchs to a large number of Julia packages to improve their stability, testing, and deployability. I talked about the package ecosystem at JuliaCon 2014.

» Other Julia Code
  • Julia itself: mostly minor patches, testing, and documentation improvements.
  • Coverage.jl: tools for reporting Julia code coverage results.
  • GraphLayout.jl: algorithms to visualize graphs.
  • Humanize.jl: "humanizes" numbers like sizes of data, date-time deltas, and adds digit separators.
  • JuMPeR.jl: an extension of JuMP for robust optimization.
  • MetadataTools.jl: tools for manipulating and analyzing Julia's package registry.
  • RandomCorrelationMatrices.jl: methods for generating random correlation and covariance matrices.
» Other Code
  • MQLib: Implementations of heuristics for the Max-cut and QUBO problems in C++. See "What Works Best When? A Framework for Systematic Heuristic Evaluation" in "Research" for more information.
  • OpenSolver: a plug-in for Excel that allows you to use a variety of powerful solvers, without limitations on problem size other than what your computer can handle. Winner of the COIN-OR INFORMS Cup
  • SimplexJS: a toy mixed-integer linear programming solver in pure Javascript.
  • TenkiCompare: compare weather in different cities, find cities with similar weather.

› Teaching

» Highlights
  • Spring 2014, Spring 2015: The Analytics Edge (EdX)
    • 30,000-person MOOC (Massive Open Online Course) that teaches predictive analytics (linear and logistic regression, CART, random forests), prescriptive analytics (linear and integer optimization), best practices and supporting techniques (e.g. cross-validation, text minining, clustering, visualizations). I was involved with creating the content as part of a team of MIT ORC doctoral students.
  • January 2013, 2014, 2015: Software Tools for Operations Research (MIT)
    • This is a student-run and -taught class aimed primarily at MIT ORC masters and doctoral students. Students each teach a three-hour module, eight modules in total, about topics such as data wrangling in R or optimization in Julia. The class started in 2013, and has maintained an enrolment of 30 to 40 students each January. I've been involved as both a teacher and organizer in all years. We wrote a paper about the class after the 2014 edition, and are aware of other schools now replicating the class based on this template:
    • Iain Dunning, Vishal Gupta, Angela King, Jerry Kung, Miles Lubin, John Silberholz (2015). A Course on Advanced Software Tools for Operations Research and Analytics INFORMS Transactions on Education 15(2):169-179. [paper]
» Recent teaching assistantships
  • Spring 2015: The Analytics Edge (MIT Sloan). MBA elective. Follows on from "Data, Models and Decisions". Covers same material as the EdX class.
  • Spring 2014: Data, Models and Decisions (MIT Sloan) EMBA core. Covers probability, simulation, regression, and optimization. [textbook]
  • Spring 2013: The Analytics Edge (MIT Sloan). EMBA elective.
  • 2009,2010,2011: Misc. engineering classes (University of Auckland). Second- and third-year engineering mathematics and computational techniques classes.

© Iain Dunning, 2015. Base theme/CSS by Skeleton.