Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods for certified solving

Functions

SCIP_Bool SCIPisCertified (SCIP *scip)
 
SCIP_Bool SCIPshouldCertificateTrackBounds (SCIP *scip)
 
SCIP_RETCODE SCIPcertifyCons (SCIP *scip, SCIP_Bool isorigfile, const char *consname, const char sense, SCIP_RATIONAL *side, int len, int *ind, SCIP_RATIONAL **val)
 
SCIP_RETCODE SCIPcertifyActivityVarBound (SCIP *scip, const char *linename, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound, SCIP_Bool ismaxactivity, SCIP_CONS *constraint, SCIP_VAR *variable, SCIP_ROWEXACT *row, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_VAR **vars, int nvars)
 
SCIP_RETCODE SCIPcertifyActivityVarBoundExact (SCIP *scip, const char *linename, SCIP_BOUNDTYPE boundtype, SCIP_RATIONAL *newbound, SCIP_Bool ismaxactivity, SCIP_CONS *constraint, SCIP_VAR *variable, SCIP_ROWEXACT *row, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_VAR **vars, int nvars)
 
SCIP_RETCODE SCIPcertifyActivityConflict (SCIP *scip, SCIP_CONS *cons, SCIP_ROWEXACT *row, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, int nvals, SCIP_RATIONAL **vals, SCIP_VAR **vars, SCIP_RATIONAL *diff, SCIP_Bool userhs)
 
SCIP_RETCODE SCIPaddCertificateAggrInfo (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_ROW **aggrrows, SCIP_Real *weights, int naggrrows, SCIP_ROW **negslackrows, SCIP_Real *negslackweights, int nnegslackrows)
 
SCIP_RETCODE SCIPstoreCertificateActiveAggrInfo (SCIP *scip, SCIP_ROW *row)
 
SCIP_RETCODE SCIPfreeCertificateActiveAggrInfo (SCIP *scip)
 
SCIP_RETCODE SCIPaddCertificateMirInfo (SCIP *scip)
 
SCIP_RETCODE SCIPstoreCertificateActiveMirInfo (SCIP *scip, SCIP_ROW *row)
 
SCIP_RETCODE SCIPcertifyMirCut (SCIP *scip, SCIP_ROW *row)
 
SCIP_RETCODE SCIPfreeCertificateActiveMirInfo (SCIP *scip)
 

Function Documentation

◆ SCIPisCertified()

◆ SCIPshouldCertificateTrackBounds()

SCIP_Bool SCIPshouldCertificateTrackBounds ( SCIP scip)

should the certificate track bound changes?

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 186 of file scip_certificate.c.

References SCIP_STAGE_INITSOLVE, SCIPinProbing(), and SCIPisCertified().

Referenced by boundchgApplyExact(), SCIPboundchgApply(), SCIPboundchgUndo(), SCIPinferVarLbConsExact(), SCIPinferVarUbConsExact(), SCIPvarChgLbLocal(), SCIPvarChgLbLocalExact(), SCIPvarChgUbLocal(), SCIPvarChgUbLocalExact(), and tightenVarBounds().

◆ SCIPcertifyCons()

SCIP_RETCODE SCIPcertifyCons ( SCIP scip,
SCIP_Bool  isorigfile,
const char *  consname,
const char  sense,
SCIP_RATIONAL side,
int  len,
int *  ind,
SCIP_RATIONAL **  val 
)

prints constraint to certificate

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipcertificate information
isorigfileshould the original solution be printed or in transformed space
consnamename of the constraint
sensesense of the constraint, i.e., G, L, or E
sideleft/right-hand side
lennumber of nonzeros
indindex array
valcoefficient array

Definition at line 203 of file scip_certificate.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcertificatePrintCons(), SCIPcheckStage, and TRUE.

Referenced by SCIPcertifyConsOrigExactLinear().

◆ SCIPcertifyActivityVarBound()

SCIP_RETCODE SCIPcertifyActivityVarBound ( SCIP scip,
const char *  linename,
SCIP_BOUNDTYPE  boundtype,
SCIP_Real  newbound,
SCIP_Bool  ismaxactivity,
SCIP_CONS constraint,
SCIP_VAR variable,
SCIP_ROWEXACT row,
SCIP_RATIONAL **  vals,
SCIP_RATIONAL lhs,
SCIP_RATIONAL rhs,
SCIP_VAR **  vars,
int  nvars 
)

prints activity bound to proof section

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
linenamename of the unsplitting line
boundtypetype of bound (upper/lower)
newboundpointer to lower bound on the objective, NULL indicating infeasibility
ismaxactivityTRUE for maxactivity, FALSE for minactivity
constraintthe constraint
variablethe variable
rowthe corresponding row, or NULL if constraint has no row representation
valsvalue array
lhslhs of the constraint
rhsrhs of the constraint
varsvariable array
nvarsnumber of values

