[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