SCIP-SDP  3.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
relax_sdp.h File Reference

SDP-relaxator. More...

Go to the source code of this file.

Functions

EXTERN SCIP_RETCODE SCIPincludeRelaxSdp (SCIP *scip)
 
EXTERN SCIP_RETCODE SCIPrelaxSdpComputeAnalyticCenters (SCIP *scip, SCIP_RELAX *relax)
 
EXTERN SCIP_RETCODE SCIPrelaxSdpGetPrimalBoundVars (SCIP_RELAX *relax, SCIP_Real *lbvars, SCIP_Real *ubvars, int *arraylength)
 
EXTERN SCIP_RETCODE SCIPrelaxSdpRelaxVal (SCIP_RELAX *relax, SCIP_Bool *success, SCIP_Real *objval)
 
EXTERN SCIP_RETCODE SCIPrelaxSdpGetRelaxSol (SCIP *scip, SCIP_RELAX *relax, SCIP_Bool *success, SCIP_Real *solarray, int *sollength)
 
EXTERN long int SCIPrelaxSdpGetSdpNode (SCIP_RELAX *relax)
 
EXTERN SCIP_Bool SCIPrelaxSdpSolvedOrig (SCIP_RELAX *relax)
 
EXTERN SCIP_Bool SCIPrelaxSdpSolvedProbing (SCIP_RELAX *relax)
 
