[Scip] (no subject)

Gerald Gamrath gamrath at zib.de
Wed Jul 20 11:31:28 MEST 2011


Hi Tscheik,

the pseudo solution is the solution that you get, if you relax all the 
constraints, i.e. if you just set each variable to the bound that gives 
you the best objective value (for minimization: pos. obj. coeff -> set 
to lower bound, neg. obj. coeff -> set to upper bound). By the way, each 
problem is transformed into a minimization problem by SCIP, so at this 
point, you are definitely treating a minimization problem.
If you have no solved LP at a node, SCIP uses this solution as a 
relaxation solution and tries to enforce this solution. However, if the 
objective value of this solution is better than the lower bound at the 
current node (your relaxator computed a better lower bound than this 
trivial one), you know without looking at the constraints that the 
pseudo solution cannot be feasible (otherwise, your bound would be 
incorrect). That is what is checked in these lines of code in order to 
allow the constraint handler to save the effort of enforcing, because 
the solution is infeasible anyway so that branching is performed on it 
later. So, these lines should be correct.

Anyway, what was the problem, that you encountered? Did something go 
wrong during the solving process because of these lines or did you just 
wonder whether they are correct?

Best,
Gerald

Am 20.07.2011 10:27, schrieb Tscheik at gmx.de:
> Hello everyone,
>
> we've run into some problems with scip. Currently we are implementing a relaxation handler in scip, that does all the LP-solving (so we disabled the lpsolver with lpsolve=-1). As our test showed we encounter an error in the
> file solve.c, line 2232-2239:
>     if( SCIPtreeHasFocusNodeLP(tree) )
>        objinfeasible = FALSE;
>     else
>     {
>        pseudoobjval = SCIPlpGetPseudoObjval(lp, set);
>        objinfeasible = SCIPsetIsLT(set, pseudoobjval, SCIPnodeGetLowerbound(SCIPtreeGetFocusNode(tree)));
>     }
> It seems that if we give scip a problem without an LP (only with constraints handled by our constraint-handler) there seems to be something wrong within these lines of code.
> In our opinion it (maybe) should read SCIPsetIsGT instead of ~LT as the pseudosolution is always the worst possible solution?
>
> Best Regards,
>
> Tscheik



More information about the Scip mailing list