# Operations Research resources

People with different backgrounds join Google's Operations Research team. Some
are PhDs and well-known in their field; others are excellent software engineers
enthusiastic about learning mathematical optimization.

Sometimes the software engineers ask the OR experts how to learn more about
OR. We started to collect our answers in a document, excerpted below. These are
opinions of individual Googlers, not official Google endorsements. We hope
you enjoy eavesdropping on our team conversation!

## MOOCs

| Course | Author | Notes | Comments |
|---|---|---|---|
| [Coursera class on Discrete Optimization](https://www.coursera.org/learn/discrete-optimization) | van Hentenryck | MIP \& CP | Kvothe@: *I loved this. Still haven't finished the final problem set though.* |
| [Basic Modeling for Discrete Optimization](https://www.coursera.org/learn/basic-modeling) | Lee \& Stuckey | More of a focus on CP |   |
| [Advanced Modeling for Discrete Optimization](https://www.coursera.org/learn/advanced-modeling) | Lee \& Stuckey |   |   |
| [Solving Algorithms for Discrete Optimization](https://www.coursera.org/learn/solving-algorithms-discrete-optimization) | Lee \& Stuckey |   |   |
| [Modeling and Solving AI Problems in Picat](http://ktiml.mff.cuni.cz/%7Ebartak/AAAI2017/) | Barták |   |   |
| [OR(1): Models and Applications](https://www.coursera.org/learn/operations-research-modeling) | Kung |   | Zaphod@: *These and the next two are a great introduction to all things LP/IP.* |
| [OR(2): Optimization Algorithms](https://www.coursera.org/learn/operations-research-algorithms) | Kung |   |   |
| [OR(3): Theory](https://www.coursera.org/learn/operations-research-theory) | Kung |   |   |

## LP \& MIP Basics

| Cover | Title | Author | Comments |
|---|---|---|---|
| [![Cover of Introduction to Linear Optimization](https://developers.google.com/static/optimization/support/images/introduction_to_linear_optimization_bertsimas.jpg)](https://www.amazon.com/Introduction-Linear-Optimization-Scientific-Computation/dp/1886529191/) | Introduction to Linear Optimization | Bertsimas \& Tsitsiklis | BlackLotus@: *For LP (and to a lesser extent MIP), I think this book is best.* Patrick@: *Downvoting Bertsimas-Tsitsiklis as it's more for a "Second Course" on linear programming, and for that it's probably best together with [Introduction to Linear Optimization](https://www2.isye.gatech.edu/%7Enemirovs/OPTI_LN2018.pdf).* BadBoy@: *I need to have a look at this one. I usually do not like the way these guys present stuff, but I may be wrong.* Kvothe@: *Chapters 10 ("Integer programming formulations") and 11 ("Integer programming methods") are great.* |
| [![Cover of Linear Programming](https://developers.google.com/static/optimization/support/images/linear_programming.jpg)](https://www.amazon.com/Linear-Programming-Foundations-Extensions-International-ebook/dp/B00E3B9KDK/) | Linear Programming | Vanderbei |   |
| [![Cover of Combinatorial Optimization](https://developers.google.com/static/optimization/support/images/combinatorial_optimization.jpg)](https://www.amazon.com/Combinatorial-Optimization-3-B-C/dp/3540443894/) | Combinatorial Optimization: Polyhedra and Efficiency | Schrijver | SpiderWoman@: *I remember liking Schrijver's "Combinatorial Optimization" way back when, but it's very mathematical and not something I'd recommend to someone joining the team for example...* |
| [![Cover of Theory of Linear and Integer Programming](https://developers.google.com/static/optimization/support/images/theory_of_linear_and_integer_programming.jpeg)](https://www.wiley.com/en-us/Theory+of+Linear+and+Integer+Programming-p-9780471982326) | Theory of Linear and Integer Programming | Schrijver | BadBoy@: *Cool to show off in your library, when doing an interview or to impress someone. You most likely will not read it, and you won't like it, unless you have a PhD in pure, twice-distilled math. So not the thing to start LP or MIP with. This being said, it contains a wealth of proofs and interesting information. Things like totally unimodular matrices and what they entail. And the bibliography is incredibly well detailed, with citations in the original languages. It's a kind of Knuth's Art of Computer Programming. Only this one is not digestible.* Kvothe@: *Haven't read it, but distrust it based on typeface alone.* |
| [![Cover image of A First Course in Linear Optimization](https://developers.google.com/static/optimization/support/images/a_first_course_in_linear_optimization.png)](https://github.com/jon77lee/JLee_LinearOptimizationBook) | A First Course in Linear Optimization | Lee | [Freely Available](https://github.com/jon77lee/JLee_LinearOptimizationBook/blob/master/) under a CC license! |
| [![Cover of Introduction to Mathematical Optimization](https://developers.google.com/static/optimization/support/images/introduction_to_mathematical_optimization.jpg)](https://www.amazon.com/dp/1692792024) | Introduction to Mathematical Optimization | Fischetti | BadBoy@: *I went through the Italian version. Looks very good. I love what Fischetti does in general.* |
| [![Cover of Linear Programming](https://developers.google.com/static/optimization/support/images/linear_programming_chvatal.webp)](https://www.amazon.com/Linear-Programming-Books-Mathematical-Sciences/dp/0716715872) | Linear Programming | Chvatal | BadBoy@: *I don't like the book but it's where I learnt everything LP, and the notation is great.* |
| [![Cover of Combinatorial Optimization](https://developers.google.com/static/optimization/support/images/combinatorial_optimization_papadimitriou.webp)](https://www.amazon.com/Combinatorial-Optimization-Algorithms-Complexity-Computer/dp/0486402584) | Combinatorial Optimization | Papadimitriou \& Steiglitz | BadBoy@: *I loved it. It's outdated, but you should read it.* Kvothe@: *A bit dry for my taste.* |
| [![Cover of Integer Programming](https://developers.google.com/static/optimization/support/images/integer_programming_wolsey.jpeg)](https://www.wiley.com/en-us/Integer+Programming%2C+2nd+Edition-p-9781119606536) | Integer Programming | Wolsey | Unicorn@: *Very terse, but covers most of the interesting parts of the field (from a solver perspective)* |
| [![Cover of Integer Programming](https://developers.google.com/static/optimization/support/images/integer_programming_conforti.webp)](https://link.springer.com/book/10.1007/978-3-319-11008-0) | Integer Programming | Conforti, Cornuéjols, \& Zambelli | Patrick@: *Probably the most up-to-date book on MIP theory/methodology.* |
| [![Cover of Facets of Combinatorial Optimization](https://developers.google.com/static/optimization/support/images/facets_of_combinatorial_optimization_junger.webp)](https://link.springer.com/book/10.1007/978-3-642-38189-8) | Facets of Combinatorial Optimization | Jünger \& Reinelt | Patrick@: *More on the theoretical side and biased towards the work by former ZIB director Martin Grötschel (it's from his 65th birthday celebration), but it includes what I think is the latest version of this computational MIP survey: "Tobias Achterberg and Roland Wunderling. Mixed integer programming: Analyzing 12 years of progress".* |
| [![Cover of 50 Years of Integer Programming](https://developers.google.com/static/optimization/support/images/50_years_of_integer_programming_junger.webp)](https://link.springer.com/book/10.1007/978-3-540-68279-0) | 50 Years of Integer Programming: 1958-2008 | Jünger et al., ed. | Patrick@: *Slightly outdated, but a very good review of history and MIP state-of-the-art.* |
| [![Cover of Network Flow Algorithms](https://developers.google.com/static/optimization/support/images/network_flow_algorithms_williamson.jpeg)](https://www.amazon.fr/exec/obidos/ASIN/1316636836/wwwdeveloppec-21) | Network Flow Algorithms | Williamson | Unicorn@: *A good book with many very recent results about network flows, while still being intuitive. Only for network flows, though, so not that generic.* [More complete review in French.](https://tcuvelier.developpez.com/livres/#L9781316636831) |
| [![Cover of Algorithms Illuminated](https://developers.google.com/static/optimization/support/images/algorithms_illuminated_part_3_roughgarden.jpg)](https://www.amazon.fr/exec/obidos/ASIN/0999282964/wwwdeveloppec-21) | Algorithms Illuminated: Algorithms for NP-Hard Problems | Roughgarden | Unicorn@: *Probably not the most advanced book of the pack! Still, it provides an intro to some OR algorithms (from the point of view of an algorithms course). Very readable!* [More complete review in French.](https://tcuvelier.developpez.com/livres/#L9780999282960) |
| [![Cover of Practical Optimization](https://developers.google.com/static/optimization/support/images/practical_optimization_gill.jpg)](https://www.amazon.fr/exec/obidos/ASIN/161197559X/wwwdeveloppec-21) | Practical Optimization | Gill, Murray, \& Wright | Unicorn@: *Old reference book about continuous optimization. If you need any explanation about this family of algorithms, this book has you covered.* [(More complete review in French.)](https://tcuvelier.developpez.com/livres/#L9781611975598) |
| [![Cover of Introduction to Optimization and Hadamard Semidifferential Calculus](https://developers.google.com/static/optimization/support/images/introduction_to_optimization_and_hadamard_semidifferential_calculus_delfour.jpg)](https://www.amazon.fr/exec/obidos/ASIN/1611975956/wwwdeveloppec-21) | Introduction to Optimization and Hadamard Semidifferential Calculus | Delfour | Unicorn@: *Very formal book about semidifferential optimization. Not easy to get into.* [More complete review in French.](https://tcuvelier.developpez.com/livres/#L9781611975598) |
| [![Cover of The Moment-SOS Hierarchy](https://developers.google.com/static/optimization/support/images/the_moment_sos_hierarchy_henrion.jpg)](https://www.amazon.fr/exec/obidos/ASIN/1786348535/wwwdeveloppec-21) | The Moment-SOS Hierarchy: Lectures in Probability, Statistics, Computational Geometry, Control and Nonlinear PDEs | Henrion, Korda, \& Lasserre | Unicorn@: *If you're optimizing with polynomials or wondering how far you can go with these, you will get the basics of the SoS hierarchy and unfamiliar applications.* [More complete review in French.](https://tcuvelier.developpez.com/livres/#L9781786348531) |
| [![Cover of Introduction to Operations Research](https://developers.google.com/static/optimization/support/images/introduction_to_operations_research_hillier.jpeg)](https://www.mheducation.com/highered/product/introduction-operations-research-hillier-lieberman/M9781259872990.html) | Introduction to Operations Research | Hillier \& Lieberman | Kvothe@: *A nice mix of theory \& practice. A good first text for people new to the field, with worked-out examples and lots of exercises, some with answers in the back of the book. Downsides: the book tries a bit too hard to funnel users to its website, and it uses obsolete solvers.* |

### Research Reviews

| Review | Author | Comments |
|---|---|---|
| [175 Years of Linear Programming](https://www.ias.ac.in/listing/bibliography/reso/M._R._Rao) | Chandru \& Rao | BadBoy@: *It's a great series of articles. I was exposed to this at IBM in the early 1990s. I do not know who first had the idea of presenting linear programming like this, but Vijay Chandru and Jean-Louis Lassez were involved, too.* *The nice thing about it is that you need only entry-level linear algebra to understand it, and you can prove almost any important theorem in LP with the basics. The best would be a book on LP with this, plus some Chvatal, some Vanderbei, and then implementation issues and references to the relevant books. Chvatal and Vanderbei lack a bit of solid mathematical ground.* *It's old, and should soon be renamed 200 years of Linear Programming. It's possible there were earlier attempts.* |

### Research Articles

| Article | Author | Comments |
|---|---|---|
| [A new polynomial-time algorithm for linear programming](https://link.springer.com/article/10.1007/BF02579150) | Karmarkar | BadBoy@: *Karmarkar's paper on Karmarkar's algorithm. The example of how a paper should not be written. It took years to get to a working implementation, and in the meantime they discovered it was yet another interior point method.* |

## Modeling

### MIP

| Cover | Title | Author | Comments |
|---|---|---|---|
| [![Cover of Model Building in Mathematical Programming](https://developers.google.com/static/optimization/support/images/model_building_in_mathematical_programming_williams.webp)](https://www.amazon.com/Model-Building-Mathematical-Programming-Williams/dp/1118443330) | Model Building in Mathematical Programming | Williams | A focus on LP and MIP. Temere@: *I really did* not *like it. The structure is weird (and artificially boosting the number of pages). And it's heavily rooted in "classical OR applications" (focus on economy or almost toy-like looking planning) with little relevance to MIP models we usually do at Google* Azalee@: *Agreed.* BadBoy@: *I still think the book was great back in the days. I had a look at it maybe 2 years ago, and gosh. It is outdated. Also, I've known the author since 1990, and we reconnected at ISMP 2015. He is a great guy, retired, traveling to conferences on his money and still making great presentations. His papers were great, especially on Fourier elimination. He has a very broad vision of what LP is. He was instrumental in starting XpressMP.* |
| [![Cover of Applications of Optimization with XpressMP](https://developers.google.com/static/optimization/support/images/applications_of_optimization_with_XpressMP_gueret.jpg)](https://www.amazon.com/dp/0954350308) | Applications of Optimization with XpressMP | Guéret, Prins, Sevaux, \& Heipcke |   |

### Solver-issued Modeling Guides

| Guide | Description | Comments |
|---|---|---|
| [MOSEK Modeling Cookbook](https://docs.mosek.com/modeling-cookbook/index.html) | Focuses on conic convex optimization. | Unicorn@ *A real reference for me when doing nonlinear modelling.* |
| [MOSEK Portfolio Cookbook](https://docs.mosek.com/portfolio-cookbook/index.html) | Conic models for portfolio optimization |   |

### Research Reviews: MIP

| Review | Author | Description |
|---|---|---|
| [Mixed integer linear programming formulation techniques](https://juan-pablo-vielma.github.io/publications/Mixed-Integer-Linear-Programming-Formulation-Techniques.pdf) | Vielma | Focuses on the strength and size of mixed-integer formulations for unions of polyhedra-like piecewise linear functions. More on the theoretical side, but includes some practical techniques like incremental formulations in section 8. |
| [Nonconvex piecewise linear functions: Advanced formulations and simple modeling tools.](https://arxiv.org/abs/1708.00050) | Huchette \& Vielma | More recent techniques for piecewise linear functions that are not included in the above review. |

### Research Reviews: MINLP

| Review | Author | Description |
|---|---|---|
| [Mixed-integer convex representability](https://arxiv.org/abs/1706.05135) | Lubin, Vielma, \& Zadik | For convex relaxations only. |

## Optimization Under Uncertainty

### Stochastic Optimization

| Cover | Title | Author | Comments |
|---|---|---|---|
| [![Cover of Lectures on Stochastic Programming](https://developers.google.com/static/optimization/support/images/lectures_on_stochastic_programming_shapiro.webp)](https://epubs.siam.org/doi/book/10.1137/1.9781611976595) | Lectures on Stochastic Programming: Modeling and Theory | Shapiro, Dentcheva, \& Ruszczynski |   |
| [![Cover of Introduction to Stochastic Programming](https://developers.google.com/static/optimization/support/images/introduction_to_stochastic_programming_birge.webp)](https://link.springer.com/book/10.1007/978-1-4614-0237-4) | Introduction to Stochastic Programming | Birge \& Louveaux | Unicorn@: *A more theoretical introduction to the topic. I don't recommend it as much as Lectures on Stochastic Programming.* |

#### Research Reviews

| Review | Author |
|---|---|
| [Optimization of Conditional Value-at-Risk](http://www.pacca.info/public/files/docs/public/finance/Active%20Risk%20Management/Uryasev%20Rockafellar-%20Optimization%20CVaR.pdf) | Rockafellar \& Uryasev |

### Robust Optimization

| Cover | Title | Author | Comments |
|---|---|---|---|
| [![Cover of Robust Optimization](https://developers.google.com/optimization/support/images/robust_optimization_ben-tal.avif)](https://press.princeton.edu/books/hardcover/9780691143682/robust-optimization) | Robust Optimization | Ben-Tal, El Ghaoui, \& Nemirovski | [PDF.](https://www2.isye.gatech.edu/~nemirovs/FullBookDec11.pdf) Unicorn@: *A great reference if the reviews below aren't detailed enough. A large part is devoted to nonlinear problems (typically not presented in the reviews).* *I really like its Section 1.1.2, because it shows numerically that small coefficient deviations can make large infeasibilities.* |
| [![Cover of Robust and Adaptive Optimization](https://developers.google.com/static/optimization/support/images/robust_adaptive_optimization_bertsimas_den-hertog.webp)](https://www.dynamic-ideas.com/books/robust-and-adaptive-optimization) | Robust and Adaptive Optimization | Bertsimas \& Dick Den Hertog | [PDF.](https://www2.isye.gatech.edu/~nemirovs/FullBookDec11.pdf) Unicorn@: *Excellent reference on anything regarding robust optimisation! It's quite thorough, it could do with a bit more on the side of algorithms.* [More complete review in French.](https://tcuvelier.developpez.com/livres/#L9781733788526) |

#### Research Reviews

| Review | Author |
|---|---|
| [A Practical Guide to Robust Optimization](https://arxiv.org/abs/1501.02634) | Gorissen, Yanıkoğlu, \& den Hertog |
| [Theory and Applications of Robust Optimization](https://arxiv.org/abs/1010.5445) | Bertsimas, Brown, \& Caramanis |

#### Research Articles

| Article | Author |
|---|---|
| [Tractable Stochastic Analysis in High Dimensions via Robust Optimization](https://link.springer.com/article/10.1007/s10107-012-0567-2) ([PDF](https://www.mit.edu/~dbertsim/papers/Robust%20Optimization/Tractable%20stochastic%20analysis%20in%20high%20dimensions%20via%20robust%20optimization.pdf)) | Bandi \& Bertsimas |

## StackExchange

[What are good reference books for introduction to operations research?](https://or.stackexchange.com/questions/869/what-are-good-reference-books-for-introduction-to-operations-research)

[Recommended books/materials for practical applications of Operations Research in industry](https://or.stackexchange.com/questions/117/recommended-books-materials-for-practical-applications-of-operations-research-in)