Scippy

GCG

Branch-and-Price & Column Generation for Everyone

Release notes for GCG 2.0

GCG 2.0.1

features

  • decomposition and pricing problems are permuted when the permutation seed is set
  • progress in dual bound is now displayed while solving the root node
  • pricing solvers can be enabled or disabled via parameter
  • display blocks found for decomposition in statistics
  • new boundtype for fixed original variables due to branching
  • use new GCG column structure instead SCIP solution structure in pricing

code cleanup

  • simplify code in generic branching
  • structure of method branchVar()

bug fixes

  • fix bugs concerning stabilization
  • disable stabilization when linking variables or variables belonging to no block are present
  • CPLEX pricing solver is disabled as it is incompatible with generic branching
  • fix memory issues
  • fix bound propagation bugs
  • fix bug in knapsack solver
  • delete constraints added at presolving after the root node
  • check feasibility of current solution in original problem if this fails in the transformed problem
  • fix wrong aggregation when using bliss
  • print warnings when pricing is aborted
  • fix translation of original solution to master problem when pricing problems are aggregated
  • better handling of infinite objective values in pricing

GCG 2.0

features

  • GCG can now automatically create a decomposition to solve the LP with empty pricing problems. See the cons/decomp/createbasicdecomp parameter
  • GCG can aggregate pricing problems using bliss which enables us to aggregate more pricing problems
  • GCG can solve pricing problems in parallel
  • GCG uses dual variable smoothing to stabilize dual values
  • GCG can branch on integer aggregated problems using Vanderbeck's general branching rule
  • GCG can solve integer knapsack problems as a dynamic program
  • GCG features additional detectors which are able to detect significantly more structures such as staircase structures and problems that can be aggregated
  • improved heuristics
  • copy solutions from original problem to master problem
  • improved handling of compile flags changes such as an automatic recompilation if, e.g., USRFLAGS change
  • new solver for pricing problems that uses CPLEX to solve the MIP (enabled if LPS=cpx)

code cleanup

  • moved some detection methods to a more global scope to make them reusable
  • added testing framework to do regression testing (uses google test)
  • extracted graph methods for reuse
  • branching is now done in the master problem
  • remove code that was never called
  • Rename methods in order to state their intention
  • provide a gcg.h file to easily use the most common methods

bug fixes

  • memory allocation bugs
  • bound change propagation fixes
  • corrected copyright
  • fixed a lot of code checker issues
  • use an event handler to disable the master display
  • override PARASCIP=true if OPENMP=true
  • correct decomp documentation and simplify decomposition interfaces