[SCIP] Driving the constraint slack variables out of the basis?

Matthias Miltenberger miltenberger at zib.de
Thu Aug 16 14:56:44 CEST 2018


Dear Nelson,

to extend Ambros' answer I would like to add that you can also try to 
run SoPlex standalone and apply the suggested solution polishing setting:

     soplex --int:solution_polishing=2 -x --writebas=optimal.bas model.lp

Cheers
Matthias

On 14.08.2018 15:39, Ambros Gleixner wrote:
> Dear Nelson,
>
> We usually prefer to have many slack variables in the basis because this
> means sparser basis matrices and often less factional variables.
>
> You try to experiment with the following small patch:
>
> --- a/src/scip/lp.c
> +++ b/src/scip/lp.c
> @@ -3174,7 +3174,7 @@ SCIP_RETCODE lpSetSolutionPolishing(
>
>       if( polishing != lp->lpisolutionpolishing )
>       {
> -      SCIP_CALL( lpSetIntpar(lp, SCIP_LPPAR_POLISHING, (polishing ? 1 :
> 0), success) );
> +      SCIP_CALL( lpSetIntpar(lp, SCIP_LPPAR_POLISHING, (polishing ? 2 :
> 0), success) );
>          if( *success )
>             lp->lpisolutionpolishing = polishing;
>       }
>
> to SCIP 6.0.0 and build from scratch.
>
> Then the parameter setting lp/solutionpolishing = 2 will apply SoPlex'
> solution polishing "in reverse" after each LP.  It is greedy, so not
> guaranteed to find a no slack basis, even if one exists.
>
> Good luck,
> Ambros
>
>
> Am 12.08.2018 um 18:11 schrieb Nelson Uhan:
>> Hi all,
>>
>> I have a question about basis information in SCIP and SoPlex.
>>
>> I’m solving an LP of this form:
>>
>> min c’x
>> s.t. Ax = b
>> x >= 0
>>
>> In particular, I’m interested in getting an optimal basis to this LP. After solving the LP in SCIP with SoPlex, I get a list of basic indices using SCIPgetLPBasisInd. Some of these indices are negative. I understand that these negative indices correspond constraint slack variables. These slack variables all have a value of 0 at optimality (the LP is feasible).
>>
>> I would like to obtain a list of basic indices corresponding only to columns of A (i.e. nonnegative indices). Presumably, one could do this by pivoting on variables with zero reduced cost to drive the constraint slack variables out of the basis. Is there a (relatively) easy way to do this with SCIP/SoPlex?
>>
>> Any help would be much appreciated. Thanks,
>> Nelson
>> _______________________________________________
>> Scip mailing list
>> Scip at zib.de
>> https://listserv.zib.de/mailman/listinfo/scip
>>

-- 
\__________________

Matthias Miltenberger
Zuse Institute Berlin
Takustr. 7, 14195 Berlin
www.zib.de/miltenberger
miltenberger at zib.de
+49 (30) 841 85-245



More information about the Scip mailing list