SCIP Doxygen Documentation
Loading...
Searching...
No Matches

Detailed Description

methods for certificate output

Author
Ambros Gleixner
Daniel Steffy
Leon Eifler

Definition in file certificate.cpp.

#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <map>
#include "lpiexact/lpiexact.h"
#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/lp.h"
#include "scip/lpexact.h"
#include "scip/misc.h"
#include "scip/pub_cons.h"
#include "scip/pub_lpexact.h"
#include "scip/pub_misc.h"
#include "scip/pub_message.h"
#include "scip/pub_tree.h"
#include "scip/pub_var.h"
#include "scip/prob.h"
#include "scip/cuts.h"
#include "scip/cons_exactlinear.h"
#include "scip/scip_certificate.h"
#include "scip/scip_exact.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_numerics.h"
#include "scip/scip_prob.h"
#include "scip/scip_probing.h"
#include "scip/scip_sol.h"
#include "scip/scip_solve.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_tree.h"
#include "scip/set.h"
#include "scip/sol.h"
#include "scip/struct_certificate.h"
#include "scip/struct_lpexact.h"
#include "scip/struct_scip.h"
#include "scip/struct_stat.h"
#include "scip/struct_var.h"
#include "scip/var.h"
#include "scip/certificate.h"

Go to the source code of this file.

Macros

#define SCIP_HASHSIZE_CERTIFICATE   500
#define SCIP_MB_TO_CHAR_RATE   1048576.0

Functions

