Coluna.jl
Coluna.jl copied to clipboard
Bug when `<DB= Inf>` in colgen
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>
This happens when the strong branching algorithm branches on a node that has been proved infeasible.
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>
Fixed in the code but needs test