Definition at line 235 of file scip_certificate.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIPbuffer(), SCIPcertifyActivityVarBoundExact(), SCIPcheckStage, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalSetReal(), and TRUE.

Referenced by tightenVarBounds().

◆ SCIPcertifyActivityVarBoundExact()

SCIP_RETCODE SCIPcertifyActivityVarBoundExact ( SCIP scip,
const char *  linename,
SCIP_BOUNDTYPE  boundtype,
SCIP_RATIONAL newbound,
SCIP_Bool  ismaxactivity,
SCIP_CONS constraint,
SCIP_VAR variable,
SCIP_ROWEXACT row,
SCIP_RATIONAL **  vals,
SCIP_RATIONAL lhs,
SCIP_RATIONAL rhs,
SCIP_VAR **  vars,
int  nvars 
)

prints activity bound to proof section

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
linenamename of the unsplitting line
boundtypetype of bound (upper/lower)
newboundpointer to lower bound on the objective, NULL indicating infeasibility
ismaxactivityTRUE for maxactivity, FALSE for minactivity
constraintthe constraint
variablethe variable
rowthe corresponding row, or NULL if constraint has no row representation
valsvalue array
lhslhs of the constraint
rhsrhs of the constraint
varsvariable array
nvarsnumber of values

Definition at line 277 of file scip_certificate.c.

