[SCIP] A few questions on SCIP_VARSTATUS

Leon Eifler eifler at zib.de
Mon Feb 19 15:07:29 CET 2024


Hi Rolf,

> 1. SCIP_VARSTATUS has the values SCIP_VARSTATUS_LOOSE and 
> SCIP_VARSTATUS_COLUMN for variables in the transformed problem.
> From the documentation, it is not clear to me how these differ from 
> each other. How do these two differ in SCIP?

if a variable has been created but is not in the LP, it is considered 
loose. As far as I know, all variables will be created with status 
SCIP_VARSTATUS_LOOSE, and will be set to SCIP_VARSTATUS_COLUMN once the 
LP relaxation is created. The difference is really only important if you 
are doing column generation, where newly priced in variables will not 
have a column yet.

> 2. Which status types from SCIP_VARSTATUS are allowed in transformed 
> constraints returned by SCIP?

I think everything except SCIP_VARSTATUS_ORIGINAL.

> 3. What is the correct way, in presolving, to access the (so far) 
> presolved constraint matrix formed by all linear constraints of the 
> problem? I see a lot of implementations in SCIP call 
> SCIPmatrixCreate(), but there is no documentation pointing to this 
> method. Should I use this, or are there other alternatives?
Yes, if you need the problem matrix then you need to use `SCIPmatrixCreate`
> 4. Is there a method which returns only the set of active variables in 
> SCIP? If I understand correctly, the active variables are those that 
> are not fixed or aggregated during presolving. (SCIPgetActiveVars() 
> returns only the active counterparts)
If you call SCIPgetVars in any solving stage other than 
SCIP_STAGE_PROBLEM, it will only return the active variables. Whenever a 
variable is fixed/(multi)aggregated/negated  the variable is removed 
from `transprob->vars` array and added to `transprob->fixedvars`

Best,
Leon



More information about the Scip mailing list