Six Life Lessons You Didn’t Learn From Your OR Program

by Pete Cacioppi

Opex Analytics
The Opex Analytics Blog
4 min readMay 16, 2019

--

Mike Watson and I recently presented a Gurobi Webinar entitled Six Life Lessons You Didn’t Learn From Your OR Program. The two of us have more than four decades of shared work experience (including several years as colleagues), and this talk crystallized some ideas we’ve been batting around since the Clinton administration. Although our presentation was too wide-ranging to be summarized with a single theme, we always kept in mind the idea that formulating the right equations is just one of many challenges in a successful OR engagement.

Watch the recording of the Gurobi webinar above.

Lesson 0 — Users Like a Nice Interface

(We cheated a bit and added an extra warm-up lesson that wasn’t part of our six.)

It’s not easy to build a GUI around your optimization engine. There’s no simple, free framework for standing up a data processing model as a user-friendly business tool. In our talk, we presented the look and feel of apps deployed on Opex Enframe, which we think follow Alan Cooper’s maxim that software should be “respectful, generous, and helpful.”

Lesson 1 — Don’t Let Users Get Themselves into Trouble

Although it’s human nature to at least try to give users exactly what they ask for, this is not always a wise business practice. Optimization engines like Gurobi are unable to efficiently solve all possible mixed-integer programming models. Users rely on domain experts to guide them towards realistic modeling that can still add meaningful business value.

Lesson 2 — Be Prepared (Not Proactive) to Run Fast

The runtime of your computer program is best assessed with respect to real world data. You can profile your code to reveal a performance bottleneck, but you should avoid the “analysis paralysis” of trying to proactively make every line of code as fast as possible. Instead, just be prepared to improve your program’s performance as needed. Specifically, you can learn how to create a runtime profile, or how common performance-based idioms are handled in your programming language.

Lesson 3 — Be Proactive with Bugs

Be as proactive as possible to protect your users from buggy code. This strategy is often summarized as “go slow to go fast.” The presence of undetected bugs, however small, often creates significant slowdowns for your entire team. Of particular relevance to optimization engines is the development of a data suite that allows for regression testing. We recommend the unittest package and the Jenkins server for this purpose.

Lesson 4 — Be Paranoid About Solver Failures

Users are never happy when a solve fails without providing any useful information. A relevant hint that helps diagnose why the failure occurred can be a boon to user productivity. For this reason, a developer should be both proactive by building checks for dirty data, and prepared by developing code for hint generation in response to real-world infeasibilities. You should never assume the user will respect the data integrity rules your engine requires. Instead, view pre-solve data checking as an opportunity to provide critical information regarding data integrity.

Lesson 5 — You Will Be Swimming in Data

An optimization engine is just another tool used to generate insights from data. In order to troubleshoot infeasible models and diagnose strange results, you will need to develop the skills to analyze data quickly and efficiently. Inordinate amounts of time can be saved by implementing a few simple practices, like renaming data labels to be more human-readable, or using cascading deletes to shrink down a data set. The design of your model should also be realistic about what sort of data is readily available.

Lesson 6 — Take Advantage of Modern Tools, and Don’t Be Afraid to Learn New Ones

As technology evolves, an app might need to be migrated from an older language or platform to something newer. While such work doesn’t add new features, it typically pays for itself in terms of long-term developer productivity and user value. We’re excited about Python’s emergence as a common language for both developers and consultants. Python is an excellent fit for both building industrial-grade applications and exploring a dataset via tools/packages such as Jupyter and pandas. That said, the only constant is change, and a Python-focused organization still needs to keep abreast of the newest tech.

Opex Analytics has a deep background in optimization technologies. Both in conjunction with advanced machine learning techniques and as a standalone solution, the value provided by mathematical optimization extends to a vast array of enterprise problems businesses face today. As a premier partner of Gurobi, we enjoy providing clients with powerful and innovative artificial intelligence solutions built upon the Optimization Solver.

Gurobi strives to help companies make better decisions through the use of prescriptive analytics. They provide the best math programming solver available, as well as distributed optimization, optimization in the cloud, and outstanding support. Gurobi is committed to improving solver performance and developing tools to help users solve their problems with ease.

_________________________________________________________________

If you liked this blog post, check out more of our work, follow us on social media (Twitter, LinkedIn, and Facebook), or join us for our free monthly Academy webinars.

--

--