EXTERN SCIP_Bool SCIPrelaxSdpIsFeasible (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNIterations (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSdpCalls (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSdpInterfaceCalls (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSdpFast (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSdpMedium (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSdpStable (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSdpPenalty (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSdpUnsolved (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNdualSlaterHolds (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNdualSlaterFails (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNdualSlaterInfeasible (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNdualSlaterUnknown (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNprimalSlaterHolds (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNprimalSlaterFails (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNprimalSlaterUnknown (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterHolds (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterHoldsFast (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterHoldsStable (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterHoldsPenalty (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterHoldsBounded (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterHoldsUnsolved (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterFails (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterFailsFast (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterFailsStable (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterFailsPenalty (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterFailsBounded (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterFailsUnsolved (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterInfeasibleFast (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterInfeasibleStable (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterInfeasiblePenalty (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterInfeasibleBounded (SCIP_RELAX *relax)
 
EXTERN int SCIPrelaxSdpGetNSlaterInfeasibleUnsolved (SCIP_RELAX *relax)
 

Detailed Description

SDP-relaxator.

Author
Sonja Mars
Tristan Gally

Relaxator to solve semidefinite programs of the form

\begin{eqnarray*} \min & & b^T y \\ \mbox{s.t.} & & \sum_{j=1}^n A_j^i y_j - A_0^i \succeq 0 \quad \forall i \leq m \\ & & Dy \geq d \\ & & \ell \leq y \leq u \end{eqnarray*}

for symmetric matrices $ A_j^i \in S_{k_i} $ and a matrix $ D \in \mathbb{R}^{k_0 \times n}. $

Definition in file relax_sdp.h.

Function Documentation

EXTERN SCIP_RETCODE SCIPincludeRelaxSdp ( SCIP *  scip)
EXTERN SCIP_RETCODE SCIPrelaxSdpComputeAnalyticCenters ( SCIP *  scip,
SCIP_RELAX *  relax 
)

computes analytic centers of primal and dual feasible set and saves them in relaxdata

Note
This function should be called at the end of the root node (or at least after the solving stage starts and before the first non-root node).
Parameters
scipSCIP data structure
relaxSDP-relaxator to compute analytic centers for

Definition at line 4410 of file relax_sdp.c.

References putLpDataInInterface(), putSdpDataInInterface(), SCIP_SDPSLATER_HOLDS, SCIP_SDPSLATER_INF, SCIP_SDPSLATER_NOINFO, SCIP_SDPSLATER_NOT, SCIP_SDPSLATERSETTING_BOUNDEDINFEASIBLE, SCIP_SDPSLATERSETTING_BOUNDEDNOSLATER, SCIP_SDPSLATERSETTING_BOUNDEDWSLATER, SCIP_SDPSLATERSETTING_NOINFO, SCIP_SDPSLATERSETTING_PENALTYINFEASIBLE, SCIP_SDPSLATERSETTING_PENALTYNOSLATER, SCIP_SDPSLATERSETTING_PENALTYWSLATER, SCIP_SDPSLATERSETTING_STABLEINFEASIBLE, SCIP_SDPSLATERSETTING_STABLENOSLATER, SCIP_SDPSLATERSETTING_STABLEWSLATER, SCIP_SDPSLATERSETTING_UNSOLVEDINFEASIBLE, SCIP_SDPSLATERSETTING_UNSOLVEDNOSLATER, SCIP_SDPSLATERSETTING_UNSOLVEDWSLATER, SCIP_SDPSLATERSETTING_UNSTABLEINFEASIBLE, SCIP_SDPSLATERSETTING_UNSTABLENOSLATER, SCIP_SDPSLATERSETTING_UNSTABLEWSLATER, SCIP_SDPSOLVERSETTING_FAST, SCIP_SDPSOLVERSETTING_MEDIUM, SCIP_SDPSOLVERSETTING_PENALTY, SCIP_SDPSOLVERSETTING_STABLE, SCIP_SDPSOLVERSETTING_UNSOLVED, SCIPconsSdpComputeSparseSdpMatrix(), SCIPconsSdpComputeUbSparseSdpMatrixLength(), SCIPconsSdpGetBlocksize(), SCIPsdpiDoesWarmstartNeedPrimal(), SCIPsdpiGetIterations(), SCIPsdpiGetPrimalMatrix(), SCIPsdpiGetPrimalNonzeros(), SCIPsdpiGetSdpCalls(), SCIPsdpiGetSol(), SCIPsdpiIsDualFeasible(), SCIPsdpiIsPrimalFeasible(), SCIPsdpiSettingsUsed(), SCIPsdpiSlater(), SCIPsdpiSlaterSettings(), SCIPsdpiSolve(), SCIPsdpiSolvedOrig(), SCIPsdpiWasSolved(), SCIPsdpVarfixerSortRowCol(), and SCIPsdpVarmapperGetNVars().

Referenced by SCIP_DECL_PROPEXEC().

EXTERN SCIP_RETCODE SCIPrelaxSdpGetPrimalBoundVars ( SCIP_RELAX *  relax,
SCIP_Real *  lbvars,
SCIP_Real *  ubvars,
int *  arraylength 
)

gets the primal variables corresponding to the lower and upper variable-bounds in the dual problem

The last input should specify the length of the arrays. If this is less than the number of variables, the needed length will be returned and a debug message thrown.

Note
If a variable is either fixed or unbounded in the dual problem, a zero will be returned for the non-existent primal variable.
Parameters
relaxSDP-relaxator to get information for
lbvarspointer to store the values of the variables corresponding to lower bounds in the dual problems
ubvarspointer to store the values of the variables corresponding to upper bounds in the dual problems
arraylengthinput: length of lbvars and ubvars
output: number of elements inserted into lbvars/ubvars (or needed length if it wasn't sufficient)

Definition at line 5125 of file relax_sdp.c.

References SCIPsdpiGetPrimalBoundVars().

Referenced by SCIP_DECL_PROPEXEC().

EXTERN SCIP_RETCODE SCIPrelaxSdpRelaxVal ( SCIP_RELAX *  relax,
SCIP_Bool *  success,
SCIP_Real *  objval 
)

returns optimal objective value of the current SDP-relaxation if the last SDP-relaxation was successfully solved

Parameters
relaxSDP-relaxator to get objective value for
successpointer to store whether the last SDP-relaxation was solved successfully
objvalpointer to store the optimal objective value of the SDP-relaxation

Definition at line 5150 of file relax_sdp.c.

Referenced by SCIP_DECL_PROPEXEC().

EXTERN SCIP_RETCODE SCIPrelaxSdpGetRelaxSol ( SCIP *  scip,
SCIP_RELAX *  relax,
SCIP_Bool *  success,
SCIP_Real *  solarray,
int *  sollength 
)

returns values of all variables in the solution of the current SDP-relaxation if the last SDP-relaxation was successfully solved

Parameters
scipSCIP pointer
relaxSDP-relaxator to get solution for
successpointer to store whether the last SDP-relaxation was solved successfully
solarraypointer to store the solution, this has to be at least length nvars
sollengthlength of the solarray

Definition at line 5172 of file relax_sdp.c.

References SCIPsdpiGetSol().

EXTERN long int SCIPrelaxSdpGetSdpNode ( SCIP_RELAX *  relax)

get the number of the SCIP-node which the current SDP solution belongs to

Parameters
relaxSDP-relaxator to get solution for

Definition at line 5205 of file relax_sdp.c.

Referenced by SCIP_DECL_PROPEXEC().

EXTERN SCIP_Bool SCIPrelaxSdpSolvedOrig ( SCIP_RELAX *  relax)

Was the original problem solved for the last SDP-node (or a penalty or probing formulation) ?

Parameters
relaxSDP-relaxator to get solution for

Definition at line 5216 of file relax_sdp.c.

References SCIPsdpiSolvedOrig().

Referenced by SCIP_DECL_PROPEXEC().

EXTERN SCIP_Bool SCIPrelaxSdpSolvedProbing ( SCIP_RELAX *  relax)

Was the last probing SDP solved successfully ?

Parameters
relaxSDP-relaxator to get solution for

Definition at line 5233 of file relax_sdp.c.

Referenced by SCIP_DECL_HEUREXEC(), and SCIP_DECL_PROPEXEC().

EXTERN SCIP_Bool SCIPrelaxSdpIsFeasible ( SCIP_RELAX *  relax)

returns whether the last solved problem was feasible

Parameters
relaxSDP-relaxator to get feasibility for

Definition at line 5250 of file relax_sdp.c.

Referenced by SCIP_DECL_HEUREXEC(), and SCIP_DECL_PROPEXEC().

EXTERN int SCIPrelaxSdpGetNIterations ( SCIP_RELAX *  relax)

returns total number of SDP-iterations

Parameters
relaxSDP-relaxator to get the iterations for

Definition at line 5261 of file relax_sdp.c.

Referenced by SCIP_DECL_DISPOUTPUT(), and SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSdpCalls ( SCIP_RELAX *  relax)

returns number of SDPs solved by SDP-solver (including multiple calls for penalty formulation etc.)

Parameters
relaxSDP-relaxator to get the number of calls for

Definition at line 5272 of file relax_sdp.c.

Referenced by SCIP_DECL_DISPOUTPUT(), and SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSdpInterfaceCalls ( SCIP_RELAX *  relax)

returns number of solved SDP-relaxations

Parameters
relaxSDP-relaxator to get the number of calls for

Definition at line 5283 of file relax_sdp.c.

Referenced by SCIP_DECL_DISPOUTPUT(), and SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSdpFast ( SCIP_RELAX *  relax)

returns number of SDP-relaxations solved with fastest settings

Parameters
relaxSDP-relaxator to get the number of calls for

Definition at line 5294 of file relax_sdp.c.

Referenced by SCIP_DECL_DISPOUTPUT(), and SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSdpMedium ( SCIP_RELAX *  relax)

returns number of SDP-relaxations solved with medium settings

Parameters
relaxSDP-relaxator to get the number of calls for

Definition at line 5305 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSdpStable ( SCIP_RELAX *  relax)

returns number of SDP-relaxations solved with stable settings

Parameters
relaxSDP-relaxator to get the number of calls for

Definition at line 5316 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSdpPenalty ( SCIP_RELAX *  relax)

returns number of SDP-relaxations solved with penalty formulation

Parameters
relaxSDP-relaxator to get the number of calls for

Definition at line 5327 of file relax_sdp.c.

Referenced by SCIP_DECL_DISPOUTPUT(), and SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSdpUnsolved ( SCIP_RELAX *  relax)

returns number of SDP-relaxations unsolved even when using a penalty formulation

Parameters
relaxSDP-relaxator to get the number of calls for

Definition at line 5338 of file relax_sdp.c.

Referenced by SCIP_DECL_DISPOUTPUT(), and SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNdualSlaterHolds ( SCIP_RELAX *  relax)

returns number of SDP-relaxations for which dual Slater condition held

Parameters
relaxSDP-relaxator to get number for

Definition at line 5349 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNdualSlaterFails ( SCIP_RELAX *  relax)

returns number of SDP-relaxations for which dual Slater condition failed

Parameters
relaxSDP-relaxator to get number for

Definition at line 5360 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNdualSlaterInfeasible ( SCIP_RELAX *  relax)

returns number of SDP-relaxations for which dual Slater condition showed infeasibility

Parameters
relaxSDP-relaxator to get number for

Definition at line 5371 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNdualSlaterUnknown ( SCIP_RELAX *  relax)

returns number of SDP-relaxations for which dual Slater condition could not be determined

Parameters
relaxSDP-relaxator to get number for

Definition at line 5382 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNprimalSlaterHolds ( SCIP_RELAX *  relax)

returns number of SDP-relaxations for which primal Slater condition held

Parameters
relaxSDP-relaxator to get number for

Definition at line 5393 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNprimalSlaterFails ( SCIP_RELAX *  relax)

returns number of SDP-relaxations for which primal Slater condition failed

Parameters
relaxSDP-relaxator to get number for

Definition at line 5404 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNprimalSlaterUnknown ( SCIP_RELAX *  relax)

returns number of SDP-relaxations for which primal Slater condition could not be determined

Parameters
relaxSDP-relaxator to get number for

Definition at line 5415 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterHolds ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition holding for primal and dual

Parameters
relaxSDP-relaxator to get number for

Definition at line 5426 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterHoldsFast ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition holding for primal and dual, solved with fastest settings

Parameters
relaxSDP-relaxator to get number for

Definition at line 5437 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterHoldsStable ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition holding for primal and dual, solved with stable settings

Parameters
relaxSDP-relaxator to get number for

Definition at line 5448 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterHoldsPenalty ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition holding for primal and dual, solved with penalty formulation

Parameters
relaxSDP-relaxator to get number for

Definition at line 5459 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterHoldsBounded ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition holding for primal and dual, for which an infeasible lower bound could be computed

Parameters
relaxSDP-relaxator to get number for

Definition at line 5470 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterHoldsUnsolved ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition holding for primal and dual, unsolved even when using a penalty formulation

Parameters
relaxSDP-relaxator to get number for

Definition at line 5481 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterFails ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition failing for primal or dual

Parameters
relaxSDP-relaxator to get number for

Definition at line 5492 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterFailsFast ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition failing for primal or dual, solved with fast settings

Parameters
relaxSDP-relaxator to get number for

Definition at line 5503 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterFailsStable ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition failing for primal or dual, solved with stable settings

Parameters
relaxSDP-relaxator to get number for

Definition at line 5514 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterFailsPenalty ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition failing for primal or dual, solved with penalty formulation

Parameters
relaxSDP-relaxator to get number for

Definition at line 5525 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterFailsBounded ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition failing for primal or dual, for which an infeasible lower bound could be computed

Parameters
relaxSDP-relaxator to get number for

Definition at line 5536 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterFailsUnsolved ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slater condition failing for primal or dual, unsolved even when using a penalty formulation

Parameters
relaxSDP-relaxator to get number for

Definition at line 5547 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterInfeasibleFast ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slatercheck showing infeasibility, solved with fast settings

Parameters
relaxSDP-relaxator to get number for

Definition at line 5558 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterInfeasibleStable ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slatercheck showing infeasibility, solved with stable settings

Parameters
relaxSDP-relaxator to get number for

Definition at line 5569 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterInfeasiblePenalty ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slatercheck showing infeasibility, solved with penalty formulation

Parameters
relaxSDP-relaxator to get number for

Definition at line 5580 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterInfeasibleBounded ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slatercheck showing infeasibility, for which an infeasible lower bound could be computed

Parameters
relaxSDP-relaxator to get number for

Definition at line 5591 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().

EXTERN int SCIPrelaxSdpGetNSlaterInfeasibleUnsolved ( SCIP_RELAX *  relax)

returns number of SDP-relaxations with Slatercheck showing infeasibility, unsolved even when using a penalty formulation

Parameters
relaxSDP-relaxator to get number for

Definition at line 5602 of file relax_sdp.c.

Referenced by SCIP_DECL_TABLEOUTPUT().