An update on SCIP
TL;DR: A quick update on what is on the horizon for SCIP.
SCIP has been a cornerstone of ZIB’s mathematical optimization department for many years. It is probably (one of) the fastest and most comprehensive academic solvers for MIPs and several related optimization paradigms. Certainly it is the fastest MIP and MINLP solver that is fully transparent and accessible in source code. This impressive effort is due to a great team of researchers and developers, both at ZIB and throughout the world, that has been pushing SCIP to the cutting-edge.
Over the last 5 years, two people have strongly shaped the progress of SCIP at ZIB: Thorsten Koch on the organizational side and Ambros Gleixner as head of technical research & development. In Fall of 2019 I moved to ZIB. With this move I also took the lead of the overall SCIP project among several other new responsibilities and I would like to take the opportunity to thank Thorsten Koch for his great leadership of the SCIP project over the last years. I am quite excited to have the opportunity to shape the future of SCIP together with the rest of the SCIP team and in view of this I would like to share some updates. In a nutshell these changes can be summarized as follows:
- Making SCIP more open
- Making SCIP more accessible
- Making SCIP more inclusive
While not everything can be achieved in a one step, this overview might give you an idea of what is on the horizon.
We also have some very exciting new research directions and results, however I am going to talk about some of that work elsewhere in a more research-focused post.
SCIP 7 release
Before I am going to talk about some upcoming things, I wanted to briefly mention the recent release of SCIP 7, with many new features. Just to name two, there is a new parallel preprocessing library PaPILO and we now have tree-size prediction built-in:
On average, the best method estimates B&B tree sizes within a factor of 3 on the set of unseen test instances even during the early stage of the search, and improves in accuracy as the search progresses. It also achieves a factor 2 over the entire search on each out of six additional sets of homogeneous instances we have tested.
#firstSeenInSCIP
Both for MIP and MINLP, SCIP 7 is on average 1.36x faster than SCIP 6 on hard instances, i.e., on instances that take at least 100 seconds to solve. You can check out the latest release on the SCIP homepage.
Interfaces
SCIP already supports a wide variety of interfaces. In the future we will further integrate SCIP with those interfaces and in particular we will improve integration with Python through PySCIPOpt and Julia through SCIP.jl. These two will become true first-class interfaces. Moreover, we will maintain several other interfaces depending on demand etc.
Distribution
We intend to extend the distribution mechanisms for SCIP. One very high priority is distribution through the conda package manager, so that the SCIP optimization suite and PySCIPOpt can be basically installed with a simple conda install pyscipopt
. We are also exploring to make SCIP available in Google Colab; the conda integration might make this a trivial exercise.
Tutorials
Many of you have experienced that SCIP is a very complex software and getting started can be a nontrivial endeavor, just because of its high flexibility as a framework, which is fully exposed through its API. At the same time, SCIP can be used out-of-the-box as a powerful black-box solver. However, many of you have suffered from the current lack of good entry level documentation. To alleviate this in the short term, we are in the process of writing a tutorial specifically targeting the “black box user + SCIP” via PySCIPOpt. In the mid term we will try to offer more resources to people that use SCIP mainly as a black box solver; see the Website section below.
New platforms
We intend to support several new platforms for the SCIP Optimization Suite. As you might have already seen from a post sometime back one such platform is ARM. This includes the RaspberryPi but also many cell phone and mobile architectures that then can potentially run SCIP. Moreover, we also plan a dockerized version of SCIP for deployment in cloud computing environments. In fact if you want to give a preliminary build a spin: docker pull scipoptsuite/scipoptsuite:7.0.0
; SCIP Optimization Suite 7.0.0 and PySCIPOpt 3.0.0 on slim buster with Python 3.7—feedback appreciated.
A little further down the road, we will be likely also supporting RISC-V once stable development systems are available and we are currently evaluating Microsoft’s WSL in particular together with Ubuntu on WSL as an alternative deployment mode for Windows.
Decentralized Development
SCIP has had a strong decentralized development component and this trend is likely to increase further in the future with many more non-ZIB developers contributing to SCIP. In Germany alone, we have 4 development centers with FAU Erlangen-Nürnberg, TU Darmstadt, RWTH Aachen, and the Zuse Institute Berlin. On top of that we have a large number of international contributors.
This decentralized development setup with many stakeholders and core developers outside ZIB will be also more strongly reflected in SCIP’s governance; more on this soon.
Website
SCIP will move to http://www.scipopt.org as a new home and one-stop-shop; should be online in a few days. Moreover, we will also separate the web site into two parts in the next few months: one for SCIP users and one for SCIP developers.
Licensing
There are some license changes on the horizon as well. Short version is that we intend that SCIP will be free for non-commercial use in general and we are currently discussing how to deal with commercial use. One model might be to have a community edition under some permissible open source license and a professional edition for commercial use. Obviously this is quite a complicated matter and it will take some time to iron out all the details and settle on a final setup.
In the meantime, if you want to use SCIP, send an email to licenses@zib.de and we will work something out in the spirit of the above.
Hiring
We are looking to grow the SCIP developer team. If you want to contribute to the future development of SCIP and want to get involved please get in touch.