BaPCod

A generic Branch-and-Price Code

Installation
BaPCod is a C++ library implementing a generic branch-cut-and-price solver. BaPCod is a prototype academic code which offers a “black-box” implementation of the method:
  • the input is the set of constraints and variables of the MIP in its natural/ compact formulation;
  • the user specifies which of these constraints and variables define the subsystems on which the decomposition is based (it is handy to test different decompositions);
  • the reformulation is automatically generated by the code, without any input from the user to define master columns, their reduced cost, pricing problem, or Lagrangian bound;
  • a default column generation procedure is implemented that relies on an underlying LP/MIP solver to handle master and subproblem but the user can define a specific solver for the pricing problem;
  • a branching scheme that preserves the pricing problem structure is offered by default, it runs based on priorities and directives specified by the user on the original variables;
  • the user can specify custom cut generation callbacks and custom branching callbacks;
  • preprocessing, restricted master and diving primal heuristics, some stabilization techniques, and strong branching are available for use;
  • one can use the VRPSolver extension, which includes a resource constrained shortest path problem (RCSP) solver, and some families of robust and non-robust cut separation and branching functors; these components can be used to devise state-of-the-art branch-cut-and-price algorithms for vehicle routing and related problems.