My ZIB Visit

Some memories of my Berlin visit to ZIB for a research project on SCIP.

My ZIB Visit
Photo by Claudio Schwarz on Unsplash

Since last year's MIP computational competition, I have mostly focused on writing activities. I finished writing a couple of papers and my thesis. But, being away from 'real' research work was quite unsatisfying. I thought of working on a project of my own, not related to my Ph.D. Some ideas that failed during the competition were good candidates for such research projects. But that involved working on SCIP's inner code layers.

SCIP is an open-sourced optimization solver that has been around for a couple of decades now. Naturally, the code base is huge. On top of that, it does not just solve MIPs; it also solves MINLPs (mixed integer non-linear programs) and constraint programs. A single solver doing all that, plus a couple of decades' worth of experimental code, makes it too complex. I wanted to try one of my ideas on it anyway. The problem was that I did not understand many parts of their code base. In fact, I failed to install SCIP on the university server where I wanted to do benchmarks. On my own, the development process would have been too slow.

So, during the MIP conference last year, I talked about my project idea to some people and made a reasonable case to visit ZIB (Zuse Institute Berlin, where SCIP is mostly developed). I hoped that just being around SCIP developers would make the development process fast. I convinced them to invite me to visit ZIB for a month and made them pay major parts of my expenses.

I had a couple of other goals as well. I wanted to learn SCIP's architecture better so I could do future projects on my own. Some of the commercial solver companies (Gurobi, Xpress, COPT) also have their offices in the ZIB building, so meeting them in person can help me with a future job opportunity there. Besides, it gets too cold in February here in Montreal ;).

Finally, I reached Berlin on the 1st of February. The temperature was certainly higher than in Montreal, but it was way too windy there. So, I ended up wearing the thick jackets anyway. The good thing was that Netflix in Berlin had Friends and Big Bang Theory.

People at ZIB are quite friendly and welcoming. During my visit, I ended up disturbing many of them, but they seemed happy to help me. Ambros took me (along with Suresh and Ksenia) to an Indian restaurant at the beginning of my stay. Just for a month-long visit, they created my account in their system and even updated the nametags on the office I was working from! My PhD office at CERC doesn't have a name tag even after 4 years. These are all small things, but they really made me feel welcome.

As for the project, I had my regular ups and downs. One day, I saw a small improvement in the benchmarks. The next day, I discovered a bug in my code that rendered all previous benchmarks useless. Oh, I missed those solver development days! I thought of working on some other project idea in parallel since the main project was not so promising. But I never really started the second project. I ended up working on the main project idea to make it work. The theory behind that idea had almost everyone convinced that it would improve the solver, but usually, it takes a lot of effort to make anything work in practice. 

Near the end, I could see some consistent improvement, but it was within the noise margin. (Sometimes, the solver performance deviates because of the noise during computation.) So, convincing others that my project idea had worked was not easy. Finally, they pointed me to a better tool for observing all relevant benchmark numbers, and there, I could prove a clear improvement in one (important) metric. I was super happy! Initially, the benchmarks were performed in a theoretical setting where almost all solver components were turned off except the one under question. The improvement carried on when I turned everything on in the solver. Hence, the improvement in the solver is conclusive now. There are still a few extensions of that idea to work on. I will do that from Montreal now that I know the development process. I will be presenting this work at the upcoming ISMP conference in Montreal.

Most of my goals for this trip were achieved. I got to work closely with SCIP developers. I learned a lot about the solver architecture and can now work on it by myself (mostly). I learned a simpler way of installing it, which will help me run benchmarks on various computational setups. I met a few people from commercial solvers. Unfortunately, none of them have open positions at this time. However, they all think that my profile is quite strong. Some of them are even pushing upper management to hire me anyway. We will see how that goes!

Overall, I enjoyed the trip. I had visited Berlin before when I was living in Paris. I loved the history walking tour, which I got to do again during this visit. I got to meet my friend from BITS, Sahil, after a long time. Managed to get a few more SCIP developers to subscribe to my YouTube channel. On the day of my flight, another good news came in. My project had accidentally improved on MINLP benchmarks as well. A cherry on top.

Here are some images from my trip. 

  1. Me presenting my work to SCIP developers. I am wearing a hat during my presentation (to get soviet era type feeling).
  2. The benches in the lecture hall had this message for discouraging drug usage. So European!
  3. Berlin Wall
  4. Hitler's death place, that is now a parking lot.
  5. Holocaust memorial