[Scip] Boolean "stored" in SCIPtrySol

Gregor Hendel hendel at zib.de
Mon Nov 17 21:15:19 CET 2014


Hi Jan,

On 17.11.2014 15:15, jan wrote:
> Hello,
> I have a question regarding the function SCIPtrySol(...).
> When exactly is its last argument "SCIP_Bool * stored" is set to 
> true/false?
> Using SCIP 3.1.0 I call the function like:
> SCIPtrySol( scip_pointer, sol_pointer, TRUE, TRUE, TRUE, TRUE, &my_bool);
>
> If sol_pointer refers to a point that is not feasible my_bool is set 
> to false (I guess). What happens if I add a feasible solution that is 
> worse than the currently best known? And what if sol_pointer is 
> equally good/bad as the current best solution?
Also solutions that are worse than the current incumbent solution are 
stored, because some plugins require a set of solutions to play with.
The important thing is that SCIP keeps only a solution pool (sorted by 
nondecreasing objective value) of a certain, parameterized (called 
"limits/maxsol") size, which is by default set to 100. A solution can 
hence be feasible· but too bad for SCIP, and thus not be stored.

>
>
> If my_bool is set to false but no reason of violation is printed by 
> SCIP, can I conclude that sol_pointer referred to a feasible point?
No, in general you can't but this depends on whether you work with the 
original problem (constructing a solution by assigning values to the 
original problem variables) or work in transformed space. For original 
solutions, the answer is yes. If you work in transformed space, however, 
the solution objective check is called first, and if the objective is 
too bad, as described above, it is not even checked for feasibility.

In order to be sure, use SCIPcheckSol() instead.

All the best,
Gregor

>
>
> Thanks a lot
> Jan
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip



More information about the Scip mailing list