Transitioning from a Modeling Language to a Programming Language
Starting in 2015, and going full-scale in 2016, RWTH Aachen University in Germany transitioned from teaching optimization modeling to well over 1,500 students per year using an algebraic modeling language to using Python and the Gurobi solver. The decision was not easy because modeling languages are established in many businesses and have their advantages. However, we found that using a general programming language like Python in combination with Gurobi has many more advantages.
To start with, Python is a very easy to understand and popular language that lends itself well to modeling. This popularity is in part due to the large number of libraries available from the very large communitiy of Python developers. As a result, compared to a modeling language, and even other programming languages, working with data is much easier, as is visualizing and evaluating solutions. In addition, adding the little “subroutine here and there” that comes in handy when solving particular optimization problems with customized approaches is no longer a pain. Perhaps most importantly, teaching using a combination of a programming language like Python and a solver like Gurobi appears to be much more consistent both with where industry is headed and consistent with our focus on preparing our students to use the tools they are likely to encounter in Industry.
Developing a Systematic Approach to Modeling
We think that being able to model optimization problems is an enormous asset not only for mathematics and computer science students but also for engineers and business/economics students. We see a lot of value for a broad range of students in being able to know how to “think” models, “feel and understand” models, rather than just reproduce templates. Modeling is an intrinsically creative process. Learning this can be hard for some students, depending on their backgrounds, but offers significant benefits for them later on in both academia and industry.
As a result, a core priority for us is to focus on teaching systemactic approaches to modeling. For example, in integer programming, this may contain rather simple tasks, like given a concrete and small instance, with all the variables and their meanings, formulate a capacity constraint. Or a selection among alternatives. Standard tasks that often occur during the development of models. The approaches used can scale to more difficult tasks and models, and also practical requirements such as avoiding infeasible solutions, creating soft constraints, etc. To help facilitate this, we have built a teaching platform that in its current, basic version, is capable of processing models that use variables we prescibe. The system automatically evaluates the model and gives the student useful feedback.
Significant Early Success
So far, we have found the decision to switch to using Gurobi with the Python programming language has allowed us to meet our learning goals for the students and has been very well received by the students. They are not only learning how to think about modeling, but also how to build models using tools they are likely to encounter both later in their academic career and in industry.
RWTH Aachen University
We teach operations research here in Germany to some 1600 students per year; students come from mathematics, computer science, business administration, business/industrial engineering. There are currently five courses per year taught across the Bachelor’s and Master’s level requiring students to work both individually and in small groups.
In the compulsory courses, the main focus is on modeling with networks and both linear and integer programming. In the more advanced courses, students need to deal with “the dirt” of practical optimization problems. These include starting with a sloppy problem statement, working withproblematic data, defining the approach to modeling, choosing algorithms, design and implementation, solving and then both visualization and discussion / verification with the problem owner.