Linear programming is a widely used optimization tool in various applications (data science, engineering, transportation, supply chain, etc.). Linear programming also makes the basic foundation behind complex optimization tools like Mixed Integer Linear Programming (MILP) and Column generation. In this course, we will study the basic theoretical concepts related to linear programming.
The course is organized as follows. In the first section, we will introduce linear programming, and we will explore the convexity and types of optimalities. Then, in the second section, we will build up on the basics to learn ways to solve the linear program using the simplex method. We will then explore the concept of linear programming duality. We will also go through some of the hardest-to-understand concepts like strong duality, complementary slackness, and Farkas’ lemma. Furthermore, we try to understand these concepts in an easy-to-follow way. This allows one to obtain lower bounds on the minimization problem and provide proof of optimality or Infeasibility. In the last section, we will explore how to perform sensitivity analysis (the effects of changing parts of a linear program). At the end of each section, there are assignments to help you evaluate your knowledge.
As you would have noticed, this course doesn’t explore modeling optimization problems as a linear program much. That is a separate topic and deserves an entire course on it.
A background in basic linear algebra is needed to understand the proofs. In case you face trouble with any of the lectures or assignments, feel free to reach out to me. I am always eager to help students. You can also schedule office hours from my website once a week (first come, first served) to clear your doubts.