This semester, I’m taking probably my favorite class at USC so far, ISE 330: Intro to Operations Research—Deterministic Models. Yes, that’s a mouthful, so I’ll break it down. Operations research is the field of study that observes decision-making under certain constraints, whether in business, in city planning, or in just about any other field you can think of. And there are generally two types of models (sometimes they can be mixed, but let’s ignore that for now): deterministic and stochastic. The main difference between these is that a stochastic model (which are studied in ISE 331) has random elements to it; you’re generally thinking “if X happens, what is the chance of Y happening? What is my expected value? How should I plan around this?”
Deterministic models are not random, meaning you know exactly what you’ll get out based on what you put in. For example, a bakery planning on which products to bake might generate an objective function for their net revenue based on how many of each type of good they bake and sell, and they would try to maximize its value. There would then be a set of constraint equations that limit the amount they can bake/sell based on what ingredients they have, what their usual demand is, etc.
It might not seem like it at first, but these sorts of systems of equations, known as linear programming, are incredibly versatile to a whole bunch of real-world situations, and they are actually central to many machine learning algorithms. If you’ve learned about linear regression in a stats class, then that can actually be modeled as a linear program! You want to minimize the sum of errors between your data points and your line, based on constraints that determine that line’s coefficients.
There is also a subset of linear programming known as integer programming, where all your variables are restricted to integer values. Sometimes, those integer values can only be binary (0 or 1), representing whether you make a certain decision! This makes linear programming that much more powerful in making decisions systematically, and they allow you to solve certain games like Minesweeper really interestingly. I am, as I type this, running a binary integer program that will (hopefully) return to me an optimal farm layout for the game Stardew Valley. Really cool stuff, and I can’t wait to learn more!