SCIP-SDP
3.1.1
|
Constraint handler for SDP-constraints. More...
Go to the source code of this file.
Macros | |
#define | CONSHDLR_NAME "SDP" |
#define | CONSHDLR_DESC "SDP constraints of the form \\sum_{j} A_j y_j - A_0 psd" |
#define | CONSHDLR_SEPAPRIORITY +1000000 |
#define | CONSHDLR_ENFOPRIORITY -2000000 |
#define | CONSHDLR_CHECKPRIORITY -2000000 |
#define | CONSHDLR_SEPAFREQ 1 |
#define | CONSHDLR_EAGERFREQ 100 |
#define | CONSHDLR_MAXPREROUNDS -1 |
#define | CONSHDLR_DELAYSEPA FALSE |
#define | CONSHDLR_NEEDSCONS TRUE |
#define | CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_FAST |
#define | PARSE_STARTSIZE 1 |
#define | PARSE_SIZEFACTOR 10 |
#define | DEFAULT_DIAGGEZEROCUTS TRUE |
#define | DEFAULT_DIAGZEROIMPLCUTS TRUE |
Functions | |
static SCIP_RETCODE | expandSymMatrix (int size, SCIP_Real *symMat, SCIP_Real *fullMat) |
static SCIP_RETCODE | computeSdpMatrix (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *y, SCIP_Real *matrix) |
static SCIP_RETCODE | multiplyConstraintMatrix (SCIP_CONS *cons, int j, SCIP_Real *v, SCIP_Real *vAv) |
static SCIP_RETCODE | setMaxRhsEntry (SCIP_CONS *cons) |
static SCIP_RETCODE | cutUsingEigenvector (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Real *coeff, SCIP_Real *lhs) |
SCIP_RETCODE | SCIPconsSdpCheckSdpCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result) |
static SCIP_RETCODE | separateSol (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_RESULT *result) |
static SCIP_RETCODE | diagGEzero (SCIP *scip, SCIP_CONS **conss, int nconss, int *naddconss) |
static SCIP_RETCODE | diagZeroImpl (SCIP *scip, SCIP_CONS **conss, int nconss, int *naddconss) |
static SCIP_RETCODE | move_1x1_blocks_to_lp (SCIP *scip, SCIP_CONS **conss, int nconss, int *naddconss, int *ndelconss, SCIP_RESULT *result) |
static SCIP_RETCODE | multiaggrVar (SCIP *scip, SCIP_CONS *cons, int *v, SCIP_VAR **aggrvars, SCIP_Real *scalars, int naggrvars, SCIP_Real constant, int *savedcol, int *savedrow, SCIP_Real *savedval, int *nfixednonz, int *vararraylength) |
static SCIP_RETCODE | fixAndAggrVars (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool aggregate) |
static SCIP_RETCODE | EnforceConstraint (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_SOL *sol, SCIP_RESULT *result) |
static | SCIP_DECL_CONSINITPRE (consInitpreSdp) |
static | SCIP_DECL_CONSLOCK (consLockSdp) |
static | SCIP_DECL_CONSEXITPRE (consExitpreSdp) |
static | SCIP_DECL_CONSPRESOL (consPresolSdp) |
static | SCIP_DECL_CONSTRANS (consTransSdp) |
static | SCIP_DECL_CONSCHECK (consCheckSdp) |
static | SCIP_DECL_CONSENFOPS (consEnfopsSdp) |
static | SCIP_DECL_CONSENFOLP (consEnfolpSdp) |
static | SCIP_DECL_CONSENFORELAX (consEnforelaxSdp) |
static | SCIP_DECL_CONSSEPASOL (consSepasolSdp) |
static | SCIP_DECL_CONSSEPALP (consSepalpSdp) |
static | SCIP_DECL_CONSDELETE (consDeleteSdp) |
static | SCIP_DECL_CONSFREE (consFreeSdp) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopySdp) |
static | SCIP_DECL_CONSCOPY (consCopySdp) |
static | SCIP_DECL_CONSPRINT (consPrintSdp) |
static | SCIP_DECL_CONSPARSE (consParseSdp) |
static | SCIP_DECL_CONSGETVARS (consGetVarsSdp) |
static | SCIP_DECL_CONSGETNVARS (consGetNVarsSdp) |
SCIP_RETCODE | SCIPincludeConshdlrSdp (SCIP *scip) |
int | SCIPconsSdpCompLowerTriangPos (int i, int j) |
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) |
SCIP_RETCODE | SCIPconsSdpGetNNonz (SCIP *scip, SCIP_CONS *cons, int *nnonz, int *constnnonz) |
int | SCIPconsSdpGetBlocksize (SCIP *scip, SCIP_CONS *cons) |
SCIP_RETCODE | SCIPconsSdpGetFullAj (SCIP *scip, SCIP_CONS *cons, int j, SCIP_Real *Aj) |
SCIP_RETCODE | SCIPconsSdpGetFullConstMatrix (SCIP *scip, SCIP_CONS *cons, SCIP_Real *mat) |
SCIP_RETCODE | SCIPconsSdpGetLowerTriangConstMatrix (SCIP *scip, SCIP_CONS *cons, SCIP_Real *mat) |
SCIP_RETCODE | SCIPconsSdpGuessInitialPoint (SCIP *scip, SCIP_CONS *cons, SCIP_Real *lambdastar) |
SCIP_Real | SCIPconsSdpGetMaxConstEntry (SCIP *scip, SCIP_CONS *cons) |
SCIP_Real | SCIPconsSdpGetMaxSdpCoef (SCIP *scip, SCIP_CONS *cons) |
int | SCIPconsSdpComputeUbSparseSdpMatrixLength (SCIP *scip, SCIP_CONS *cons) |
SCIP_RETCODE | SCIPconsSdpComputeSparseSdpMatrix (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, int *length, int *row, int *col, SCIP_Real *val) |
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) |
Constraint handler for SDP-constraints.
Constraint handler for semidefinite constraints of the form , where the matrices and need to be symmetric. Only the nonzero entries of the matrices are stored.
Definition in file cons_sdp.c.
#define CONSHDLR_NAME "SDP" |
Definition at line 69 of file cons_sdp.c.
Referenced by SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSHDLRCOPY(), SCIPconsSdpGuessInitialPoint(), and SCIPincludeConshdlrSdp().
#define CONSHDLR_DESC "SDP constraints of the form \\sum_{j} A_j y_j - A_0 psd" |
Definition at line 70 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_SEPAPRIORITY +1000000 |
priority of the constraint handler for separation
Definition at line 71 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_ENFOPRIORITY -2000000 |
priority of the constraint handler for constraint enforcing
Definition at line 72 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_CHECKPRIORITY -2000000 |
priority of the constraint handler for checking feasibility
Definition at line 73 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_SEPAFREQ 1 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 74 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_EAGERFREQ 100 |
frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only
Definition at line 75 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 78 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 79 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 80 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_FAST |
Definition at line 82 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define PARSE_STARTSIZE 1 |
initial size of the consdata-arrays when parsing a problem
Definition at line 83 of file cons_sdp.c.
Referenced by SCIP_DECL_CONSPARSE().
#define PARSE_SIZEFACTOR 10 |
size of consdata-arrays is increased by this factor when parsing a problem
Definition at line 84 of file cons_sdp.c.
Referenced by SCIP_DECL_CONSPARSE().
#define DEFAULT_DIAGGEZEROCUTS TRUE |
Should linear cuts enforcing the non-negativity of diagonal entries of SDP-matrices be added?
Definition at line 85 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
#define DEFAULT_DIAGZEROIMPLCUTS TRUE |
Should linear cuts enforcing the implications of diagonal entries of zero in SDP-matrices be added?
Definition at line 86 of file cons_sdp.c.
Referenced by SCIPincludeConshdlrSdp().
|
static |
takes a 0.5*n*(n+1) array of a symmetric matrix and expands it to an n*n array of the full matrix to input into LAPACK
size | size of the matrix, named n above |
symMat | symmetric matrix indexed via SCIPconsSdpCompLowerTriangPos that should be expanded |
fullMat | pointer to store the n*n matrix, that is the symmetric expansion of symMat |
Definition at line 124 of file cons_sdp.c.
References SCIPconsSdpCompLowerTriangPos().
Referenced by cutUsingEigenvector(), and SCIPconsSdpCheckSdpCons().
|
static |
For a given vector computes the (length of y) * (length of y + 1) /2 -long array of the lower-triangular part of the SDP-Matrix for this SDP block, indexed by SCIPconsSdpCompLowerTriangPos.
scip | SCIP data structure |
cons | the constraint for which the Matrix should be assembled |
y | solution to separate |
matrix | pointer to store the SDP-Matrix |
Definition at line 157 of file cons_sdp.c.
References SCIPconsSdpCompLowerTriangPos().
Referenced by cutUsingEigenvector(), and SCIPconsSdpCheckSdpCons().
|
static |
For a given variable-index j and a Vector v computes .
cons | the SDP constraint that includes the Matrix |
j | variable-index of the matrix to multiply with |
v | vector to multiply with |
vAv | pointer to store the the resulting scalar |
Definition at line 199 of file cons_sdp.c.
Referenced by cutUsingEigenvector().
|
static |
Set the maximum absolute value of an entry of the constant matrix. This must be done before presolving, because otherwise this is influenced by variable fixings (which might lead to solutions being feasible in presolving no longer being feasible afterwards)
cons | the SDP constraint that includes the Matrix |
Definition at line 239 of file cons_sdp.c.
Referenced by SCIP_DECL_CONSPARSE(), and SCIPcreateConsSdp().
|
static |
separate current solution with a cut using the eigenvectors and -values of the solution matrix
This function computes the eigenvectors of the matrix, takes the one corresponding to the smallest eigenvalue and multiplies the matrix with it such that .
scip | SCIP data structure |
cons | the constraint to compute the cut for |
sol | solution to separate |
coeff | pointer to store the coefficients of the computed cut |
lhs | pointer to store the lhs of the computed cut |
Definition at line 272 of file cons_sdp.c.
References computeSdpMatrix(), expandSymMatrix(), multiplyConstraintMatrix(), SCIPconsSdpGetFullConstMatrix(), SCIPlapackComputeIthEigenvalue(), and SCIPlapackMatrixVectorMult().
Referenced by EnforceConstraint(), and separateSol().
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
scip | SCIP data structure |
cons | the constraint the solution should be checked for |
sol | the solution to check feasibility for |
checkintegrality | has integrality to be checked? |
checklprows | have current LP rows to be checked? |
printreason | should the reason for the violation be printed? |
result | pointer to store the result of the feasibility checking call |
Definition at line 341 of file cons_sdp.c.
References computeSdpMatrix(), expandSymMatrix(), and SCIPlapackComputeIthEigenvalue().
Referenced by EnforceConstraint(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSENFOPS().
|
static |
separates the current solution
scip | SCIP data structure |
conshdlr | the constraint handler itself |
cons | constraint to process |
sol | primal solution that should be separated |
result | pointer to store the result of the separation call |
Definition at line 408 of file cons_sdp.c.
References cutUsingEigenvector().
Referenced by SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().
|
static |
approximates the sdpcone using the fact that every diagonal entry must be non-negative, so it adds the LP-cut
scip | SCIP data structure |
conss | array of constraints to add cuts for |
nconss | number of constraints to add cuts for |
naddconss | pointer to store how many constraints were added |
Definition at line 498 of file cons_sdp.c.
References SCIPconsSdpCompLowerTriangPos(), and SCIPconsSdpGetLowerTriangConstMatrix().
Referenced by SCIP_DECL_CONSPRESOL().
|
static |
Presolve-routine that enforces implications of diagonal entries of zero in SDP-matrices, namely that if , then also and .
More precisely, if , , for all , for all continuous variables and for all integer variables, we add the cut
scip | SCIP data structure |
conss | array of constraints |
nconss | number of constraints |
naddconss | pointer to store how many constraints were added |
Definition at line 614 of file cons_sdp.c.
Referenced by SCIP_DECL_CONSPRESOL().
|
static |
detects if there are blocks with size one and transforms them to lp-rows
scip | SCIP data structure |
conss | array of constraints to check |
nconss | number of constraints to check |
naddconss | pointer to store how many constraints were added |
ndelconss | pointer to store how many constraints were deleted |
result | pointer to store if this routine was successfull or if it detected infeasibility |
Definition at line 855 of file cons_sdp.c.
Referenced by SCIP_DECL_CONSPRESOL().
|
static |
local function to perform (parts of) multiaggregation of a single variable within fixAndAggrVars
scip | SCIP pointer |
cons | constraint to multiaggregate for |
v | position of the variable that gets (multi-)aggregated |
aggrvars | variables this has to be (multi-)aggregated to |
scalars | scalar parts to multiply with for each variable this is aggregated to |
naggrvars | number of variables this is (multi-)aggregated to |
constant | the constant part for the (multi-)aggregation |
savedcol | array of columns for nonzeros that need to be added to the constant part |
savedrow | array of rows for nonzeros that need to be added to the constant part |
savedval | array of values for nonzeros that need to be added to the constant part |
nfixednonz | length of the arrays of saved nonzeros for the constant part |
vararraylength | length of the variable array |
Definition at line 1060 of file cons_sdp.c.
References SCIPsdpVarfixerMergeArrays(), and SCIPsdpVarfixerSortRowCol().
Referenced by fixAndAggrVars().
|
static |
presolve routine that looks through the data and handles fixed, (multi-)aggregated and negated variables
scip | SCIP data structure |
conss | array with constraints to check |
nconss | number of constraints to check |
aggregate | do we want to (mutli-)aggregate variables ? |
Definition at line 1267 of file cons_sdp.c.
References multiaggrVar(), and SCIPsdpVarfixerMergeArrays().
Referenced by SCIP_DECL_CONSCOPY(), and SCIP_DECL_CONSEXITPRE().
|
static |
enforces the SDP constraints for a given solution (may be NULL to use the LP solution)
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints to process |
nconss | number of constraints |
sol | solution to enforce (NULL for the LP solution) |
result | pointer to store the result of the enforcing call |
Definition at line 1490 of file cons_sdp.c.
References cutUsingEigenvector(), and SCIPconsSdpCheckSdpCons().
Referenced by SCIP_DECL_CONSENFOLP(), and SCIP_DECL_CONSENFORELAX().
|
static |
informs constraint handler that the presolving process is being started
Definition at line 1596 of file cons_sdp.c.
|
static |
locks a variable up if the corresponding constraint matrix is not positive semidefinite, locks it down if it is not negative semidefinite
Definition at line 1614 of file cons_sdp.c.
References SCIPconsSdpGetFullAj(), and SCIPlapackComputeIthEigenvalue().
|
static |
after presolving variables are fixed and multiaggregated
Definition at line 1670 of file cons_sdp.c.
References fixAndAggrVars().
|
static |
presolving method of constraint handler
Definition at line 1684 of file cons_sdp.c.
References diagGEzero(), diagZeroImpl(), and move_1x1_blocks_to_lp().
|
static |
creates transformed constraint
Definition at line 1712 of file cons_sdp.c.
|
static |
checks feasiblity of constraint, e.g. the positive semidefiniteness
Definition at line 1804 of file cons_sdp.c.
References SCIPconsSdpCheckSdpCons().
|
static |
enforce pseudo solution method
Returns didnotrun if objinfeasible, computes feasibility otherwise.
Definition at line 1828 of file cons_sdp.c.
References SCIPconsSdpCheckSdpCons().
|
static |
Enforce lp solution; if some block is not psd, an eigenvector cut is added.
Definition at line 1865 of file cons_sdp.c.
References EnforceConstraint().
|
static |
Enforce relaxation solution; if some block is not psd, an eigenvector cut is added.
Definition at line 1878 of file cons_sdp.c.
References EnforceConstraint().
|
static |
separates a solution using constraint specific ideas, gives cuts to SCIP
Definition at line 1890 of file cons_sdp.c.
References separateSol().
|
static |
separation method of constraint handler for LP solution
Definition at line 1907 of file cons_sdp.c.
References separateSol().
|
static |
delete method of SDP constrainthandler
Definition at line 1924 of file cons_sdp.c.
|
static |
free method of SDP constrainthandler
Definition at line 1961 of file cons_sdp.c.
|
static |
copy an SDP constraint handler
Definition at line 1976 of file cons_sdp.c.
References CONSHDLR_NAME, and SCIPincludeConshdlrSdp().
|
static |
copy an SDP constraint
Definition at line 1991 of file cons_sdp.c.
References CONSHDLR_NAME, fixAndAggrVars(), name, and SCIPcreateConsSdp().
|
static |
print an SDP constraint
Definition at line 2076 of file cons_sdp.c.
|
static |
parse an SDP constraint
Definition at line 2202 of file cons_sdp.c.
References name, PARSE_SIZEFACTOR, PARSE_STARTSIZE, and setMaxRhsEntry().
|
static |
constraint method of constraint handler which returns the variables
Definition at line 2395 of file cons_sdp.c.
|
static |
constraint method of constraint handler which returns the number of variables
Definition at line 2429 of file cons_sdp.c.
SCIP_RETCODE SCIPincludeConshdlrSdp | ( | SCIP * | scip | ) |
creates the handler for SDP constraints and includes it in SCIP
scip | SCIP data structure |
Definition at line 2448 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, CONSHDLR_SEPAPRIORITY, DEFAULT_DIAGGEZEROCUTS, and DEFAULT_DIAGZEROIMPLCUTS.
Referenced by runSCIP(), and SCIP_DECL_CONSHDLRCOPY().
int SCIPconsSdpCompLowerTriangPos | ( | int | i, |
int | j | ||
) |
for given row and column (i,j) computes the position in the lower triangular part, if these positions are numbered from 0 to n(n+1)/2 - 1, this needs to be called for i >= j
i | row index |
j | column index |
Definition at line 2501 of file cons_sdp.c.
Referenced by calcRelax(), computeSdpMatrix(), diagGEzero(), expandSymMatrix(), and SCIPconsSdpGetLowerTriangConstMatrix().
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.
scip | SCIP data structure |
cons | SDP constraint to get data of |
nvars | pointer to store the number of variables in this SDP constraint |
nnonz | pointer to store the number of nonzeros in this SDP constraint |
blocksize | pointer to store the size of this SDP-block |
arraylength | length of the given nvarnonz, col, row and val arrays, if this is too short this will return the needed length |
nvarnonz | pointer to store the number of nonzeros for each variable, also length of the arrays col/row/val are pointing to |
col | pointer to store the column indices of the nonzeros for each variable |
row | pointer to store the row indices of the nonzeros for each variable |
val | pointer to store the values of the nonzeros for each variable |
vars | pointer to store the SCIP variables present in this constraint that correspond to the indices in col/row/val |
constnnonz | pointer to store the number of nonzeros in the constant part of this SDP constraint, also length of the const arrays |
constcol | pointer to store the column indices of the constant nonzeros |
constrow | pointer to store the row indices of the constant nonzeros |
constval | pointer to store the values of the constant nonzeros |
Definition at line 2518 of file cons_sdp.c.
References name.
Referenced by calcRelax(), and putSdpDataInInterface().
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.
scip | SCIP data structure |
cons | SDP constraint to get number of nonzeros for |
nnonz | pointer to store the number of nonzeros in this SDP constraint |
constnnonz | pointer to store the number of nonzeros in the constant part of this SDP constraint |
Definition at line 2614 of file cons_sdp.c.
Referenced by calcRelax(), and putSdpDataInInterface().
int SCIPconsSdpGetBlocksize | ( | SCIP * | scip, |
SCIP_CONS * | cons | ||
) |
gets the blocksize of the SDP constraint
scip | SCIP data structure |
cons | SDP constraint to get blocksize for |
Definition at line 2639 of file cons_sdp.c.
Referenced by calcRelax(), and SCIPrelaxSdpComputeAnalyticCenters().
SCIP_RETCODE SCIPconsSdpGetFullAj | ( | SCIP * | scip, |
SCIP_CONS * | cons, | ||
int | j, | ||
SCIP_Real * | Aj | ||
) |
gets the full constraint Matrix for a given variable j
scip | SCIP data structure |
cons | SDP constraint to get matrix for |
j | the variable j to get the corresponding matrix for |
Aj | pointer to store the full matrix |
Definition at line 2656 of file cons_sdp.c.
Referenced by SCIP_DECL_CONSLOCK().
SCIP_RETCODE SCIPconsSdpGetFullConstMatrix | ( | SCIP * | scip, |
SCIP_CONS * | cons, | ||
SCIP_Real * | mat | ||
) |
gives an n*n-long array with the full constant matrix
scip | SCIP data structure |
cons | SDP constraint to get matrix for |
mat | pointer to store the full constant matrix |
Definition at line 2691 of file cons_sdp.c.
Referenced by cutUsingEigenvector().
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 SCIPconsSdpCompLowerTriangPos
scip | SCIP data structure |
cons | SDP constraint to get data of |
mat | pointer to store the lower triangular part of the constant matrix |
Definition at line 2725 of file cons_sdp.c.
References SCIPconsSdpCompLowerTriangPos().
Referenced by diagGEzero().
SCIP_RETCODE SCIPconsSdpGuessInitialPoint | ( | SCIP * | scip, |
SCIP_CONS * | cons, | ||
SCIP_Real * | lambdastar | ||
) |
Compute a heuristic guess for a good starting solution .
The solution is computed as
where measures the sparsity of the matrices.
scip | SCIP data structure |
cons | the constraint for which the initial point should be constructed |
lambdastar | pointer to store the guess for the initial point |
Definition at line 2764 of file cons_sdp.c.
References CONSHDLR_NAME.
Referenced by SCIP_DECL_RELAXINITSOL().
SCIP_Real SCIPconsSdpGetMaxConstEntry | ( | SCIP * | scip, |
SCIP_CONS * | cons | ||
) |
Gets maximum absolute entry of constant matrix
scip | SCIP data structure |
cons | the constraint to get the maximum constant matrix entry for |
Definition at line 2860 of file cons_sdp.c.
Referenced by SCIP_DECL_RELAXINITSOL().
SCIP_Real SCIPconsSdpGetMaxSdpCoef | ( | SCIP * | scip, |
SCIP_CONS * | cons | ||
) |
Gets maximum absolute entry of all matrices
scip | SCIP data structure |
cons | the constraint to get the maximum constant matrix entry for |
Definition at line 2876 of file cons_sdp.c.
Referenced by SCIP_DECL_RELAXINITSOL().
int SCIPconsSdpComputeUbSparseSdpMatrixLength | ( | SCIP * | scip, |
SCIP_CONS * | cons | ||
) |
Computes an upper bound on the number of nonzeros of the (dual) SDP matrix , this should be used to allocate enough memory before calling SCIPconsSdpComputeSparseSdpMatrix.
Upper bound is computed as .
scip | SCIP data structure |
cons | the constraint for which the Matrix should be assembled |
Definition at line 2910 of file cons_sdp.c.
Referenced by calcRelax(), and SCIPrelaxSdpComputeAnalyticCenters().
SCIP_RETCODE SCIPconsSdpComputeSparseSdpMatrix | ( | SCIP * | scip, |
SCIP_CONS * | cons, | ||
SCIP_SOL * | sol, | ||
int * | length, | ||
int * | row, | ||
int * | col, | ||
SCIP_Real * | val | ||
) |
Computes (dual) SDP matrix and returns it in sparse format
scip | SCIP data structure |
cons | the constraint for which the Matrix should be assembled |
sol | the solution to assemble the matrix for |
length | input: allocated memory for row/col/val arrays output: number of nonzeros of the matrix / length of row/col/val arrays |
row | pointer to store row indices of SDP-matrix |
col | pointer to store column indices of SDP-matrix |
val | pointer to store values of SDP-matrix |
Definition at line 2939 of file cons_sdp.c.
References SCIPsdpVarfixerMergeArrays().
Referenced by calcRelax(), and SCIPrelaxSdpComputeAnalyticCenters().
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
scip | SCIP data structure |
cons | pointer to hold the created constraint |
name | name of constraint |
nvars | number of variables in this SDP constraint |
nnonz | number of nonzeros in this SDP constraint |
blocksize | size of this SDP-block |
nvarnonz | number of nonzeros for each variable, also length of the arrays col/row/val point to |
col | pointer to column indices of the nonzeros for each variable |
row | pointer to row indices of the nonzeros for each variable |
val | pointer to values of the nonzeros for each variable |
vars | SCIP_VARiables present in this SDP constraint that correspond to the indices in col/row/val |
constnnonz | number of nonzeros in the constant part of this SDP constraint |
constcol | column indices of the constant nonzeros |
constrow | row indices of the constant nonzeros |
constval | values of the constant nonzeros |
Definition at line 3006 of file cons_sdp.c.
References setMaxRhsEntry().
Referenced by SCIP_DECL_CONSCOPY(), scip::ObjReaderSDPAind::scip_read(), and scip::ObjReaderSDPA::scip_read().