In conversation about practicing OR and decision science in industry

Advice and perspectives from Ryan O’Neil and Thiago Serra about moving from academic settings and research environments to industry practice.

How do you translate academic studies into real-world business practice? Ryan O’Neil, Nextmv founder and CTO, recently sat down with Thiago Serra, Assistant Professor of Business Analytics at University of Iowa, to discuss topics such as making the most of your OR training, engaging with open source OR projects, data science and AI interfaces, the benefits of software engineering practices, and more.

The following is a companion interview to a longer, related conversation that has been edited for length and clarity.

Ryan O’Neil: What are the ways that people come into optimization in academic settings? What observations do you have about how we train people in the space? What are the current trends, and what does the future look like to you? 

Thiago Serra: It’s tricky to talk about training people in optimization because it often pops up as an elective. Depending on what your major is, an optimization course is going to have a very different taste. Back when there were two people teaching optimization at Bucknell University - myself and Lucas Waddell - his class would have theorems, a whiteboard, proofs, and so on. 

My class focused entirely on modeling aspects because his class focused on math. I was in the college of management, where we had people coming through engineering with a more hands-on approach. We also had people coming through computer science that focused more on the algorithmic aspects. So the feeling I have is, maybe we're not really training optimizers. Maybe we’re leaving some breadcrumbs, and they learn to build on that themselves.

Ryan: I also had very formulation-heavy training under Dr. Hoffman at George Mason. I thought that was one of the most fun aspects of the field and kept me interested in it above anything else. I thought, how do I take a physical process in the world and then convert it into something that is efficient for a solver to optimize?

Thiago: I have this theory about folks that come through computer science versus those that don't. When your starting point is computer science, you don't think NP-hard problems are something you should wade into because they’re very difficult. But one thing we learned with neural networks, for example, is that it doesn't matter that you can't find the global optimal solution. As long as you can find a good enough solution, or you can skew to the size of the problem, it works. Bringing in people from computer science is tricky because they’re taught, this is too hard, don't go there. 

Ryan: There's an interesting historical aspect there too. A lot of complexity theory development came out of early failures and research from the sixties, but so much has changed. At my first INFORMS, I went to a talk where a professor put up a slide and said something like: NP-hard is a term we use to secure graduate students.

You reminded me that there was a specific moment when I actually became aware of optimization/operations research as a field. I was reading David Goldberg's book on genetic algorithms. He kept talking about NP-hard problems and this field where they would just solve those problems anyway. When I read that, I realized, that's what I want to do. Was there a specific moment for you?

Thiago: Honestly, I chose computer engineering as a major because I wanted to make sure I could make a living out of it. So for me, it was a combination of factors. I wasn't excited about the prospect of computer programming or being a computer engineer, in general, but I remember the first time I saw optimization. I had a professor in my first semester and on his website, I saw he worked with this thing called optimization. I learned that you can write code to do non-trivial things, automate decision-making, and make more with the same amount of resources. There are a lot of different, developmental experiences you can have that can take you on this path, and not every two people are going to have the same ones.

Ryan: We have people coming from different backgrounds into this field — statistics and math, computer science, industrial engineering, etc. —  and it's a little bit of a melting pot. What makes folks successful as they actually start to apply optimization, after their training?

Thiago: They should bridge these gaps that we have in education. This is a personal perspective, but I would imagine someone more hands-on is going to just find a way to solve the problem and maybe not take that step back of framing or formulating the problem. If you could potentially formulate a problem and give it over, maybe you're lucky enough that it gets solved. Framing that problem is important. I think having exposure for different lenses of optimization is also important. If someone comes from a modeling perspective, but hasn't spent a lot of time coding, that coding aspect is important too.

In my undergrad years, the most relevant experience for me was actually computer programming competitions. They really made me think about implementing algorithms and the fact that machines have limited resources. People forget that these days, high-level programming languages let the LLM solve the problem for you. But if you really understand how to use your machine well, there's so much more you can make. For example, Gurobi Academy is looking for people to train themselves because there are certain skills that we don't expect to see with a college degree anymore. Low-level programming, like learning how to code in C++, is going away, but if you don't have those skills, there are certain tasks that you cannot perform well.

Ryan: One of my favorite classes as an undergrad was assembly language. I remember going into Turbo Debugger, and you had this curses-style view of the machine. You could watch things going into registers, and it was a lot of fun. It was very slow programming though, it was nothing like what people do now.

Thiago: Let's plug in generative AI and large language models here. What was very established back when I was in college 20 years ago was that we can do assembly, but if you write code in C++, compilers have been optimized so much, assembly doesn’t matter. It's going to be just as efficient. When you think about large language models, it's somewhat similar. You can quickly ask a large language model to formulate an optimization problem for you, and that formulation can be quite okay, in the same way that scripting can be good at solving certain problems.

One point that I keep seeing for optimization professionals is to make sure you have a model that's actually good enough to scale in practice. This has a lot to do with my perspective coming from computer science. Does this solve the problem? Maybe. Does this solve well enough? Maybe not. You could potentially have a valid model, but it's only with all this studying about strong formulations and convex-ification that you start to understand this is just an okay model, and you could write a much better model. You could write a callback function that could make solving much better.

Ryan: Nobody goes out into industry and solves a set cover problem, unless it's something else that you've reformulated as a set cover. One of my models I inherited that did routing had at least a dozen different things that could be put into the objective function. Things like, how do you balance driver pay, late time versus early time versus tips, etc. Once you're in the real world, the models become impure. It gets into understanding of what the stakeholder requirements are and being a subject matter expert in that field.

I've been using some LLMs to do coding assistance for testing out NVIDIA's cuOpt routing library, which we've recently added to our platform. It can be an accelerant in writing the model, but what it gives back isn't necessarily even real. The first thing it might give you back is a model where the drivers are going back and forth 50 times. Yes, it solves the problem, but you have to look at the output and understand how an OR expert doing on-the-ground-logistics would look at that and say no, that's not right. In a way it's helping with some of the modeling and the coding, but now you have to step up a level and think more from the business side of it.

Thiago: In my early days working at a consulting company, we had this logistics software that would figure out routing for trucks, but we would also figure out how to put the cargo inside the trucks. If you're visiting one place first, the back of the truck is going to have the items that should be delivered there, so you would build the container loading that way. But there are also physical constraints. You cannot stack three ovens or two fridges because they’re too heavy. The system also had regional configurations. One of the clients had factories all over the country, and the culture in certain parts of the country meant they didn’t want to be told what they can and cannot pile inside a truck. So you either accept that the configuration is going to be different regionally, with some risks, or the system is not going to be used. 

Ryan, you do have a broader experience in software engineering. Last time I worked as a software engineer, we were coding in Java. I imagine you have more stories like that to share.

Ryan: When I was working with a company that was doing delivery, we were showing them routes, like a capacitated vehicle routing problem, that look like petals. The driver starts at the depot, goes in a loop and comes back. That's usually what the optimal solution actually looks like. We’d show them these solutions, and then we'd improve on the objective value. It took a while to realize what they actually wanted was clustering, essentially. This is very common. For example, if you're an Amazon delivery driver, you want to get on the highway, go to a neighborhood, do all the deliveries, and go back to the depot. There's a big disconnect between what the operators need, want, and understand about on the ground operations versus what the actual optimization will do. But if you just code the optimization to do that, such as minimize the total time, it's a very different thing.

Check out the techtalk recording for the full interview to hear Ryan and Thiago cover a range of topics with the goal of providing concrete, useful guidance from their standpoint.

Video by:
No items found.