[Scip] assert(SCIPsetIsFeasPositive(set, rayscale));

Sebastian Ruther Sebastian.Ruther at uon.edu.au
Mon Aug 29 10:43:17 MEST 2011


  Hello Ambros,

On 27/08/2011 1:29 AM, Ambros Gleixner wrote:
> Hi Sebastian,
>
> so it looks like CPLEX returns an unbounded ray which SCIP finds invalid
> because one variable is at its upper/lower bound and the ray coordinate
> is positive/negative for this variable.  Hence, rayscale, i.e. the
> maximum steplength along the ray until a variable or constraint hits its
> bounds is 0. (In theory, it should be infinite, numerically it is a
> large value.)
>
> If the LP contains only relaxed binary variables then the LP should
> never be unbounded. You could try to dump the LP by adding
>
>     SCIP_CALL( SCIPlpiWriteLP(lp->lpi, "unbounded.lp") );
>
> to the top of function SCIPlpGetUnboundedSol and have a look which
> bounds the variables have; maybe try to solve it using the CPLEX shell,
> seeing what happens.
>
> If you want a workaround for now: From your log output it looks like the
> LP causing this problem is not a node relaxation but an LP with modified
> objective function from the feaspump heuristic. If you can do without
> it, deactivate the feasibility pump:
>
>     SCIP_CALL( SCIPsetIntParam(scip, "heuristics/feaspump/freq", 0) );
Setting it to 0 doesn't change much. When I set it to -1 some instances 
solve. Some however just move the issue to a different heuristic. The 
call stack is below. So I guess I have to resolve this issue or disable 
possibly all heuristics. I added what you proposed above. Looks like the 
.lp does not have any variable bounds. I'm sending you the file 
separately. Solving with CPLEX returns: "Primal unbounded due to dual 
bounds, variable 't_w_009_0034'.
Presolve - Unbounded or Infeasible"

The w variables are binary and I include lazy upper bounds for them. 
Just to make sure: we only need lazy bounds for upper bounds right?
The .lp file should display bounds right? Why aren't there any?

Cheers,
Sebastian




      binscip.exe!SCIPlpGetUnboundedSol()  Line 13531 + 0x34 bytes    C
      binscip.exe!SCIPlpSolveAndEval()  Line 12259 + 0x1d bytes    C
      binscip.exe!SCIPsolveDiveLP()  Line 15130 + 0x96 bytes    C
      binscip.exe!heurExecRootsoldiving()  Line 476 + 0x65 bytes    C
      binscip.exe!SCIPheurExec()  Line 396 + 0x2f bytes    C
      binscip.exe!SCIPprimalHeuristics()  Line 220 + 0x56 bytes    C
      binscip.exe!SCIPsolveCIP(const __int64 blkmem)  Line 3360 + 0x54 
bytes    C
      
binscip.exe!SCIPsolve(std::_Vector_iterator<std::_Vector_val<SCIP_Var 
*,std::allocator<SCIP_Var *> > > (__int64) scip, unsigned int restart)  
Line 6827 + 0x11f bytes    C
      binscip.exe!runSCIP(int argc, char * * argv)  Line 265 + 0xa 
bytes    C++



> ambros
>
>
> Am 26.08.2011 16:34, schrieb Sebastian Ruther:
>> Hello Ambros,
>>
>> I get the same error. However, before I was not able to see the
>> values of "set" and rayscale. Now my debugger says that the two
>> values that are compared are set->num_feastol =
>> 9.9999999999999995e-007 and rayscale = 0.0.
>>
>> Sebastian ________________________________________ From: Ambros
>> Gleixner [gleixner at zib.de] Sent: 26 August 2011 22:44 To:
>> scip at zib.de; Sebastian Ruther Subject: Re: [Scip]
>> assert(SCIPsetIsFeasPositive(set, rayscale));
>>
>> Hi Sebastian,
>>
>> could you try with the attached lp.c?  I added some asserts to
>> narrow down the source of the problem.
>>
>> ambros
>>
>>
>> Am 26.08.2011 14:22, schrieb Sebastian Ruther:
>>> Hello,
>>>
>>> I have had this error for a long time now but usually had more
>>> pressuring issues. However now I get stuck at this. Almost all of
>>> my instances produce this error.
>>>
>>> assert(SCIPsetIsFeasPositive(set, rayscale)); line 13531 in lp.c
>>>
>>> Note that I am using SCIP 2.0.0 with CPLEX 12.3.
>>>
>>> I dumped the master problem and solved it with CPLEX and that works
>>> fine.
>>>
>>> The variables are all binary (but of course they do get relaxed),
>>> all constraint coefficients are 1, rhs between 0 and 30 and
>>> objective function coefficients range from 100 to 9555.
>>>
>>> The call stack is:
>>>
>>> msvcr100d.dll!_wassert(const wchar_t * expr=0x0000000140990630,
>>> const wchar_t * filename=0x0000000140990610, unsigned int
>>> lineno=13531) Line 153    C binscip.exe!SCIPlpGetUnboundedSol()
>>> Line 13531 + 0x34 bytes    C binscip.exe!SCIPlpSolveAndEval()  Line
>>> 12259 + 0x1d bytes    C
>>>> binscip.exe!SCIPsolveDiveLP()  Line 15130 + 0x96 bytes    C
>>> binscip.exe!heurExecFeaspump()  Line 943 + 0x1c bytes    C
>>> binscip.exe!SCIPheurExec()  Line 396 + 0x2f bytes    C
>>> binscip.exe!SCIPprimalHeuristics()  Line 220 + 0x56 bytes    C
>>> binscip.exe!priceAndCutLoop(const __int64 blkmem=7386848)  Line
>>> 1600 + 0x50 bytes    C binscip.exe!solveNodeLP(const __int64
>>> blkmem=7386848)  Line 1992 + 0xef bytes    C
>>> binscip.exe!solveNode()  Line 2647 + 0xef bytes    C
>>> binscip.exe!SCIPsolveCIP(const __int64 blkmem=7386848)  Line 3264 +
>>> 0x101 bytes    C
>>>
>>> binscip.exe!SCIPsolve(std::_Vector_iterator<std::_Vector_val<SCIP_Var
>>>
>>>
> *,std::allocator<SCIP_Var *>  >  >  (__int64) scip=0x000000000031f3f0,
>>> unsigned int restart=0)  Line 6827 + 0x11f bytes    C
>>> binscip.exe!runSCIP(int argc=1, char * * argv=0x0000000000707a20)
>>> Line 264 + 0xa bytes    C++ binscip.exe!main(int argc=1, char * *
>>> argv=0x0000000000707a20) Line 356 + 0x14 bytes    C++
>>> binscip.exe!__tmainCRTStartup()  Line 555 + 0x19 bytes    C
>>> binscip.exe!mainCRTStartup()  Line 371    C
>>>
>>>
>>> Thank you for your help.
>>>
>>> Sebastian
>>>
>>> _______________________________________________ Scip mailing list
>>> Scip at zib.de http://listserv.zib.de/mailman/listinfo/scip
>> -- ____________________________________________________________
>> Ambros M. Gleixner Zuse Institute Berlin - Matheon - Berlin
>> Mathematical School http://www.zib.de/gleixner
>>



More information about the Scip mailing list