References SCIP_VarDataExact::aggregate, SCIP_Var::aggregate, SCIP_CertificateBound::boundtype, SCIP_CertificateBound::boundval, SCIP_CertificateBound::certificateindex, SCIP_AggregateExact::constant, SCIP_Var::data, SCIP_Var::exactdata, FALSE, getInequalitySense(), SCIP_Certificate::indexcounter, SCIP_CertificateBound::isbound, SCIP_CertificateBound::isglobal, SCIP_Certificate::lastinfo, SCIP_Var::negatedvar, NULL, SCIP_AggregateExact::scalar, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CALL_ABORT, SCIP_ERROR, SCIP_Longint, SCIP_OKAY, SCIP_R_ROUND_DOWNWARDS, SCIP_R_ROUND_UPWARDS, SCIP_VARSTATUS_AGGREGATED, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_NEGATED, SCIP_VARSTATUS_ORIGINAL, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPcertificateGetConsIndex(), SCIPcertificateGetRowIndex(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPcertificateSetLastBoundIndex(), SCIPcertifyActivityVarBoundExact(), SCIPcheckStage, SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPrationalAddProdReal(), SCIPrationalAddReal(), SCIPrationalDiv(), SCIPrationalInvert(), SCIPrationalIsAbsInfinity(), SCIPrationalIsIntegral(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPrationalMultReal(), SCIPrationalNegate(), SCIPrationalRoundInteger(), SCIPrationalSetRational(), SCIPvarGetCertificateIndex(), SCIPvarGetLbCertificateIndexLocal(), SCIPvarGetNegationConstant(), SCIPvarGetType(), SCIPvarGetUbCertificateIndexLocal(), SCIP_Certificate::transfile, TRUE, SCIP_Aggregate::var, SCIP_CertificateBound::varindex, and SCIP_Var::varstatus.

Referenced by SCIPcertifyActivityVarBound(), SCIPcertifyActivityVarBoundExact(), and tightenVarBounds().

◆ SCIPcertifyActivityConflict()

SCIP_RETCODE SCIPcertifyActivityConflict ( SCIP scip,
SCIP_CONS cons,
SCIP_ROWEXACT row,
SCIP_RATIONAL lhs,
SCIP_RATIONAL rhs,
int  nvals,
SCIP_RATIONAL **  vals,
SCIP_VAR **  vars,
SCIP_RATIONAL diff,
SCIP_Bool  userhs 
)

prints activity conflict to certificate file

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
consconstraint
rowcorresponding row, or NULL if constraint does not have representation as row
lhslhs of the constraint
rhsrhs of the constraint
nvalsnumber of values
valsvalue array
varsvariable array
diffdifference between min/max activity as lhs/rhs
userhsis rhs or lhs used

Definition at line 471 of file scip_certificate.c.

References SCIP_RowExact::cols, FALSE, SCIP_Certificate::indexcounter, NULL, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIPcertificateGetConsIndex(), SCIPcertificateGetRowIndex(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPcertificateUpdateParentData(), SCIPcheckStage, SCIPgetCertificate(), SCIPgetCurrentNode(), SCIPisCertified(), SCIPrationalIsPositive(), SCIPvarGetLbCertificateIndexLocal(), SCIPvarGetUbCertificateIndexLocal(), TRUE, and SCIP_ColExact::var.

Referenced by printActivityConflictToCertificate().

◆ SCIPaddCertificateAggrInfo()

SCIP_RETCODE SCIPaddCertificateAggrInfo ( SCIP scip,
SCIP_AGGRROW aggrrow,
SCIP_ROW **  aggrrows,
SCIP_Real weights,
int  naggrrows,
SCIP_ROW **  negslackrows,
SCIP_Real negslackweights,
int  nnegslackrows 
)

adds aggregation information to certificate for one row

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
aggrrowagrrrow that results from the aggregation
aggrrowsarray of rows used fo the aggregation
weightsarray of weights
naggrrowslength of the arrays
negslackrowsarray of rows that are added implicitly with negative slack
negslackweightsarray of negative slack weights
nnegslackrowslength of the negative slack array

Definition at line 534 of file scip_certificate.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcertificateNewAggrInfo(), SCIPcheckStage, and TRUE.

Referenced by SCIPaggrRowSumRows().

◆ SCIPstoreCertificateActiveAggrInfo()

SCIP_RETCODE SCIPstoreCertificateActiveAggrInfo ( SCIP scip,
SCIP_ROW row 
)

stores the active aggregation information in the certificate data structures for a row

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
rowrow that aggregation-info is stored for

Definition at line 565 of file scip_certificate.c.

References SCIP_Certificate::aggrinfo, SCIP_Certificate::aggrinfohash, FALSE, SCIP_Certificate::naggrinfos, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPgetCertificate(), SCIPhashmapSetImage(), SCIPisCertified(), SCIPisExact(), TRUE, and SCIP_Certificate::workingaggrinfo.

Referenced by addCut().

◆ SCIPfreeCertificateActiveAggrInfo()

SCIP_RETCODE SCIPfreeCertificateActiveAggrInfo ( SCIP scip)

frees the active aggregation information

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 603 of file scip_certificate.c.

References SCIP_Certificate::aggrinfo, FALSE, SCIP_Certificate::naggrinfos, NULL, SCIP_CALL, SCIP_OKAY, SCIPcertificateFreeAggrInfo(), SCIPcheckStage, SCIPgetCertificate(), SCIPisCertified(), SCIPisExact(), TRUE, and SCIP_Certificate::workingaggrinfo.

Referenced by SCIP_DECL_SEPAEXECLP().

◆ SCIPaddCertificateMirInfo()

SCIP_RETCODE SCIPaddCertificateMirInfo ( SCIP scip)

adds mir information (split, etc) to certificate for one row

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

adds aggregation information to certificate for one row

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 644 of file scip_certificate.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcertificateNewMirInfo(), SCIPcheckStage, and TRUE.

Referenced by calcMIRSafely().

◆ SCIPstoreCertificateActiveMirInfo()

SCIP_RETCODE SCIPstoreCertificateActiveMirInfo ( SCIP scip,
SCIP_ROW row 
)

stores the active mir information in the certificate data structures for a row

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
rowrow that mirinfo is stored for

Definition at line 668 of file scip_certificate.c.

References FALSE, SCIP_MirInfo::localbdused, SCIP_Certificate::mirinfo, SCIP_Certificate::mirinfohash, SCIP_Certificate::nmirinfos, SCIP_MirInfo::nslacks, SCIP_MirInfo::nsplitvars, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPcheckStage, SCIPgetCertificate(), SCIPgetNVars(), SCIPhashmapSetImage(), SCIPisCertified(), SCIPisExact(), SCIPreallocBlockMemoryArray, SCIP_MirInfo::slackcoefficients, SCIP_MirInfo::slackroundeddown, SCIP_MirInfo::slackrows, SCIP_MirInfo::slackscale, SCIP_MirInfo::slacksign, SCIP_MirInfo::slackusedcoef, SCIP_MirInfo::slackweight, SCIP_MirInfo::splitcoefficients, TRUE, SCIP_MirInfo::upperused, SCIP_MirInfo::varinds, and SCIP_Certificate::workingmirinfo.

Referenced by addCut().

◆ SCIPcertifyMirCut()

SCIP_RETCODE SCIPcertifyMirCut ( SCIP scip,
SCIP_ROW row 
)

print MIR cut to certificate file

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
rowrow that needs to be certified

Definition at line 742 of file scip_certificate.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcertificatePrintMirCut(), SCIPcheckStage, SCIPgetCertificate(), SCIPisCertified(), SCIPisExact(), and TRUE.

Referenced by addCut().

◆ SCIPfreeCertificateActiveMirInfo()

SCIP_RETCODE SCIPfreeCertificateActiveMirInfo ( SCIP scip)