static SCIP_Bool checkAndUpdateFilesize (SCIP_CERTIFICATE *certificate, SCIP_Real nchars)
static SCIP_Bool certificateIsLeftNode (SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
static SCIP_Longint printBoundAssumption (SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_RATIONAL *boundval, SCIP_BOUNDTYPE boundtype)
static SCIP_RETCODE certificateFreeNodeData (SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
static SCIP_RETCODE certificatePrintDualbound (SCIP_CERTIFICATE *certificate, const char *linename, SCIP_RATIONAL *lowerbound, int len, SCIP_Longint *ind, SCIP_RATIONAL **val)
static SCIP_RETCODE certificatePrintSol (SCIP *scip, SCIP_Bool isorigfile, SCIP_CERTIFICATE *certificate, SCIP_SOL *sol)
SCIP_RETCODE SCIPcertificateUpdateBoundData (SCIP_CERTIFICATE *certificate, SCIP_NODE *node, SCIP_Longint fileindex, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPcertificateCreate (SCIP_CERTIFICATE **certificate, SCIP_MESSAGEHDLR *messagehdlr)
void SCIPcertificateFree (SCIP_CERTIFICATE **certificate)
SCIP_RETCODE SCIPcertificateInit (SCIP *scip, SCIP_CERTIFICATE *certificate, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
SCIP_RETCODE SCIPcertificateInitTransFile (SCIP *scip)
static void concatenateCertificate (SCIP_CERTIFICATE *certificate)
SCIP_RETCODE SCIPcertificateExit (SCIP *scip)
SCIP_CERTIFICATESCIPgetCertificate (SCIP *scip)
SCIP_Bool SCIPcertificateIsEnabled (SCIP_CERTIFICATE *certificate)
SCIP_Real SCIPcertificateGetFilesize (SCIP_CERTIFICATE *certificate)
SCIP_Longint SCIPcertificateGetCurrentIndex (SCIP_CERTIFICATE *certificate)
SCIP_Bool SCIPcertificateEnsureLastBoundInfoConsistent (SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound, SCIP_Bool needsglobal)
SCIP_RETCODE SCIPcertificateSetAndPrintObjective (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, BMS_BLKMEM *blkmem, SCIP_RATIONAL **coefs, int nvars)
SCIP_RETCODE SCIPcertificatePrintResult (SCIP *scip, SCIP_Bool isorigfile, SCIP_SET *set, SCIP_CERTIFICATE *certificate)
SCIP_RETCODE SCIPcertificateSaveFinalbound (SCIP *scip, SCIP_CERTIFICATE *certificate)
void SCIPcertificatePrintProblemMessage (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *formatstr,...)
void SCIPcertificatePrintProofMessage (SCIP_CERTIFICATE *certificate, const char *formatstr,...)
SCIP_RETCODE SCIPcertificatePrintProblemRational (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, SCIP_RATIONAL *val)
SCIP_RETCODE SCIPcertificatePrintProofRational (SCIP_CERTIFICATE *certificate, SCIP_RATIONAL *val)
void SCIPcertificatePrintProblemComment (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *formatstr,...)
void SCIPcertificatePrintProofComment (SCIP_CERTIFICATE *certificate, const char *formatstr,...)
void SCIPcertificatePrintVersionHeader (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
void SCIPcertificatePrintVarHeader (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nvars)
void SCIPcertificatePrintIntHeader (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nintvars)
void SCIPcertificatePrintConsHeader (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nconss, int nboundconss)
void SCIPcertificatePrintDerHeader (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
SCIP_RETCODE SCIPcertificatePrintCons (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *consname, const char sense, SCIP_RATIONAL *side, int len, int *ind, SCIP_RATIONAL **val)
static SCIP_RETCODE certificatePrintRow (SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_ROWEXACT *rowexact, SCIP_Real alternativerhs)
static SCIP_RETCODE certificatePrintMirSplit (SCIP_SET *set, SCIP_PROB *prob, SCIP_CERTIFICATE *certificate, SCIP_ROW *row)
static SCIP_RETCODE certificatePrintWeakDerStart (SCIP_CERTIFICATE *certificate, SCIP_PROB *prob, SCIP_Bool local)
SCIP_RETCODE SCIPcertificatePrintMirCut (SCIP_SET *set, SCIP_LP *lp, SCIP_CERTIFICATE *certificate, SCIP_PROB *prob, SCIP_ROW *row, const char sense)
SCIP_RETCODE SCIPcertificatePrintBoundCons (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *boundname, SCIP_VAR *var, SCIP_RATIONAL *boundval, SCIP_Bool isupper)
SCIP_RETCODE SCIPcertificateUpdateParentData (SCIP_CERTIFICATE *certificate, SCIP_NODE *node, SCIP_Longint fileindex, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPcertificatePrintDualboundExactLP (SCIP_CERTIFICATE *certificate, SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_NODE *node, SCIP_PROB *prob, SCIP_Bool usefarkas)
SCIP_RETCODE SCIPcertificatePrintDualboundPseudo (SCIP_CERTIFICATE *certificate, SCIP_LPEXACT *lpexact, SCIP_NODE *node, SCIP_SET *set, SCIP_PROB *prob, SCIP_Bool lowerchanged, int modifiedvarindex, SCIP_Longint boundchangeindex, SCIP_Real psval)
SCIP_RETCODE SCIPcertificatePrintInheritedBound (SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
SCIP_Longint SCIPcertificateGetRowIndex (SCIP_CERTIFICATE *certificate, SCIP_ROWEXACT *row, SCIP_Bool rhs)
SCIP_RETCODE SCIPcertificateUpdateBranchingData (SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_STAT *stat, SCIP_LP *lp, SCIP_NODE *node, SCIP_VAR *branchvar, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound)
SCIP_RETCODE SCIPcertificateNewNodeData (SCIP_CERTIFICATE *certificate, SCIP_STAT *stat, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificatePrintCutoffBound (SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_RATIONAL *bound, SCIP_Longint *certificateline)
SCIP_RETCODE SCIPcertificatePrintAggrrow (SCIP_SET *set, SCIP_PROB *prob, SCIP_CERTIFICATE *certificate, SCIP_AGGRROW *aggrrow, SCIP_ROW **aggrrows, SCIP_Real *weights, int naggrrows, SCIP_Bool local, SCIP_Longint *certificateline)
SCIP_RETCODE SCIPcertificateClearAggrinfo (SCIP *scip)
SCIP_RETCODE SCIPcertificateClearMirinfo (SCIP *scip)
SCIP_RETCODE SCIPcertificateFreeAggrInfo (SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_LP *lp, SCIP_AGGREGATIONINFO *aggrinfo, SCIP_ROW *row)
SCIP_RETCODE SCIPcertificateFreeMirInfo (SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_LP *lp, SCIP_MIRINFO *mirinfo, SCIP_ROW *row)
SCIP_RETCODE SCIPcertificateFreeRowInfo (SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPcertificateNewAggrInfo (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_ROW **aggrrows, SCIP_Real *weights, int naggrrows, SCIP_ROW **negslackrows, SCIP_Real *negslackweights, int nnegslackrows)
SCIP_RETCODE SCIPcertificateNewMirInfo (SCIP *scip)
SCIP_RETCODE SCIPcertificatePrintUnsplitting (SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificatePrintRtpRange (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, SCIP_RATIONAL *lowerbound, SCIP_RATIONAL *upperbound)
void SCIPcertificatePrintRtpInfeas (SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
SCIP_RETCODE SCIPcertificateSetLastBoundIndex (SCIP_CERTIFICATE *certificate, SCIP_Longint index)
SCIP_Longint SCIPcertificateGetLastBoundIndex (SCIP_CERTIFICATE *certificate)
SCIP_RETCODE SCIPcertificatePrintCutoffConflictingBounds (SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_Longint lbindex, SCIP_Longint ubindex)
SCIP_RETCODE SCIPcertificatePrintGlobalBound (SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_RATIONAL *value, SCIP_Longint certificateindex)
SCIP_RETCODE SCIPconsPrintCertificateExactLinear (SCIP *scip, SCIP_CONS *cons)
SCIP_Longint SCIPcertificateGetConsIndex (SCIP_CERTIFICATE *certificate, SCIP_CONS *cons, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool useRhs)

Macro Definition Documentation

◆ SCIP_HASHSIZE_CERTIFICATE

#define SCIP_HASHSIZE_CERTIFICATE   500

size of hash map for certificate -> nodesdata mapping used for certificate output

Definition at line 77 of file certificate.cpp.

Referenced by SCIPcertificateInit().

◆ SCIP_MB_TO_CHAR_RATE

#define SCIP_MB_TO_CHAR_RATE   1048576.0

conversion rate from MB to characters

Definition at line 78 of file certificate.cpp.

Referenced by checkAndUpdateFilesize().

Function Documentation

◆ checkAndUpdateFilesize()

SCIP_Bool checkAndUpdateFilesize ( SCIP_CERTIFICATE * certificate,
SCIP_Real nchars )
static

updates file size and returns whether maximum file size has been reached

Parameters
certificatecertificate information
ncharsnumber of characters printed

Definition at line 82 of file certificate.cpp.

References FALSE, SCIP_Certificate::filesize, SCIP_Certificate::maxfilesize, SCIP_Bool, SCIP_MB_TO_CHAR_RATE, SCIP_Real, and TRUE.

Referenced by SCIPcertificateExit(), SCIPcertificatePrintProblemComment(), SCIPcertificatePrintProblemMessage(), SCIPcertificatePrintProblemRational(), SCIPcertificatePrintProofComment(), SCIPcertificatePrintProofMessage(), and SCIPcertificatePrintProofRational().

◆ certificateIsLeftNode()

SCIP_Bool certificateIsLeftNode ( SCIP_CERTIFICATE * certificate,
SCIP_NODE * node )
static

checks whether node is a left node or not

Parameters
certificatecertificate information
nodenode from branch and bound tree

Definition at line 96 of file certificate.cpp.

References assert(), SCIP_Certnodedata::assumptionindex_left, FALSE, nodedata, SCIP_Certificate::nodedatahash, NULL, SCIP_Bool, SCIP_NODETYPE_PROBINGNODE, SCIPcertificateIsEnabled(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPnodeGetParent(), SCIPnodeGetType(), and TRUE.

Referenced by SCIPcertificateUpdateParentData().

◆ printBoundAssumption()

SCIP_Longint printBoundAssumption ( SCIP_CERTIFICATE * certificate,
SCIP_VAR * var,
SCIP_RATIONAL * boundval,
SCIP_BOUNDTYPE boundtype )
static

prints variable bound assumption into certificate

Returns
index of this bound in the certificate file
Parameters
certificatecertificate information
varvariable to print assumption for
boundvalvalue of the bound
boundtypeis it the upper bound?

Definition at line 131 of file certificate.cpp.

References assert(), SCIP_CertificateBound::boundtype, SCIP_CertificateBound::boundval, SCIP_CertificateBound::certificateindex, FALSE, SCIP_Certificate::indexcounter, SCIP_CertificateBound::isbound, SCIP_CertificateBound::isglobal, SCIP_Certificate::lastinfo, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_Longint, SCIPcertificateIsEnabled(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPrationalSetRational(), SCIPvarGetCertificateIndex(), TRUE, var, and SCIP_CertificateBound::varindex.

Referenced by SCIPcertificateUpdateBranchingData().

◆ certificateFreeNodeData()

SCIP_RETCODE certificateFreeNodeData ( SCIP_CERTIFICATE * certificate,
SCIP_NODE * node )
static

free nodedata of corresponding node

Parameters
certificatecertificate information
nodefocus node

Definition at line 162 of file certificate.cpp.

References assert(), SCIP_Certificate::blkmem, BMSfreeBlockMemory, nodedata, SCIP_Certificate::nodedatahash, NULL, SCIP_CALL, SCIP_OKAY, SCIPcertificateIsEnabled(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapRemove(), and SCIPrationalFreeBlock().

Referenced by SCIPcertificatePrintUnsplitting().

◆ certificatePrintDualbound()

SCIP_RETCODE certificatePrintDualbound ( SCIP_CERTIFICATE * certificate,
const char * linename,
SCIP_RATIONAL * lowerbound,
int len,
SCIP_Longint * ind,
SCIP_RATIONAL ** val )
static

prints dual bound to proof section and increments indexcounter

Parameters
certificatecertificate data structure
linenamename of the unsplitting line
lowerboundpointer to lower bound on the objective, NULL indicating infeasibility
lennumber of dual multipiers
indindex array
valarray of dual multipliers

Definition at line 186 of file certificate.cpp.

References assert(), FALSE, i, SCIP_Certificate::indexcounter, SCIP_CertificateBound::isbound, SCIP_Certificate::lastinfo, NULL, SCIP_Certificate::objintegral, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_R_ROUND_UPWARDS, SCIPcertificateIsEnabled(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPrationalIsAbsInfinity(), SCIPrationalIsInfinity(), SCIPrationalIsIntegral(), SCIPrationalIsNegInfinity(), and SCIPrationalRoundInteger().

Referenced by SCIPcertificatePrintDualboundExactLP(), SCIPcertificatePrintDualboundPseudo(), SCIPcertificatePrintInheritedBound(), and SCIPcertificatePrintUnsplitting().

◆ certificatePrintSol()

SCIP_RETCODE certificatePrintSol ( SCIP * scip,
SCIP_Bool isorigfile,
SCIP_CERTIFICATE * certificate,
SCIP_SOL * sol )
static

prints the best solution found

Parameters
scipSCIP data structure
isorigfileshould the original solution be printed or in transformed space
certificatecertificate information
solsolution to be printed

Definition at line 264 of file certificate.cpp.

References assert(), i, NULL, nvars, SCIP_Certificate::origfile, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPbuffer(), SCIPcertificatePrintProblemMessage(), SCIPcertificatePrintProblemRational(), SCIPgetOrigVarsData(), SCIPgetVarsData(), SCIPmakeSolExact(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBufferArray(), SCIPrationalIsZero(), SCIPsolGetValExact(), SCIPsolIsExact(), SCIPvarGetCertificateIndex(), sol, and vars.

Referenced by SCIPcertificatePrintResult().

◆ SCIPcertificateUpdateBoundData()

SCIP_RETCODE SCIPcertificateUpdateBoundData ( SCIP_CERTIFICATE * certificate,
SCIP_NODE * node,
SCIP_Longint fileindex,
SCIP_RATIONAL * newbound )

updates the current derived bound of the node with newbound, if newbound is better

Parameters
certificatecertificate information
nodenode data structure
fileindexindex of new bound's proof
newboundvalue of new bound

Definition at line 333 of file certificate.cpp.

References assert(), FALSE, nodedata, SCIP_Certificate::nodedatahash, SCIP_Longint, SCIP_OKAY, SCIPcertificateIsEnabled(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPrationalIsLT(), and SCIPrationalSetRational().

Referenced by SCIPcertificatePrintDualboundExactLP(), and SCIPcertificatePrintDualboundPseudo().

◆ SCIPcertificateCreate()

SCIP_RETCODE SCIPcertificateCreate ( SCIP_CERTIFICATE ** certificate,
SCIP_MESSAGEHDLR * messagehdlr )

creates certificate data structure

Parameters
certificatepointer to store the certificate information
messagehdlrmessage handler

Definition at line 360 of file certificate.cpp.

References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIP_REAL_MAX.

Referenced by SCIPstatCreate().

◆ SCIPcertificateFree()

void SCIPcertificateFree ( SCIP_CERTIFICATE ** certificate)

frees certificate data structure

Parameters
certificatepointer to store the certificate information

Definition at line 403 of file certificate.cpp.

References assert(), BMSfreeMemory, and NULL.

Referenced by SCIPstatFree().

◆ SCIPcertificateInit()

SCIP_RETCODE SCIPcertificateInit ( SCIP * scip,
SCIP_CERTIFICATE * certificate,
BMS_BLKMEM * blkmem,
SCIP_SET * set,
SCIP_MESSAGEHDLR * messagehdlr )

initializes certificate information and creates files for certificate output

Parameters
scipscip data structure
certificatecertificate information
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler

Definition at line 418 of file certificate.cpp.

References SCIP_Certificate::aggrinfo, SCIP_Certificate::aggrinfohash, SCIP_Certificate::aggrinfosize, assert(), SCIP_Certificate::blkmem, BMSallocMemoryArray, BMScopyMemoryArray, SCIP_Certificate::derivationfile, SCIP_Certificate::derivationfilename, FALSE, SCIP_Certificate::finalbound, SCIP_Certificate::maxfilesize, SCIP_Certificate::mirinfo, SCIP_Certificate::mirinfohash, SCIP_Certificate::mirinfosize, SCIP_Certificate::nodedatahash, NULL, nvars, SCIP_Certificate::origfile, SCIP_Certificate::origfilename, SCIP_Certificate::rootbound, SCIP_Certificate::rowdatahash, SCIP_ALLOC, SCIP_CALL, SCIP_ERROR, SCIP_FILECREATEERROR, SCIP_HASHSIZE_CERTIFICATE, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIP_VERBLEVEL_NORMAL, SCIPABORT, SCIPallocBlockMemoryArray, SCIPblkmem(), SCIPbuffer(), SCIPcertificatePrintBoundCons(), SCIPcertificatePrintConsHeader(), SCIPcertificatePrintIntHeader(), SCIPcertificatePrintProblemMessage(), SCIPcertificatePrintVarHeader(), SCIPcertificatePrintVersionHeader(), SCIPcertificateSetAndPrintObjective(), SCIPcertifyConsOrigExactLinear(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPfopen(), SCIPgetLhsExactLinear(), SCIPgetNConss(), SCIPgetNOrigConss(), SCIPgetNVars(), SCIPgetOrigConss(), SCIPgetOrigVarsData(), SCIPgetRhsExactLinear(), SCIPgetVarsData(), SCIPhashmapCreate(), SCIPmessagePrintVerbInfo(), SCIPprintSysError(), SCIPrationalCreateBlock(), SCIPrationalCreateBlockArray(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBufferArray(), SCIPrationalIsAbsInfinity(), SCIPrationalIsEQ(), SCIPrationalSetRational(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPvarGetCertificateIndex(), SCIPvarGetLbGlobalExact(), SCIPvarGetName(), SCIPvarGetObjExact(), SCIPvarGetType(), SCIPvarGetUbGlobalExact(), SCIPvarSetCertificateIndex(), SCIP_Certificate::transfile, TRUE, SCIP_Certificate::vals, SCIP_Certificate::valssize, and vars.

Referenced by initSolve().

◆ SCIPcertificateInitTransFile()

SCIP_RETCODE SCIPcertificateInitTransFile ( SCIP * scip)

initializes certificate information and creates files for certificate output

Parameters
scipscip data structure

Definition at line 617 of file certificate.cpp.

References assert(), cutoff, SCIP_Certificate::derivationfile, FALSE, SCIP_Certificate::indexcounter, NULL, nvars, SCIP_Certificate::origfile, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_FILECREATEERROR, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPABORT, SCIPblkmem(), SCIPbuffer(), SCIPcertificatePrintBoundCons(), SCIPcertificatePrintConsHeader(), SCIPcertificatePrintIntHeader(), SCIPcertificatePrintProblemMessage(), SCIPcertificatePrintVarHeader(), SCIPcertificatePrintVersionHeader(), SCIPcertificateSetAndPrintObjective(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsPrintCertificateExactLinear(), SCIPconstructLP(), SCIPdebug, SCIPdebugMessage, SCIPerrorMessage, SCIPgetCertificate(), SCIPgetConss(), SCIPgetLhsExactLinear(), SCIPgetNConss(), SCIPgetRhsExactLinear(), SCIPgetVarsData(), SCIPisLPConstructed(), SCIPprintCons(), SCIPprintSysError(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBufferArray(), SCIPrationalIsAbsInfinity(), SCIPrationalIsEQ(), SCIPrationalSetRational(), SCIPvarGetCertificateIndex(), SCIPvarGetLbGlobalExact(), SCIPvarGetName(), SCIPvarGetObjExact(), SCIPvarGetType(), SCIPvarGetUbGlobalExact(), SCIPvarSetCertificateIndex(), SCIPvarSetLbCertificateIndexGlobal(), SCIPvarSetUbCertificateIndexGlobal(), SCIP_Certificate::transfile, SCIP_Certificate::transfile_initialized, TRUE, and vars.

Referenced by SCIPsolveCIP().

◆ concatenateCertificate()

void concatenateCertificate ( SCIP_CERTIFICATE * certificate)
static

concatenates the certificate and the _der file and deletes the _der file

Parameters
certificatethe certificate pointer

Definition at line 782 of file certificate.cpp.

References SCIP_Certificate::derivationfilename, SCIP_MAXSTRLEN, SCIPfclose(), SCIPfopen(), SCIPfread(), SCIPfwrite(), and SCIP_Certificate::transfile.

Referenced by SCIPcertificateExit().

◆ SCIPcertificateExit()

◆ SCIPgetCertificate()

◆ SCIPcertificateIsEnabled()

SCIP_Bool SCIPcertificateIsEnabled ( SCIP_CERTIFICATE * certificate)

returns whether the certificate output is activated

Parameters
certificatecertificate information

Definition at line 896 of file certificate.cpp.

References SCIP_Certificate::derivationfile, FALSE, NULL, SCIP_Certificate::origfile, SCIP_Bool, SCIP_Certificate::transfile, and TRUE.

Referenced by certificateFreeNodeData(), certificateIsLeftNode(), certificatePrintDualbound(), certificatePrintMirSplit(), certificatePrintRow(), certificatePrintWeakDerStart(), printBoundAssumption(), SCIPcertificateClearAggrinfo(), SCIPcertificateClearMirinfo(), SCIPcertificateEnsureLastBoundInfoConsistent(), SCIPcertificateExit(), SCIPcertificateFreeAggrInfo(), SCIPcertificateFreeMirInfo(), SCIPcertificateGetCurrentIndex(), SCIPcertificateGetFilesize(), SCIPcertificateGetLastBoundIndex(), SCIPcertificateNewAggrInfo(), SCIPcertificateNewMirInfo(), SCIPcertificateNewNodeData(), SCIPcertificatePrintAggrrow(), SCIPcertificatePrintBoundCons(), SCIPcertificatePrintCons(), SCIPcertificatePrintConsHeader(), SCIPcertificatePrintCutoffBound(), SCIPcertificatePrintDerHeader(), SCIPcertificatePrintDualboundExactLP(), SCIPcertificatePrintDualboundPseudo(), SCIPcertificatePrintInheritedBound(), SCIPcertificatePrintIntHeader(), SCIPcertificatePrintMirCut(), SCIPcertificatePrintProblemComment(), SCIPcertificatePrintProblemMessage(), SCIPcertificatePrintProblemRational(), SCIPcertificatePrintProofComment(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPcertificatePrintResult(), SCIPcertificatePrintRtpInfeas(), SCIPcertificatePrintRtpRange(), SCIPcertificatePrintUnsplitting(), SCIPcertificatePrintVarHeader(), SCIPcertificatePrintVersionHeader(), SCIPcertificateSaveFinalbound(), SCIPcertificateSetAndPrintObjective(), SCIPcertificateSetLastBoundIndex(), SCIPcertificateUpdateBoundData(), SCIPcertificateUpdateBranchingData(), SCIPcertificateUpdateParentData(), SCIPdomchgAddCurrentCertificateIndex(), SCIPfreeSolve(), and SCIPisCertified().

◆ SCIPcertificateGetFilesize()

SCIP_Real SCIPcertificateGetFilesize ( SCIP_CERTIFICATE * certificate)

returns current certificate file size in MB

Parameters
certificatecertificate information

Definition at line 906 of file certificate.cpp.

References SCIP_Certificate::filesize, SCIP_Real, and SCIPcertificateIsEnabled().

◆ SCIPcertificateGetCurrentIndex()

◆ SCIPcertificateEnsureLastBoundInfoConsistent()

SCIP_Bool SCIPcertificateEnsureLastBoundInfoConsistent ( SCIP_CERTIFICATE * certificate,
SCIP_VAR * var,
SCIP_BOUNDTYPE boundtype,
SCIP_Real newbound,
SCIP_Bool needsglobal )

◆ SCIPcertificateSetAndPrintObjective()

SCIP_RETCODE SCIPcertificateSetAndPrintObjective ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
BMS_BLKMEM * blkmem,
SCIP_RATIONAL ** coefs,
int nvars )

sets the objective function used when printing dual bounds

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
blkmemblock memory
coefsobjective function coefficients
nvarsnumber of variables

Definition at line 964 of file certificate.cpp.

References assert(), BMSallocBlockMemory, SCIP_CertificateBound::boundval, i, SCIP_Certificate::lastinfo, NULL, nvars, obj, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPcertificateIsEnabled(), SCIPcertificatePrintProblemMessage(), SCIPcertificatePrintProblemRational(), SCIPrationalCreateBlock(), SCIPrationalIsZero(), and SCIPsnprintf().

Referenced by SCIPcertificateInit(), and SCIPcertificateInitTransFile().

◆ SCIPcertificatePrintResult()

◆ SCIPcertificateSaveFinalbound()

SCIP_RETCODE SCIPcertificateSaveFinalbound ( SCIP * scip,
SCIP_CERTIFICATE * certificate )

prints the last part of the certificate header (RTP range/sol, ...)

Parameters
scipSCIP data structure
certificatecertificate information

Definition at line 1131 of file certificate.cpp.

References assert(), SCIP_Certificate::finalbound, NULL, SCIP_OKAY, SCIPcertificateIsEnabled(), and SCIPgetLowerboundExact().

Referenced by SCIPsolve().

◆ SCIPcertificatePrintProblemMessage()

void SCIPcertificatePrintProblemMessage ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
const char * formatstr,
... )

prints a string to the problem section of the certificate file

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
formatstrformat string like in printf() function
...format arguments line in printf() function

Definition at line 1147 of file certificate.cpp.

References checkAndUpdateFilesize(), SCIP_Certificate::origfile, SCIP_Bool, SCIP_MAXSTRLEN, SCIPcertificateIsEnabled(), SCIPfprintf(), and SCIP_Certificate::transfile.

Referenced by certificatePrintSol(), SCIPcertificateInit(), SCIPcertificateInitTransFile(), SCIPcertificatePrintBoundCons(), SCIPcertificatePrintCons(), SCIPcertificatePrintConsHeader(), SCIPcertificatePrintDerHeader(), SCIPcertificatePrintIntHeader(), SCIPcertificatePrintRtpInfeas(), SCIPcertificatePrintRtpRange(), SCIPcertificatePrintVarHeader(), SCIPcertificatePrintVersionHeader(), and SCIPcertificateSetAndPrintObjective().

◆ SCIPcertificatePrintProofMessage()

void SCIPcertificatePrintProofMessage ( SCIP_CERTIFICATE * certificate,
const char * formatstr,
... )

◆ SCIPcertificatePrintProblemRational()

SCIP_RETCODE SCIPcertificatePrintProblemRational ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
SCIP_RATIONAL * val )

prints a rational number to the problem section of the certificate file

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
valrational number to print

Definition at line 1199 of file certificate.cpp.

References BMSallocMemoryArray, BMSfreeMemoryArray, checkAndUpdateFilesize(), NULL, SCIP_Certificate::origfile, SCIP_ALLOC, SCIP_Bool, SCIP_OKAY, SCIPcertificateIsEnabled(), SCIPfputs(), SCIPrationalStrLen(), SCIPrationalToString(), and SCIP_Certificate::transfile.

Referenced by certificatePrintSol(), SCIPcertificatePrintBoundCons(), SCIPcertificatePrintCons(), SCIPcertificatePrintRtpRange(), and SCIPcertificateSetAndPrintObjective().

◆ SCIPcertificatePrintProofRational()

◆ SCIPcertificatePrintProblemComment()

void SCIPcertificatePrintProblemComment ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
const char * formatstr,
... )

prints a comment to the problem section of the certificate file

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
formatstrformat string like in printf() function
...format arguments line in printf() function

Definition at line 1252 of file certificate.cpp.

References checkAndUpdateFilesize(), SCIP_Certificate::origfile, SCIP_Bool, SCIP_MAXSTRLEN, SCIPcertificateIsEnabled(), SCIPfprintf(), and SCIP_Certificate::transfile.

◆ SCIPcertificatePrintProofComment()

void SCIPcertificatePrintProofComment ( SCIP_CERTIFICATE * certificate,
const char * formatstr,
... )

prints a comment to the proof section of the certificate file

Parameters
certificatecertificate information
formatstrformat string like in printf() function
...format arguments line in printf() function

Definition at line 1282 of file certificate.cpp.

References checkAndUpdateFilesize(), SCIP_Certificate::derivationfile, SCIP_MAXSTRLEN, SCIPcertificateIsEnabled(), and SCIPfprintf().

◆ SCIPcertificatePrintVersionHeader()

void SCIPcertificatePrintVersionHeader ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile )

prints version header

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile

Definition at line 1307 of file certificate.cpp.

References assert(), NULL, SCIP_Bool, SCIPcertificateIsEnabled(), and SCIPcertificatePrintProblemMessage().

Referenced by SCIPcertificateInit(), and SCIPcertificateInitTransFile().

◆ SCIPcertificatePrintVarHeader()

void SCIPcertificatePrintVarHeader ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
int nvars )

prints variable section header

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
nvarsnumber of variables

Definition at line 1322 of file certificate.cpp.

References assert(), NULL, nvars, SCIP_Bool, SCIPcertificateIsEnabled(), and SCIPcertificatePrintProblemMessage().

Referenced by SCIPcertificateInit(), and SCIPcertificateInitTransFile().

◆ SCIPcertificatePrintIntHeader()

void SCIPcertificatePrintIntHeader ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
int nintvars )

prints integer section header

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
nintvarsnumber of integer variables

Definition at line 1340 of file certificate.cpp.

References assert(), NULL, SCIP_Bool, SCIPcertificateIsEnabled(), and SCIPcertificatePrintProblemMessage().

Referenced by SCIPcertificateInit(), and SCIPcertificateInitTransFile().

◆ SCIPcertificatePrintConsHeader()

void SCIPcertificatePrintConsHeader ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
int nconss,
int nboundconss )

prints constraint section header

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
nconssnumber of all constraints
nboundconssnumber of bound constraints

Definition at line 1358 of file certificate.cpp.

References assert(), NULL, SCIP_Bool, SCIPcertificateIsEnabled(), and SCIPcertificatePrintProblemMessage().

Referenced by SCIPcertificateInit(), and SCIPcertificateInitTransFile().

◆ SCIPcertificatePrintDerHeader()

void SCIPcertificatePrintDerHeader ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile )

prints derivation section header

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile

Definition at line 1377 of file certificate.cpp.

References assert(), SCIP_Certificate::conscounter, SCIP_Certificate::indexcounter, NULL, SCIP_Bool, SCIP_Longint, SCIPcertificateIsEnabled(), and SCIPcertificatePrintProblemMessage().

Referenced by SCIPcertificatePrintResult().

◆ SCIPcertificatePrintCons()

SCIP_RETCODE SCIPcertificatePrintCons ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
const char * consname,
const char sense,
SCIP_RATIONAL * side,
int len,
int * ind,
SCIP_RATIONAL ** val )

prints constraint

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
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 1399 of file certificate.cpp.

References SCIP_Certificate::conscounter, FALSE, i, SCIP_Certificate::indexcounter, SCIP_Certificate::indexcounter_ori, SCIP_CertificateBound::isbound, SCIP_Certificate::lastinfo, NULL, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIPcertificateIsEnabled(), SCIPcertificatePrintProblemMessage(), and SCIPcertificatePrintProblemRational().

Referenced by SCIPcertifyCons(), and SCIPconsPrintCertificateExactLinear().

◆ certificatePrintRow()

SCIP_RETCODE certificatePrintRow ( SCIP_SET * set,
SCIP_CERTIFICATE * certificate,
SCIP_ROWEXACT * rowexact,
SCIP_Real alternativerhs )
static

prints a line for an exact row to the certificate (without derivation)

Parameters
alternativerhsis used instead of the real rhs of the row (infinity if real rhs should be used). This is necessary for integer cut where the rhs was rounded down from the original rhs
Parameters
setglobal SCIP settings
certificatecertificate structure
rowexactexact SCIP row
alternativerhsrhs to be used instead or rowexact->rhs (infinity to disable this)

Definition at line 1458 of file certificate.cpp.

References assert(), SCIP_Row::cols, SCIP_RowExact::cols, FALSE, SCIP_ColExact::fpcol, SCIP_RowExact::fprow, i, SCIP_Var::index, SCIP_Certificate::indexcounter, SCIP_CertificateBound::isbound, SCIP_Certificate::lastinfo, SCIP_Row::name, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcertificateIsEnabled(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPcolExactGetVar(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalSetReal(), SCIProwExactGetCols(), SCIProwExactGetNNonz(), SCIProwExactGetRhs(), SCIProwExactGetRow(), SCIProwExactGetVals(), SCIProwGetNNonz(), SCIPsetIsInfinity(), SCIPvarGetCertificateIndex(), and SCIP_Col::var.

Referenced by SCIPcertificatePrintMirCut().

◆ certificatePrintMirSplit()

◆ certificatePrintWeakDerStart()

SCIP_RETCODE certificatePrintWeakDerStart ( SCIP_CERTIFICATE * certificate,
SCIP_PROB * prob,
SCIP_Bool local )
static

prints all local bounds that differ from their global bounds as the bounds to take into account

Parameters
certificateSCIP certificate
probSCIP problem data
localTRUE if the cut is only valid locally

Definition at line 1713 of file certificate.cpp.

References assert(), i, nvars, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIPcertificateIsEnabled(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPprobGetNVars(), SCIPprobGetVars(), SCIPrationalIsEQ(), SCIPvarGetCertificateIndex(), SCIPvarGetLbCertificateIndexLocal(), SCIPvarGetLbLocalExact(), SCIPvarGetUbCertificateIndexLocal(), SCIPvarGetUbLocalExact(), var, and vars.

Referenced by SCIPcertificatePrintAggrrow(), and SCIPcertificatePrintMirCut().

◆ SCIPcertificatePrintMirCut()

SCIP_RETCODE SCIPcertificatePrintMirCut ( SCIP_SET * set,
SCIP_LP * lp,
SCIP_CERTIFICATE * certificate,
SCIP_PROB * prob,
SCIP_ROW * row,
const char sense )

prints verification of row as a MIR cut (viewed as a split cut)

Parameters
setSCIP settings
lpSCIP lp data structure
certificatecertificate information
probSCIP problem data
rowthe row to be printed
sensesense of the constraint, i.e., G, L, or E

Definition at line 1778 of file certificate.cpp.

References SCIP_Certificate::aggrinfohash, SCIP_AggregationInfo::aggrrows, assert(), certificatePrintMirSplit(), certificatePrintRow(), certificatePrintWeakDerStart(), SCIP_MirInfo::frac, i, SCIP_Certificate::indexcounter, SCIP_Certificate::mirinfohash, SCIP_AggregationInfo::naggrrows, SCIP_Row::name, SCIP_AggregationInfo::negslackrows, SCIP_AggregationInfo::negslackweights, SCIP_AggregationInfo::nnegslackrows, SCIP_MirInfo::nrounddownslacks, SCIP_MirInfo::nslacks, NULL, SCIP_Certificate::rowdatahash, SCIP_MirInfo::scale, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_R_ROUND_UPWARDS, SCIPcertificateFreeAggrInfo(), SCIPcertificateFreeMirInfo(), SCIPcertificateGetRowIndex(), SCIPcertificateIsEnabled(), SCIPcertificatePrintMirCut(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPdebug, SCIPdebugMessage, SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapInsertLong(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPrationalAddReal(), SCIPrationalCreateBuffer(), SCIPrationalDebugMessage, SCIPrationalDiff(), SCIPrationalDiffReal(), SCIPrationalDiv(), SCIPrationalDivReal(), SCIPrationalFreeBuffer(), SCIPrationalGetReal(), SCIPrationalIsPositive(), SCIPrationalMultReal(), SCIPrationalNegate(), SCIPrationalRoundLong(), SCIPrationalSetRational(), SCIPrationalSetReal(), SCIProwExactPrint(), SCIProwGetRowExact(), SCIProwIsLocal(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIP_MirInfo::slackcoefficients, SCIP_MirInfo::slackroundeddown, SCIP_MirInfo::slackrows, SCIP_MirInfo::slackscale, SCIP_MirInfo::slacksign, SCIP_MirInfo::slackusedcoef, SCIP_MirInfo::slackweight, SCIP_AggregationInfo::substfactor, SCIP_MirInfo::unroundedrhs, and SCIP_AggregationInfo::weights.

Referenced by SCIPcertificatePrintDualboundExactLP(), SCIPcertificatePrintMirCut(), SCIPcertifyMirCut(), SCIPgetDualProof(), and SCIPgetFarkasProof().

◆ SCIPcertificatePrintBoundCons()

SCIP_RETCODE SCIPcertificatePrintBoundCons ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
const char * boundname,
SCIP_VAR * var,
SCIP_RATIONAL * boundval,
SCIP_Bool isupper )

prints a variable bound to the problem section of the certificate file and returns line index

Parameters
certificatecertificate information
isorigfileshould the line be printed to the origfile or the transfile
boundnamename of the bound constraint
varvariable to print the bound cons for
boundvalvalue of the bound
isupperis it the upper bound?

Definition at line 2096 of file certificate.cpp.

References SCIP_CertificateBound::boundtype, SCIP_CertificateBound::boundval, SCIP_CertificateBound::certificateindex, SCIP_Certificate::conscounter, SCIP_Certificate::indexcounter, SCIP_Certificate::indexcounter_ori, SCIP_CertificateBound::isbound, SCIP_CertificateBound::isglobal, SCIP_Certificate::lastinfo, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPcertificateIsEnabled(), SCIPcertificatePrintProblemMessage(), SCIPcertificatePrintProblemRational(), SCIPrationalSetRational(), SCIPvarGetCertificateIndex(), SCIPvarSetLbCertificateIndexGlobal(), SCIPvarSetUbCertificateIndexGlobal(), TRUE, var, and SCIP_CertificateBound::varindex.

Referenced by SCIPcertificateInit(), and SCIPcertificateInitTransFile().

◆ SCIPcertificateUpdateParentData()

◆ SCIPcertificatePrintDualboundExactLP()

SCIP_RETCODE SCIPcertificatePrintDualboundExactLP ( SCIP_CERTIFICATE * certificate,
SCIP_LPEXACT * lpexact,
SCIP_SET * set,
SCIP_NODE * node,
SCIP_PROB * prob,
SCIP_Bool usefarkas )

prints a dual bound from an exact lp solution

Parameters
certificatescip certificate struct
lpexactthe exact lp
setscip settings
nodethe current node
probproblem data
usefarkasshould an infeasibility proof be printed?

Definition at line 2224 of file certificate.cpp.

References assert(), SCIP_Certificate::blkmem, certificatePrintDualbound(), SCIP_LpExact::cols, SCIP_RowExact::dualfarkas, SCIP_RowExact::dualsol, SCIP_ColExact::farkascoef, SCIP_LpExact::fplp, i, SCIP_ColExact::index, SCIP_Certificate::indexcounter, SCIP_LpExact::lpiexact, SCIP_LpExact::lpobjval, SCIP_Var::name, SCIP_LpExact::ncols, SCIP_LpExact::nrows, NULL, SCIP_Certificate::objintegral, SCIP_ColExact::redcost, SCIP_Certificate::rowdatahash, SCIP_LpExact::rows, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_OKAY, SCIP_ROWORIGINTYPE_SEPA, SCIPcertificateIsEnabled(), SCIPcertificatePrintMirCut(), SCIPcertificateUpdateBoundData(), SCIPcertificateUpdateParentData(), SCIPcolExactGetVar(), SCIPdebug, SCIPdebugMessage, SCIPhashmapGetImageLong(), SCIPlpExactGetObjval(), SCIPlpiExactGetObjval(), SCIPnodeGetLowerboundExact(), SCIPnodeGetParent(), SCIPprobIsObjIntegral(), SCIPrationalAddProd(), SCIPrationalCreateBuffer(), SCIPrationalDebugMessage, SCIPrationalDiffProd(), SCIPrationalFreeBuffer(), SCIPrationalIsAbsInfinity(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), SCIPrationalIsLT(), SCIPrationalIsNegative(), SCIPrationalIsPositive(), SCIPrationalIsZero(), SCIPrationalNegate(), SCIPrationalReallocBlockArray(), SCIPrationalSetInfinity(), SCIPrationalSetRational(), SCIProwExactGetCols(), SCIProwExactGetNNonz(), SCIProwExactGetRow(), SCIProwExactPrint(), SCIProwGetOrigintype(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPvarGetLbCertificateIndexLocal(), SCIPvarGetLbLocalExact(), SCIPvarGetUbCertificateIndexLocal(), SCIPvarGetUbLocalExact(), SCIP_Certificate::transfile, SCIP_Certificate::vals, SCIP_Certificate::valssize, SCIP_ColExact::var, and var.

Referenced by priceAndCutLoop(), SCIPnodeUpdateLowerboundLP(), and solveNode().

◆ SCIPcertificatePrintDualboundPseudo()

SCIP_RETCODE SCIPcertificatePrintDualboundPseudo ( SCIP_CERTIFICATE * certificate,
SCIP_LPEXACT * lpexact,
SCIP_NODE * node,
SCIP_SET * set,
SCIP_PROB * prob,
SCIP_Bool lowerchanged,
int modifiedvarindex,
SCIP_Longint boundchangeindex,
SCIP_Real psval )

prints a dual bound from the pseudo solution

in case of a bound change (branching), this happens before the bound change is processed; therefore we add the option to give on varindex, boundchgindex pair to pass directly to the method

Parameters
certificatescip certificate struct
lpexactthe exact lp
nodecurrent node
setscip settings
probproblem data
lowerchangeddo the modified indices address a change in lb or ub?
modifiedvarindexindex of modified variable, or -1
boundchangeindexindex of unprocessed bound change in the certificate, or -1
psvalthe pseudo obj value (or inf to use exact lp value)

Definition at line 2392 of file certificate.cpp.

References assert(), certificatePrintDualbound(), i, SCIP_Certificate::indexcounter, NULL, nvars, obj, SCIP_Certificate::objintegral, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPcertificateIsEnabled(), SCIPcertificateUpdateBoundData(), SCIPcertificateUpdateParentData(), SCIPlpExactGetPseudoObjval(), SCIPnodeGetLowerbound(), SCIPnodeGetParent(), SCIPprobGetNObjVars(), SCIPprobGetNVars(), SCIPprobGetVars(), SCIPprobIsObjIntegral(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalIsAbsInfinity(), SCIPrationalIsPositive(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPrationalSetReal(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPsetIsInfinity(), SCIPvarGetCertificateIndex(), SCIPvarGetLbCertificateIndexLocal(), SCIPvarGetObjExact(), SCIPvarGetUbCertificateIndexLocal(), and vars.

Referenced by applyBounding(), propAndSolve(), SCIPnodeAddBoundinfer(), SCIPnodeAddBoundinferExact(), and solveNode().

◆ SCIPcertificatePrintInheritedBound()

SCIP_RETCODE SCIPcertificatePrintInheritedBound ( SCIP_SET * set,
SCIP_CERTIFICATE * certificate,
SCIP_NODE * node )

◆ SCIPcertificateGetRowIndex()

SCIP_Longint SCIPcertificateGetRowIndex ( SCIP_CERTIFICATE * certificate,
SCIP_ROWEXACT * row,
SCIP_Bool rhs )

returns the index for a row in the certificate

Parameters
certificatecertificate data structure
rowrow to consider
rhswhether we want the index for the rhs or the lhs

Definition at line 2541 of file certificate.cpp.

References assert(), SCIP_RowExact::lhs, SCIP_RowExact::rhs, SCIP_Certificate::rowdatahash, SCIP_Bool, SCIP_Longint, SCIP_LONGINT_MAX, SCIPhashmapGetImageLong(), SCIPrationalIsAbsInfinity(), and SCIPrationalIsEQ().

Referenced by SCIPcertificatePrintAggrrow(), SCIPcertificatePrintMirCut(), SCIPcertifyActivityConflict(), SCIPcertifyActivityVarBoundExact(), and SCIPgetFarkasProof().

◆ SCIPcertificateUpdateBranchingData()

SCIP_RETCODE SCIPcertificateUpdateBranchingData ( SCIP_SET * set,
SCIP_CERTIFICATE * certificate,
SCIP_STAT * stat,
SCIP_LP * lp,
SCIP_NODE * node,
SCIP_VAR * branchvar,
SCIP_BOUNDTYPE boundtype,
SCIP_Real newbound )

updates the parent certificate node data when branching

Parameters
setgeneral SCIP settings
certificatecertificate information
statdynamic problem statistics
lpLP informations
nodenode data
branchvarthe variable that gets branched on
boundtypethe bounding type
newboundthe new bound

Definition at line 2557 of file certificate.cpp.

References assert(), SCIP_Certnodedata::assumptionindex_left, SCIP_Certnodedata::assumptionindex_right, SCIP_Lp::diving, nodedata, SCIP_Certificate::nodedatahash, NULL, printBoundAssumption(), SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIP_Real, SCIPcertificateIsEnabled(), SCIPhashmapGetImage(), SCIPnodeGetParent(), SCIPnodeGetType(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsIntegral(), SCIPrationalSetReal(), and SCIP_Certificate::transfile.

Referenced by SCIPtreeBranchVar(), and SCIPtreeBranchVarExact().

◆ SCIPcertificateNewNodeData()

◆ SCIPcertificatePrintCutoffBound()

SCIP_RETCODE SCIPcertificatePrintCutoffBound ( SCIP * scip,
SCIP_CERTIFICATE * certificate,
SCIP_RATIONAL * bound,
SCIP_Longint * certificateline )

◆ SCIPcertificatePrintAggrrow()

SCIP_RETCODE SCIPcertificatePrintAggrrow ( SCIP_SET * set,
SCIP_PROB * prob,
SCIP_CERTIFICATE * certificate,
SCIP_AGGRROW * aggrrow,
SCIP_ROW ** aggrrows,
SCIP_Real * weights,
int naggrrows,
SCIP_Bool local,
SCIP_Longint * certificateline )

create a new node data structure for the current node

Parameters
setgeneral SCIP settings
probSCIP problem data
certificateSCIP certificate
aggrrowagrrrow that results from the aggregation
aggrrowsarray of rows used fo the aggregation
weightsarray of weights
naggrrowslength of the arrays
localtrue if local bound information can be used
certificatelinepointer to store the certificate line index or NULL

Definition at line 2700 of file certificate.cpp.

References assert(), certificatePrintWeakDerStart(), FALSE, i, SCIP_Certificate::indexcounter, SCIP_CertificateBound::isbound, SCIP_Certificate::lastinfo, NULL, SCIP_Certificate::rowdatahash, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetRhs(), SCIPaggrRowGetValueSafely(), SCIPaggrRowPrint(), SCIPcertificateGetRowIndex(), SCIPcertificateIsEnabled(), SCIPcertificatePrintProofMessage(), SCIPcertificatePrintProofRational(), SCIPdebug, SCIPdebugMessage, SCIPhashmapExists(), SCIPprobGetVars(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsPositive(), SCIPrationalSetReal(), SCIProwExactPrint(), SCIProwGetRowExact(), SCIPvarGetCertificateIndex(), and vars.

Referenced by SCIPgetDualProof(), and SCIPgetFarkasProof().

◆ SCIPcertificateClearAggrinfo()

◆ SCIPcertificateClearMirinfo()

◆ SCIPcertificateFreeAggrInfo()

◆ SCIPcertificateFreeMirInfo()

◆ SCIPcertificateFreeRowInfo()

◆ SCIPcertificateNewAggrInfo()

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

create a new node data structure for the current node

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 3004 of file certificate.cpp.

References SCIP_Certificate::aggrinfo, SCIP_Certificate::aggrinfosize, SCIP_AggregationInfo::aggrrow, SCIP_AggregationInfo::aggrrows, SCIP_AggregationInfo::arpos, assert(), SCIP_AggregationInfo::fileindex, i, SCIP_Certificate::indexcounter, SCIP_Certificate::naggrinfos, SCIP_AggregationInfo::naggrrows, SCIP_AggregationInfo::negslackrows, SCIP_AggregationInfo::negslackweights, SCIP_AggregationInfo::nnegslackrows, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowCopy(), SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPcertificateIsEnabled(), SCIPdebugMessage, SCIPgetCertificate(), SCIPreallocBlockMemoryArray, SCIProwCapture(), SCIProwGetName(), SCIP_AggregationInfo::substfactor, TRUE, SCIP_AggregationInfo::weights, and SCIP_Certificate::workingaggrinfo.

Referenced by SCIPaddCertificateAggrInfo().

◆ SCIPcertificateNewMirInfo()

◆ SCIPcertificatePrintUnsplitting()

◆ SCIPcertificatePrintRtpRange()

SCIP_RETCODE SCIPcertificatePrintRtpRange ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile,
SCIP_RATIONAL * lowerbound,
SCIP_RATIONAL * upperbound )

prints RTP section with lowerbound and upperbound range

Parameters
certificatecertificate data structure
isorigfileshould the original solution be printed or in transformed space
lowerboundpointer to lower bound on the objective
upperboundpointer to upper bound on the objective

Definition at line 3234 of file certificate.cpp.

References SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPcertificateIsEnabled(), SCIPcertificatePrintProblemMessage(), SCIPcertificatePrintProblemRational(), SCIPrationalIsInfinity(), and SCIPrationalIsNegInfinity().

Referenced by SCIPcertificatePrintResult().

◆ SCIPcertificatePrintRtpInfeas()

void SCIPcertificatePrintRtpInfeas ( SCIP_CERTIFICATE * certificate,
SCIP_Bool isorigfile )

prints RTP section for infeasibility

Parameters
certificatecertificate data structure
isorigfileshould the original solution be printed or in transformed space

Definition at line 3270 of file certificate.cpp.

References SCIP_Bool, SCIPcertificateIsEnabled(), and SCIPcertificatePrintProblemMessage().

Referenced by SCIPcertificatePrintResult().

◆ SCIPcertificateSetLastBoundIndex()

SCIP_RETCODE SCIPcertificateSetLastBoundIndex ( SCIP_CERTIFICATE * certificate,
SCIP_Longint index )

sets the last bound index for the certificate

Parameters
certificatecertificate data structure
indexindex of new bound

Definition at line 3283 of file certificate.cpp.

References assert(), SCIP_Certificate::lastboundindex, SCIP_Longint, SCIP_OKAY, and SCIPcertificateIsEnabled().

Referenced by boundchgApplyExact(), SCIPboundchgApply(), SCIPboundchgUndo(), and SCIPcertifyActivityVarBoundExact().

◆ SCIPcertificateGetLastBoundIndex()

SCIP_Longint SCIPcertificateGetLastBoundIndex ( SCIP_CERTIFICATE * certificate)

returns the last bound index for the certificate

Parameters
certificatecertificate data structure

Definition at line 3297 of file certificate.cpp.

References SCIP_Certificate::lastboundindex, SCIP_Longint, and SCIPcertificateIsEnabled().

Referenced by SCIPvarChgLbLocal(), SCIPvarChgLbLocalExact(), SCIPvarChgUbLocal(), SCIPvarChgUbLocalExact(), varProcessChgLbLocal(), and varProcessChgUbLocal().

◆ SCIPcertificatePrintCutoffConflictingBounds()

◆ SCIPcertificatePrintGlobalBound()

◆ SCIPconsPrintCertificateExactLinear()

◆ SCIPcertificateGetConsIndex()

SCIP_Longint SCIPcertificateGetConsIndex ( SCIP_CERTIFICATE * certificate,
SCIP_CONS * cons,
SCIP_RATIONAL * lhs,
SCIP_RATIONAL * rhs,
SCIP_Bool useRhs )

returns the index of the given constraint in the certificate

Parameters
certificatecertificate data structure
consconstraint
lhslhs of the constraint
rhsrhs of the constraint
useRhswhether to return the index of the rhs or lhs

Definition at line 3550 of file certificate.cpp.

References assert(), SCIP_Certificate::rowdatahash, SCIP_Bool, SCIP_Longint, SCIP_LONGINT_MAX, SCIPhashmapGetImageLong(), SCIPrationalIsAbsInfinity(), and SCIPrationalIsEQ().

Referenced by SCIPcertifyActivityConflict(), and SCIPcertifyActivityVarBoundExact().