
Ask HN: How can learn about Linear Programming/Optimization? - sidcool
... For someone who has done web development most of his career.  I m interested in learning Linear Programming, Algorithmic optimization, geospatial optimization, portfolio optimization, MIP, Linear Regressions.<p>I am not interested in being a data scientist.  But I am interested in these topics.
======
tasseff
I'm a Ph.D. student in operations research (OR). My suggestion would be to
first build a strong foundation in linear programming. This will introduce you
to the notion of duality, which is heavily emphasized in many mathematical
programming courses. Here's a good open source book on linear programming
written by Jon Lee, the current editor of Mathematical Programming A:
[https://github.com/jon77lee/JLee_LinearOptimizationBook](https://github.com/jon77lee/JLee_LinearOptimizationBook)

Then I'd suggest studying more general methods for continuous and convex
optimization. The book I see mentioned a lot is Convex Optimization by Boyd
and Vandenberghe, although we didn't use this in our coursework. Instead, we
used a lot of the material presented here:
[http://mitmgmtfaculty.mit.edu/rfreund/educationalactivities/](http://mitmgmtfaculty.mit.edu/rfreund/educationalactivities/)

If you read the above (or any other two books on linear programming and convex
optimization), you'll probably have a better idea of what you want to study
next and how you want to go about it. The next natural step would be to study
combinatorial (i.e., integer or mixed-integer) optimization. (Jon Lee has
another book on this subject; I've also heard good things about the Schrijver
book.)

It's also not a bad idea to start getting familiar with the tools people use
to solve mathematical programs in practice. The theory you'll learn to solve
linear programs is different from the theory for general convex problems, and
similarly for mixed-integer programs. As such, there are various "solvers"
that are used to solve various problem types. Because of this, there are a lot
of frameworks that are used to develop general mathematical programs, which
can then interface with these solvers in a generic way. For example, Pyomo is
a modeling language based in Python, and JuMP is a modeling language based in
Julia.

If you want a general introduction to discrete optimization in a course
format, you should take this class on Coursera
([https://www.coursera.org/learn/discrete-
optimization](https://www.coursera.org/learn/discrete-optimization)). It's a
fantastic introduction to operations research in general, and it will give you
a good intuition of the types of problems you encounter in the field as well
as the various techniques that are used to solve them. (Full disclosure:
Pascal is my adviser.)

Let me know if you have any more questions. I recently became a moderator of
/r/OperationsResearch on Reddit and love the idea of having a larger community
that can answer questions like yours. Operations research seems somewhat
overshadowed by machine learning at the moment (at least in popular culture),
but they truly go hand-in-hand. I'm somewhat surprised that a lot of useful
techniques from OR are not heavily discussed by machine learning
practitioners. Both fields are, fundamentally, trying to solve difficult
optimization problems.

~~~
acutesoftware
Good answer.

I don't have a strong maths background, (had to relearn quite a bit), but
found the coursera course to be really useful (and a lot of fun)

