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

Constraint handler for SDP-constraints. More...

Go to the source code of this file.

Functions

EXTERN SCIP_RETCODE SCIPincludeConshdlrSdp (SCIP *scip)
 
EXTERN SCIP_RETCODE SCIPcreateConsSdp (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, int nnonz, int blocksize, int *nvarnonz, int **col, int **row, SCIP_Real **val, SCIP_VAR **vars, int constnnonz, int *constcol, int *constrow, SCIP_Real *constval)
 
EXTERN SCIP_RETCODE SCIPconsSdpGetData (SCIP *scip, SCIP_CONS *cons, int *nvars, int *nnonz, int *blocksize, int *arraylength, int *nvarnonz, int **col, int **row, SCIP_Real **val, SCIP_VAR **vars, int *constnnonz, int *constcol, int *constrow, SCIP_Real *constval)
 
EXTERN SCIP_RETCODE SCIPconsSdpGetNNonz (SCIP *scip, SCIP_CONS *cons, int *nnonz, int *constnnonz)
 
EXTERN SCIP_RETCODE SCIPconsSdpGetFullAj (SCIP *scip, SCIP_CONS *cons, int j, SCIP_Real *Aj)
 
EXTERN SCIP_RETCODE SCIPconsSdpGetFullConstMatrix (SCIP *scip, SCIP_CONS *cons, SCIP_Real *mat)
 
EXTERN SCIP_RETCODE SCIPconsSdpGetLowerTriangConstMatrix (SCIP *scip, SCIP_CONS *cons, SCIP_Real *mat)
 
EXTERN SCIP_RETCODE SCIPconsSdpCheckSdpCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result)
 
EXTERN SCIP_RETCODE SCIPconsSdpGuessInitialPoint (SCIP *scip, SCIP_CONS *cons, SCIP_Real *lambdastar)
 

Detailed Description

Constraint handler for SDP-constraints.

Author
Sonja Mars
Lars Schewe
Tristan Gally

Constraint handler for semidefinite constraints of the form $ \sum_{j=1}^n A_j y_j - A_0 \succeq 0 $, where the matrices $A_j$ and $A_0$ need to be symmetric. Only the nonzero entries of the matrices are stored.

Definition in file cons_sdp.h.

Function Documentation

EXTERN SCIP_RETCODE SCIPincludeConshdlrSdp ( SCIP *  scip)

creates the handler for SDP constraints and includes it in SCIP

Parameters
scipSCIP data structure

Definition at line 2270 of file cons_sdp.c.

References CONSHDLR_CHECKPRIORITY, CONSHDLR_DELAYSEPA, CONSHDLR_DESC, CONSHDLR_EAGERFREQ, CONSHDLR_ENFOPRIORITY, CONSHDLR_MAXPREROUNDS, CONSHDLR_NAME, CONSHDLR_NEEDSCONS, CONSHDLR_PRESOLTIMING, CONSHDLR_SEPAFREQ, and CONSHDLR_SEPAPRIORITY.

Referenced by runSCIP(), and SCIP_DECL_CONSHDLRCOPY().

EXTERN SCIP_RETCODE SCIPcreateConsSdp ( SCIP *  scip,
SCIP_CONS **  cons,
const char *  name,
int  nvars,
int  nnonz,
int  blocksize,
int *  nvarnonz,
int **  col,
int **  row,
SCIP_Real **  val,
SCIP_VAR **  vars,
int  constnnonz,
int *  constcol,
int *  constrow,
SCIP_Real *  constval 
)

creates an SDP-constraint

Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in this SDP constraint
nnonznumber of nonzeros in this SDP constraint
blocksizesize of this SDP-block
nvarnonznumber of nonzeros for each variable, also length of the arrays col/row/val point to
colpointer to column indices of the nonzeros for each variable
rowpointer to row indices of the nonzeros for each variable
valpointer to values of the nonzeros for each variable
varsSCIP_VARiables present in this SDP constraint that correspond to the indices in col/row/val
constnnonznumber of nonzeros in the constant part of this SDP constraint
constcolcolumn indices of the constant nonzeros
constrowrow indices of the constant nonzeros
constvalvalues of the constant nonzeros

Definition at line 2634 of file cons_sdp.c.

References setMaxRhsEntry().

Referenced by SCIP_DECL_CONSCOPY(), and scip::ObjReaderSDPA::scip_read().

EXTERN SCIP_RETCODE SCIPconsSdpGetData ( SCIP *  scip,
SCIP_CONS *  cons,
int *  nvars,
int *  nnonz,
int *  blocksize,
int *  arraylength,
int *  nvarnonz,
int **  col,
int **  row,
SCIP_Real **  val,
SCIP_VAR **  vars,
int *  constnnonz,
int *  constcol,
int *  constrow,
SCIP_Real *  constval 
)

get the data belonging to a single SDP-constraint

In arraylength the length of the nvarnonz, col, row and val arrays has to be given, if it is not sufficient to store all block-pointers that need to be inserted, a debug message will be thrown and this variable will be set to the needed length. constnnonz should give the length of the const arrays, if it is too short it will also give the needed number and a debug message is thrown.

