Installing the bilevel solver MibS with CPLEX

Table of Contents

    MibS is an open-source solver for bilevel optimization.

    The GitHub page explains how to install the default version, which comes with Symphony as the underlying solver. I show here how to install in with CPLEX.

    Installing with CPLEX

    First, get coinbrew. This is a tool that helps install all COIN-OR libraries.

    wget https://raw.githubusercontent.com/coin-or/coinbrew/master/coinbrew

    Then, download MibS with:

    ./coinbrew fetch MibS@1.2

    Next, install MibS with the following options:

    • --with-cplex-incdir= should point to the include directory of CPLEX.
    • --with-cplex-lib= is used to pass linking options necessary for MibS to communicate with CPLEX. The -L flag should point to the CPLEX lib directory. The flags -lm and -lpthread add libraries required by CPLEX.
    • --disable-cplex-libcheck --tests=none disables unit testing. See this GitHub Discussion for details.

    Putting it all together:

    
    ./coinbrew build MibS \
    --with-cplex-incdir=/opt/ibm/ILOG/CPLEX_Studio2211/cplex/include/ilcplex/ \
    --with-cplex-lib="-L/opt/ibm/ILOG/CPLEX_Studio2211/cplex/lib/x86-64_linux/static_pic/ -lcplex -lpthread -lm -ldl" \
    --disable-cplex-libcheck --tests=none
    

    For C++ users, you may want to add --enable-debug if you plan to link directly against MibS and need debugging support.

    The MibS executable is located at ./dist/bin/mibs. You can run it as follows:

    
    ./dist/bin/mibs \
    -MibS_auxiliaryInfoFile /path/to/the/auxilary/file.aux \
    -instance /path/to/the/mps/file.mps.gz \
    -feasCheckSolver CPLEX
    

    For more information, see the official documentation.