Coluna.jl icon indicating copy to clipboard operation
Coluna.jl copied to clipboard

Bug when `<DB= Inf>` in colgen

Open guimarqu opened this issue 3 years ago • 3 comments

The algorithm should stop but it's not the case.

  <it=  1> <et=432.10> <mst= 0.90> <sp= 0.65> <cols=20> <al= 0.50> <DB=       Inf> <mlp=168029.3386> <PB=12036906.4398>
  <it=  2> <et=433.05> <mst= 0.30> <sp= 0.64> <cols=19> <al= 0.55> <DB=       Inf> <mlp=167668.1735> <PB=12036906.4398>
  <it=  3> <et=433.86> <mst= 0.18> <sp= 0.63> <cols= 5> <al= 0.45> <DB=       Inf> <mlp=167441.7130> <PB=12036906.4398>
  <it=  4> <et=434.89> <mst= 0.30> <sp= 0.72> <cols= 2> <al= 0.35> <DB=       Inf> <mlp=167299.5551> <PB=12036906.4398>
  <it=  5> <et=435.82> <mst= 0.11> <sp= 0.80> <cols= 1> <al= 0.25> <DB=       Inf> <mlp=167204.2395> <PB=12036906.4398>
  <it=  6> <et=436.86> <mst= 0.06> <sp= 0.97> <cols= 6> <al= 0.33> <DB=       Inf> <mlp=167199.8637> <PB=12036906.4398>
  <it=  7> <et=439.13> <mst= 0.07> <sp= 2.19> <cols= 1> <al= 0.00> <DB=       Inf> <mlp=167199.2848> <PB=12036906.4398>
  <it=  8> <et=441.46> <mst= 0.06> <sp= 2.25> <cols= 0> <al= 0.00> <DB=       Inf> <mlp=167199.2843> <PB=12036906.4398>

guimarqu avatar Sep 30 '22 18:09 guimarqu

This happens when the strong branching algorithm branches on a node that has been proved infeasible.

guimarqu avatar Oct 03 '22 10:10 guimarqu

Column generation uses the dual bound of phase 1 as the final dual bound at the node. It's totally wrong. It should only record the dual bound of phase 3 if primal lp solution has no artificial variables or the dual bound of phase 2.

  <it=  1> <et=620.77> <mst= 1.09> <sp= 0.75> <cols=10> <al= 0.50> <DB=18016.9115> <mlp=354156.3056> <PB=8045169.6992>
  <it=  2> <et=621.79> <mst= 0.29> <sp= 0.72> <cols=14> <al= 0.55> <DB=18016.9115> <mlp=321142.6667> <PB=8045169.6992>
  <it=  3> <et=622.72> <mst= 0.20> <sp= 0.71> <cols= 1> <al= 0.60> <DB=77709.2168> <mlp=168800.8384> <PB=8045169.6992>
  <it=  4> <et=623.62> <mst= 0.11> <sp= 0.77> <cols= 5> <al= 0.50> <DB=123197.7405> <mlp=167785.5014> <PB=8045169.6992>
  <it=  5> <et=624.97> <mst= 0.15> <sp= 1.19> <cols=13> <al= 0.40> <DB=150033.7644> <mlp=167767.7918> <PB=8045169.6992>
  <it=  6> <et=626.47> <mst= 0.13> <sp= 1.35> <cols=16> <al= 0.30> <DB=162469.0291> <mlp=167673.9643> <PB=8045169.6992>
[ Info: Column generation algorithm has converged.
# <it=  1> <et=629.21> <mst= 0.82> <sp= 1.73> <cols= 0> <al= 0.00> <DB=119791.2454> <mlp=119791.2454> <PB=8045169.6992>
[ Info: Phase one determines infeasibility.
**** SB Phase 2 evaluation of candidate    j[2,91] (branch         j[2,91]<=1.0), value =   -Inf
SB phase 2 branch on    j[1,31] (lhs=1.9667) : [18385.0110,      -Inf], score =     0.0004
SB phase 2 branch on    j[2,91] (lhs=1.7901) : [18411.3891,      -Inf], score =     0.0004
***************************************************************************************
**** B&B tree node N°21, parent N°19, depth 10, 10 untreated nodes
**** Local DB = 119791.2454, global bounds: [ 18016.9115 , 8045169.6992 ], time = 629.21 sec.
**** Branching constraint: j[2,91]<=1.0
***************************************************************************************
get_ip_primal_bound(node_state) = 8.045169699169243e6
get_ip_dual_bound(node_state) = 119791.24542693794
  <it=  1> <et=632.08> <mst= 0.87> <sp= 1.80> <cols=11> <al= 0.50> <DB=       Inf> <mlp=167673.9643> <PB=8045169.6992>

guimarqu avatar Oct 03 '22 12:10 guimarqu

Fixed in the code but needs test

guimarqu avatar Oct 04 '22 20:10 guimarqu