bug-glpk
[Top][All Lists]
Advanced

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

Re: [Bug-glpk] GLPK crash with --intopt option


From: Andrew Makhorin
Subject: Re: [Bug-glpk] GLPK crash with --intopt option
Date: Wed, 30 Apr 2008 21:21:52 +0400

Thank you for the bug report.

> When running the glpsol command line for the MIP model.mps everything is
> OK, optimal solution is found.
> But when I launch it with the --intopt option, GLPK crashes (see 
> crash.txt file).

> It seems that for a column, ipp_tight_bnds() function returns 0, because
> bounds are unchanged, which is not alloweed in reduce_bounds().
> Why is it an error ?

In your instance there are some integer variables, which have no upper
bound and at the same time have large constraint coefficients. This
causes an excessive round-off error on computing implied upper bounds
of such variables in the mip preprocessor.

The bug will be fixed in a next version of the package.

If you need to fix the bug right now, please replace lines 798-813 in
file glpipp02.c:

         {  switch(ipp_tight_bnds(ipp, col, lb, ub))
            {  case 0:
                  /* bounds remain unchanged; can never be */
                  xassert(ipp != ipp);
               case 1:
                  /* bounds have been changed */
                  break;
               case 2:
                  /* new bounds are primal infeasible */
                  return 1;
               default:
                  xassert(ipp != ipp);
            }
            /* activate x[j] for further processing */
            ipp_enque_col(ipp, col);
         }

by the following fragment:

         {  switch(ipp_tight_bnds(ipp, col, lb, ub))
            {  case 0:
#if 0
                  /* bounds remain unchanged; can never be */
                  xassert(ipp != ipp);
#else
                  /* can be if lb or ub is large and x[j] is integer */
                  break;
#endif
               case 1:
                  /* bounds have been changed */
                  /* activate x[j] for further processing */
                  ipp_enque_col(ipp, col);
                  break;
               case 2:
                  /* new bounds are primal infeasible */
                  return 1;
               default:
                  xassert(ipp != ipp);
            }
         }

> I worked with GLP 4.28 on windows XP

> Thank you very much for giving me an explanation, and best regards,








reply via email to

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