Scippy

GCG

Branch-and-Price & Column Generation for Everyone

Release notes for GCG 0.4

GCG 0.4

design

  • working SCIP represents the original problem
  • read in problem is standard format (e.g., .lp-file, .mps-file) and corresponding blk-file
  • the master problem is represented by a relaxator, which replaces the LP-solving
  • separation is done by a separator included in the master SCIP, which calls the SCIPseparateSol() method in the original SCIP
  • branching is done simultaneously in the master and in the original SCIP
  • variables in the master are extreme points of conv(X) (and extreme rays, but functionality currently not implemented) -> convexification approach
  • many identical pricing problems -> fat too much effort for pricing, especially farkas pricing!
  • 2 constraint handler assure that nodes in the master SCIP are linked to nodes in the original SCIP and vice versa
  • branching rules are implemented as branching rules in the master that have to define the additional callbacks specified in "type_branchgcg.h"

features

  • in blk-file constraints can be forced to be copied to the master problem; all other constraints are added to a block, if they only contain variables of this block
  • added possibility to use discretization approach, variables in the master then represent integer points in X, integrality in the master is demanded
  • identification of identical blocks -> break symmetrie in the master
  • 2 branching rules implemented so far: branching on original variables (not possible if variable belongs to a block that has similar blocks in the problem), using pseudocost values to choose the variable to branch on ryan-foster type of branching for identical blocks with set partitioning structure
  • added GCGs own display plugin showing the number of LP iterations, of constraints, variables and cuts in the master