Parameters
scipSCIP data structure
consSDP constraint to get data of
nvarspointer to store the number of variables in this SDP constraint
nnonzpointer to store the number of nonzeros in this SDP constraint
blocksizepointer to store the size of this SDP-block
arraylengthlength of the given nvarnonz, col, row and val arrays, if this is too short this will return the needed length
nvarnonzpointer to store the number of nonzeros for each variable, also length of the arrays col/row/val are pointing to
colpointer to store the column indices of the nonzeros for each variable
rowpointer to store the row indices of the nonzeros for each variable
valpointer to store the values of the nonzeros for each variable
varspointer to store the SCIP variables present in this constraint that correspond to the indices in col/row/val
constnnonzpointer to store the number of nonzeros in the constant part of this SDP constraint, also length of the const arrays
constcolpointer to store the column indices of the constant nonzeros
constrowpointer to store the row indices of the constant nonzeros
constvalpointer to store the values of the constant nonzeros

Definition at line 2319 of file cons_sdp.c.

Referenced by putSdpDataInInterface().

EXTERN SCIP_RETCODE SCIPconsSdpGetNNonz ( SCIP *  scip,
SCIP_CONS *  cons,
int *  nnonz,
int *  constnnonz 
)

gets the number of nonzeros and constant nonzeros for this SDP constraint

Either nnonz or constnnonz may be NULL if only the other one is needed.

Parameters
scipSCIP data structure
consSDP constraint to get data of
nnonzpointer to store the number of nonzeros in this SDP constraint
constnnonzpointer to store the number of nonzeros in the constant part of this SDP constraint

Definition at line 2415 of file cons_sdp.c.

Referenced by putSdpDataInInterface().

EXTERN SCIP_RETCODE SCIPconsSdpGetFullAj ( SCIP *  scip,
SCIP_CONS *  cons,
int  j,
SCIP_Real *  Aj 
)

gets the full constraint Matrix $ A_j $ for a given variable j

Parameters
scipSCIP data structure
consSDP constraint to get data of
jthe variable j to get the corresponding matrix $ A_j $ for
Ajpointer to store the full matrix $ A_j $

Definition at line 2440 of file cons_sdp.c.

Referenced by SCIP_DECL_CONSLOCK().

EXTERN SCIP_RETCODE SCIPconsSdpGetFullConstMatrix ( SCIP *  scip,
SCIP_CONS *  cons,
SCIP_Real *  mat 
)

gives an n*n-long array with the full constant matrix

Parameters
scipSCIP data structure
consSDP constraint to get data of
matpointer to store the full constant matrix

Definition at line 2475 of file cons_sdp.c.

Referenced by cutUsingEigenvector().

EXTERN SCIP_RETCODE SCIPconsSdpGetLowerTriangConstMatrix ( SCIP *  scip,
SCIP_CONS *  cons,
SCIP_Real *  mat 
)

gives a 0.5*n*(n+1)-long array with the lower triangular part of the constant matrix indexed by compLowerTriangPos

Parameters
scipSCIP data structure
consSDP constraint to get data of
matpointer to store the lower triangular part of the constant matrix

Definition at line 2509 of file cons_sdp.c.

References compLowerTriangPos().

Referenced by diagGEzero().

EXTERN SCIP_RETCODE SCIPconsSdpCheckSdpCons ( SCIP *  scip,
SCIP_CONS *  cons,
SCIP_SOL *  sol,
SCIP_Bool  checkintegrality,
SCIP_Bool  checklprows,
SCIP_Bool  printreason,
SCIP_RESULT *  result 
)

checks feasibility for a single SDP constraint

Parameters
scipSCIP data structure
consthe constraint which should be checked
solthe solution to check feasibility for
checkintegralityhas integrality to be checked?
checklprowshave current LP rows to be checked?
printreasonshould the reason for the violation be printed?
resultpointer to store the result of the feasibility checking call

Definition at line 357 of file cons_sdp.c.

References computeSdpMatrix(), expandSymMatrix(), and SCIPlapackComputeIthEigenvalue().

Referenced by SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSENFOLP(), and SCIP_DECL_CONSENFOPS().

EXTERN SCIP_RETCODE SCIPconsSdpGuessInitialPoint ( SCIP *  scip,
SCIP_CONS *  cons,
SCIP_Real *  lambdastar 
)

Compute a heuristic guess for a good starting solution $ \lambda ^* \cdot I $.

The solution is computed as

\[ \lambda^* = \max \Bigg\{S \cdot \max_{i \in [m]} \{|u_i|, |l_i|\} \cdot \max_{i \in [m]} \|A_i\|_\infty + \|C\|_\infty, \frac{\max_{i \in [m]} b_i}{S \cdot \min_{i \in [m]} \min_{j, \ell \in [n]} (A_i)_{j\ell} } \Bigg\}, \]

where $ S = \frac{ | \text{nonzero-entries of all } A_i | }{0.5 \cdot \text{ blocksize } (\text{ blocksize } + 1)} $ measures the sparsity of the matrices.

Parameters
scipSCIP data structure
consthe constraint for which the Matrix should be assembled
lambdastarpointer to store the guess for the initial point

Definition at line 2548 of file cons_sdp.c.

References CONSHDLR_NAME.

Referenced by SCIP_DECL_RELAXINITSOL().