This is a short post on the cut selection mechanism in the mixed-integer optimization solver SCIP and things I used for its implementation in the SCIP.jl Julia wrapper. You can check out the corresponding pull request for completeness.
Table of Contents Callbacks? SCIP plugins Cut selection Cut selector interface Some C-Julia magic Callbacks? The space of mixed-integer optimization solvers is mostly divided between commercial, closed-source solvers and academic solvers open in source code.

Today was the release of SCIP.jl v0.11, the first release switching to SCIP 8. The major change in this (massive) release was the rewrite of the nonlinear optimization part, using a so-called expression framework. The rewrite of the wrapper had some fairly tedious parts, debugging C shared libraries is quickly a mess with cryptic error messages. But the nonlinear rewrite gave me the opportunity to tweak the way Julia expressions are passed to SCIP in a minor way.

It has been about a year since I joined the Zuse Institute to work on optimization methods and computation. One of the key projects of the first half of 2021 has been on building up FrankWolfe.jl, a framework for nonlinear optimization in Julia using Frank-Wolfe methods. You can find a paper introducing the package here. This was an opportunity to experiment with different design choices for efficient, scalable, and flexible optimization tools while keeping the code simple to read and close to the algorithms.

Differentiating set projections.

The Pandora box from simple set membership.

Constrained optimization on a fundamental engineering problem

What can automated gradient computations bring to mathematical optimizers, what does it take to compute?

When going native is the only option, at least do it once and well.

Constructors are a basic building block of object-oriented programming (OOP). They expose ways to build specific types of objects consistently, using arbitrary rules to validate properties. Still, constructors are odd beasts in the OOP world. In Java, this is usually the first case of function overloading that learning programmers meet, often without knowing the term. An overloaded constructor is shown in the following example:
class Car { private Motor motor; public Car(Motor m) { this.

Compiling mathematical optimization problems in a multiple-dispatch context.

© 2023 Mathieu Besançon · Powered by the Academic theme for Hugo.