coin-or / Bcp

Branch-Cut-Price Framework
Other
26 stars 13 forks source link

Testing if basis is available #4

Closed svigerske closed 5 years ago

svigerske commented 5 years ago

Issue created by migration from Trac.

Original creator: fmargot

Original creation time: 2006-06-29 17:19:16

Assignee: somebody

Version:

CC: fmargot@andrew.cmu.edu

Keywords: basisIsAvailable

In file BCP_lp_main_loop.cpp, around line 185:

if (BCP_lp_fix_vars(p)) {

should be

if ((BCP_lp_fix_vars(p) || (!p.lp_solver->basisIsAvailable()))) {

This is important when BCP works with Cplex and uses cut generators requiring access to the optimal basis. This is not necessary when using Clp. The difference is in the implementation of OsiCpx and OsiClp. In OsiCpx, any change of bounds on the variables makes all information about the optimal basis disappear. For OsiClp, it remains there and can be used if primal feasibility is not lost.

(changed by ladanyi at 2006-07-03 20:58:30)

svigerske commented 5 years ago

Comment by ladanyi created at 2006-07-04 03:43:28

I have changed it as a temporary fix, but I think it's an unnecessarily strong response to the problem.

Even if the basis is gone there are only two things that can be affected.

  1. Some cut generators that need the basis (like Gomory). This may or may not be a big deal.
  2. The basis is extracted if strong branching is done. This is the bigger problem, but simply resolving before strong branching (if there is no basis) should fix this.
svigerske commented 5 years ago

Comment by ladanyi created at 2006-07-04 03:43:28

Resolution: fixed