bug-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-glpk] Bug in glpk 4.21?


From: Andrew Makhorin
Subject: Re: [Bug-glpk] Bug in glpk 4.21?
Date: Sat, 1 Sep 2007 00:12:19 +0400

> For the attached testcase, we obtain that

> $ glpsol p0033.mps --max -o output.gomory --gomory

> gives an optimum of 5201, while

> $ glpsol p0033.mps --max -o output.intopt --intopt

> gives an optimum of 5131.  The optimum 5201 is confirmed
> by a completely different MIP solver.
> Does this behavior indicate there is a bug somewhere?

Thank you very much for your bug report.

The bug appears only in 4.21 in the mip preprocessor (which is part
of the routine glp_intopt).

To fix the bug please replace the fragment in the routine
ios_preprocess_node (file src/glpios02.c) between #if 0 and #else
by the corresponding fragment between #else and #endif as follows:

      /* determine original row bounds */
      L = xcalloc(1+m, sizeof(double));
      U = xcalloc(1+m, sizeof(double));
#if 0
      switch (mip->mip_stat)
      {  case GLP_UNDEF:
            L[0] = -DBL_MAX, U[0] = +DBL_MAX;
            break;
         case GLP_FEAS:
            switch (mip->dir)
            {  case GLP_MIN:
                  L[0] = -DBL_MAX, U[0] = mip->mip_obj;
                  break;
               case GLP_MAX:
                  L[0] = mip->mip_obj, U[0] = +DBL_MAX;
                  break;
               default:
                  xassert(mip != mip);
            }
            break;
         default:
            xassert(mip != mip);
      }
#else
      L[0] = -DBL_MAX, U[0] = +DBL_MAX;
#endif
      for (i = 1; i <= m; i++)
      {  L[i] = glp_get_row_lb(mip, i);
         U[i] = glp_get_row_ub(mip, i);
      }
      /* determine original column bounds */

and then compile the package as usual.


Andrew Makhorin





reply via email to

[Prev in Thread] Current Thread [Next in Thread]