[Scip] Strange behavior

Aurélien Questel aurelien.questel at lip6.fr
Wed Jun 20 12:34:33 MEST 2012


Hi,
thanks for the hints.
I had to rename my variables but I've been able to solve my problem without my constraint handler
(via cip format) and it worked fine : 

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 0.03
Solving Nodes      : 1
Primal Bound       : -1.12907528000000e+09 (2 solutions)
Dual Bound         : -1.12907528000000e+09
Gap                : 0.00 %

SCIP> disp sol

objective value:                          -1129075280
y_14_14                                             1 	(obj:-282268820)
y_15_15                                             1 	(obj:-282268820)
y_16_16                                             1 	(obj:-282268820)
y_19_19                                             1 	(obj:-282268820)


It also works during my B&Price if I don't had my constraint handler.
However, it's still doesn't work if I include it.
The scip_check procedure is called only once and gives a good answer : 

check : 
objective value:                          -1129075280
y_17_17                                             1 	(obj:-282268820)
y_18_18                                             1 	(obj:-282268820)
y_19_19                                             1 	(obj:-282268820)
y_20_20                                             1 	(obj:-282268820)
not ok


But I still have the same result, and the corresponding solution isn't checked by my constraint handler : 
violation: right hand side is violated by 280
best solution is not feasible in original problem

All the constraints are created using the following flags : 
SCIP_Bool initial,					TRUE
SCIP_Bool separate,				TRUE
SCIP_Bool enforce,				TRUE
SCIP_Bool check,				TRUE
SCIP_Bool propagate,			TRUE
SCIP_Bool local,					FALSE
SCIP_Bool modifiable,			FALSE
SCIP_Bool dynamic,				FALSE
SCIP_Bool removable,			FALSE
SCIP_Bool stickingatnode			FALSE


And I don't know if that can help,
but it seems that the wrong solution comes from a leaf of the B&B tree.
(SCIPgetSolHeur returns a NULL pointer)

Maybe that's the reason why my constraint handler is not called to check the solution.
However I still don't see why the original constraints are not checked for feasability...

Best,

Aurélien


Le 19 juin 2012 à 13:28, Gerald Gamrath a écrit :

> Hi Aurélien,
> 
> just to clarify how that happens at all: SCIP has an original and a 
> transformed problem. Before presolving, the original problem is copied 
> into the transformed one and all presolving and solving is done on the 
> transformed problem, which in your case was solved to optimality. After 
> solving was done, SCIP double-checks the solution with respect to the 
> original, unchanged problem and tells you when the solution is not 
> feasible there.
> 
> This can happen due to numerics, e.g., if some constraints were scaled 
> in the transformed problem and the error was small enough there, but 
> slightly too high in the original problem. That's definitely not the 
> reason in your case, because the constraint is violated a lot. It can 
> also happen because of wrong settings, as Stefan mentioned, or there 
> might be a bug in SCIP or in your constraint handler.
> 
> In order to identify where the problem is located, please do as Stefan 
> suggests.
> 
> Best,
> Gerald
> 
> Am 19.06.2012 13:07, schrieb Stefan Heinz:
>> Hi Aurélien,
>> 
>> hard to tell where the issue is. You could write the pricer problem to a
>> file via SCIPprintOrigProblem()
>> 
>> http://scip.zib.de/doc/html/scip_8h.html#ab0fbe8783e109c1f89e47c63103a70e0
>> 
>> and try to solve it with (plain) SCIP. Does that issue occur as well
>> send us the instance. If that issue does not occur check if the
>> constraints of the pricer problem are created "correctly". That mean,
>> for example, that the check flag is set to TRUE.
>> 
>> Best Stefan
>> 




More information about the Scip mailing list