bug-glpk
[Top][All Lists]
Advanced

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

[Bug-glpk] Re: error in mip presolver


From: Andrew Makhorin
Subject: [Bug-glpk] Re: error in mip presolver
Date: Fri, 20 Jul 2007 16:31:32 +0400

Friday, July 20, 2007, 1:49:19 AM, you wrote:

> Andrew,

> Here is the file from the model in the state where it has the problem.

> Graham

> On 7/19/07, Graham Rockwell <address@hidden> wrote:Andrew,

> Sorry I must have messed up attaching the file.  I actualy made
> some changes to model it seems and now I cant reproduce the error. 
> If it crops up agian I will be more carefull in saving the mps
> file.  Sorry for wasting your time here.

> Graham.

> On 7/19/07, Andrew Makhorin <address@hidden> wrote:> The following
> free mps file generates the following error when I
>> run intopt on it but now when I run regular integer analysis on it.
>> I am not quite sure what is going on here. Usualy this error in
>> previous versions of the software looks to be related to bad
>> scaling, but my problem is fairly well scaled 1->100 mostly around
>> 10, and I used the scaling function of the software. The problem in
>> interger has not feasable solution, which is fine, but I need the
>> software not to crash when it encounters this problem as I am
>> running it in serial

>> lpx_write_freemps: writing problem data to `tempFile.mps #39;...
>> ipp_basic_tech: 96 row(s) and 28 column(s) removed
>> ipp_reduce_bnds: 4095 pass(es) made, 4105 bound(s) reduced
>> ipp_basic_tech: 0 row(s) and 0 column(s) removed
>> ipp_reduce_coef: 2 pass(es) made, 5 coefficient(s) reduced
>> lpx_intopt: presolved MIP has 27 rows, 48 columns, 81 non-zeros
>> lpx_intopt: 9 integer columns, all of which are binary
>> lpx_adv_basis: size of triangular part = 27
>> Solving LP relaxation...
>> 236: objval = nan infeas = nan (0)
>> Assertion failed: spx->p != 0; file glpspx02.c; line 668

> Please provide me with the mps file. I need to look at it.

> Andrew Makhorin

Thank you for the bug report.

The error happens in the mip presolver, namely, in the routine
which reduces bounds of variables. The mip is infeasible, so the
routine decreases the upper bound of some column many times that
leads to floating-point overflow.

To fix the error please replace the fragment (lines 786-788,
file glpipp02.c, routine reduce_bounds):

         /* if the change is significant, perform replacing */
         if (flag)
         {  switch(ipp_tight_bnds(ipp, col, lb, ub))

by the following one:

         /* if the change is significant, perform replacing */
         if (flag && lb < +1e15 && ub > -1e15)
         {  switch(ipp_tight_bnds(ipp, col, lb, ub))

This patch is not very elegant, however, it is still unclear to me
how to avoid the error in a more correct way.


Andrew Makhorin





reply via email to

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