94#include <boost/version.hpp>
105#undef SCIPhasPerformedPresolve
116 return SCIP_VERSION_MAJOR + SCIP_VERSION_MINOR/100.0;
127 return SCIP_VERSION_MAJOR;
138 return SCIP_VERSION_MINOR;
149 return SCIP_VERSION_PATCH;
181#ifndef BMS_NOBLOCKMEM
210#if defined(__INTEL_COMPILER)
212#elif defined(__clang__)
213 SCIPmessageFPrintInfo(
scip->messagehdlr, file,
"clang %d.%d.%d\n", __clang_major__, __clang_minor__, __clang_patchlevel__);
214#elif defined(_MSC_VER)
216#elif defined(__GNUC__)
217#if defined(__GNUC_PATCHLEVEL__)
292#ifdef SCIP_WITH_LAPACK
307#ifdef SCIP_WITH_EXACTSOLVE
309 SCIPerrorMessage(
"SCIP was compiled with exact solve support, but without GMP. Please recompile SCIP with GMP.\n");
313#ifndef SCIP_WITH_MPFR
314 SCIPerrorMessage(
"SCIP was compiled with exact solve support, but without MPFR. Please recompile SCIP with MPFR.\n");
324#ifndef SCIP_WITH_BOOST
325 SCIPerrorMessage(
"SCIP was compiled with exact solve support, but without Boost. Please recompile SCIP with Boost.\n");
330 int boost_version_major = BOOST_VERSION / 100000;
331 int boost_version_minor = BOOST_VERSION / 100 % 1000;
332 int boost_version_patch = BOOST_VERSION % 100;
340 SCIPerrorMessage(
"SCIP was compiled with exact solve support, but without an exact LP solver. Please recompile SCIP with an exact LP solver.\n");
410 SCIP_CALL(
SCIPcheckStage(*
scip,
"SCIPfree",
TRUE,
TRUE,
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE,
TRUE,
TRUE,
FALSE,
FALSE,
TRUE) );
435#undef SCIPhasPerformedPresolve
451 return scip->set->stage;
471 SCIP_CALL(
SCIPcheckStage(
scip,
"SCIPprintStage",
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE) );
473 switch(
scip->set->stage )
566 SCIP_CALL_ABORT(
SCIPcheckStage(
scip,
"SCIPgetStatus",
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE) );
572 return scip->stat->status;
585 return "user interrupt";
587 return "node limit reached";
589 return "total node limit reached";
591 return "stall node limit reached";
593 return "time limit reached";
595 return "memory limit reached";
597 return "gap limit reached";
599 return "primal limit reached";
601 return "dual limit reached";
603 return "solution limit reached";
605 return "solution improvement limit reached";
607 return "restart limit reached";
609 return "optimal solution found";
615 return "infeasible or unbounded";
617 return "termination signal received";
636 SCIP_CALL(
SCIPcheckStage(
scip,
"SCIPprintStatus",
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE) );
679 SCIP_CALL_ABORT(
SCIPcheckStage(
scip,
"SCIPisPresolveFinished",
FALSE,
FALSE,
FALSE,
FALSE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE) );
682 maxnrounds =
scip->set->presol_maxrounds;
683 if( maxnrounds == -1 )
684 maxnrounds = INT_MAX;
687 finished = (
scip->transprob->nvars == 0
688 || (
scip->stat->npresolfixedvars -
scip->stat->lastnpresolfixedvars
689 +
scip->stat->npresolaggrvars -
scip->stat->lastnpresolaggrvars
690 +
scip->stat->npresolchgvartypes -
scip->stat->lastnpresolchgvartypes
691 + (
scip->stat->npresolchgbds -
scip->stat->lastnpresolchgbds)/10.0
692 + (
scip->stat->npresoladdholes -
scip->stat->lastnpresoladdholes)/10.0
693 <=
scip->set->presol_abortfac *
scip->transprob->nvars));
697 && (
scip->transprob->nconss == 0
698 || (
scip->stat->npresoldelconss -
scip->stat->lastnpresoldelconss
699 +
scip->stat->npresoladdconss -
scip->stat->lastnpresoladdconss
700 +
scip->stat->npresolupgdconss -
scip->stat->lastnpresolupgdconss
701 +
scip->stat->npresolchgsides -
scip->stat->lastnpresolchgsides
702 <=
scip->set->presol_abortfac *
scip->transprob->nconss));
706 && (
scip->transprob->nvars == 0 ||
scip->transprob->nconss == 0
707 || (
scip->stat->npresolchgcoefs -
scip->stat->lastnpresolchgcoefs
708 <=
scip->set->presol_abortfac * 0.01 *
scip->transprob->nvars *
scip->transprob->nconss));
710#ifdef SCIP_DISABLED_CODE
714 && (
scip->stat->nimplications -
scip->stat->lastnpresolimplications
715 <=
scip->set->presol_abortfac * 100 *
scip->transprob->nbinvars)
717 <=
scip->set->presol_abortfac *
scip->transprob->nbinvars);
721 finished = finished || (
scip->stat->npresolrounds + 1 >= maxnrounds);
737 SCIP_CALL_ABORT(
SCIPcheckStage(
scip,
"SCIPhasPerformedPresolve",
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE) );
739 return scip->stat->performpresol;
763 SCIP_CALL_ABORT(
SCIPcheckStage(
scip,
"SCIPisStopped",
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE) );
772 const char* description
778 SCIP_CALL(
SCIPcheckStage(
scip,
"SCIPincludeExternalCodeInformation",
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE) );
793 return scip->set->extcodenames;
807 return scip->set->extcodedescs;
818 return scip->set->nextcodes;
833 if(
scip->set->nextcodes == 0 )
840 for(
i = 0;
i <
scip->set->nextcodes; ++
i )
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for clocks and timing issues
#define SCIPcheckStage(scip, method, init, problem, transforming, transformed, initpresolve, presolving, exitpresolve, presolved, initsolve, solving, solved, exitsolve, freetrans, freescip)
#define SCIP_CALL_ABORT(x)
#define SCIP_CALL_FINALLY(x, y)
SCIP_RETCODE SCIPdialoghdlrCreate(SCIP_SET *set, SCIP_DIALOGHDLR **dialoghdlr)
SCIP_RETCODE SCIPdialoghdlrFree(SCIP *scip, SCIP_DIALOGHDLR **dialoghdlr)
internal methods for user interface dialog
methods to interpret (evaluate) an expression "fast"
const char * SCIPexprintGetName(void)
const char * SCIPexprintGetDesc(void)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_RETCODE SCIPprintStage(SCIP *scip, FILE *file)
SCIP_Bool SCIPisPresolveFinished(SCIP *scip)
SCIP_Bool SCIPhasPerformedPresolve(SCIP *scip)
const char * SCIPstatusName(SCIP_STATUS status)
SCIP_Bool SCIPpressedCtrlC(SCIP *scip)
SCIP_RETCODE SCIPprintStatus(SCIP *scip, FILE *file)
SCIP_Bool SCIPisStopped(SCIP *scip)
SCIP_RETCODE SCIPfree(SCIP **scip)
SCIP_RETCODE SCIPcreate(SCIP **scip)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
SCIP_RETCODE SCIPfreeProb(SCIP *scip)
SCIP_OBJSENSE SCIPgetObjsense(SCIP *scip)
const char * SCIPlpiExactGetSolverDesc(void)
const char * SCIPlpiExactGetSolverName(void)
const char * SCIPlpiGetSolverName(void)
const char * SCIPlpiGetSolverDesc(void)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
void SCIPprintError(SCIP_RETCODE retcode)
void SCIPprintBuildOptions(SCIP *scip, FILE *file)
int SCIPminorVersion(void)
SCIP_Real SCIPversion(void)
int SCIPtechVersion(void)
void SCIPprintVersion(SCIP *scip, FILE *file)
int SCIPmajorVersion(void)
char ** SCIPgetExternalCodeDescriptions(SCIP *scip)
SCIP_RETCODE SCIPincludeExternalCodeInformation(SCIP *scip, const char *name, const char *description)
int SCIPgetNExternalCodes(SCIP *scip)
void SCIPprintExternalCodes(SCIP *scip, FILE *file)
char ** SCIPgetExternalCodeNames(SCIP *scip)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
SCIP_Real SCIPgetPrimalbound(SCIP *scip)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
int SCIPsnprintf(char *t, int len, const char *s,...)
assert(minobj< SCIPgetCutoffbound(scip))
SCIP_RETCODE SCIPiisCreate(SCIP_IIS **iis, SCIP_SET *set, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPiisFree(SCIP_IIS **iis, BMS_BLKMEM *blkmem)
internal methods for IIS finder
int SCIPcliquetableGetNCliques(SCIP_CLIQUETABLE *cliquetable)
SCIP_RETCODE SCIPinterruptCreate(SCIP_INTERRUPT **interrupt)
void SCIPinterruptFree(SCIP_INTERRUPT **interrupt)
SCIP_Bool SCIPinterrupted(void)
methods for catching the user CTRL-C interrupt
void SCIPlapackVersion(int *majorver, int *minorver, int *patchver)
interface methods for lapack functions
interface methods for specific LP solvers
interface methods for specific exact LP solvers
SCIP_RETCODE SCIPmemCreate(SCIP_MEM **mem)
SCIP_RETCODE SCIPmemFree(SCIP_MEM **mem)
methods for block memory pools and memory buffers
memory allocation routines
#define BMSfreeMemory(ptr)
#define BMSclearMemory(ptr)
#define BMSallocMemory(ptr)
void SCIPmessagePrintError(const char *formatstr,...)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
SCIP_RETCODE SCIPmessagehdlrRelease(SCIP_MESSAGEHDLR **messagehdlr)
SCIP_RETCODE SCIPcreateMessagehdlrDefault(SCIP_MESSAGEHDLR **messagehdlr, SCIP_Bool bufferedoutput, const char *filename, SCIP_Bool quiet)
SCIP_RETCODE SCIPnlpInclude(SCIP_SET *set, BMS_BLKMEM *blkmem)
internal methods for NLP management
public methods for message output
void SCIPretcodePrintError(SCIP_RETCODE retcode)
internal methods for return codes for SCIP methods
static SCIP_RETCODE doScipCreate(SCIP **scip)
public methods for memory management
public methods for message handling
public methods for numerical tolerances
public methods for global and local (sub)problems
public methods for querying solving statistics
const char * SCIPgetBuildFlags(void)
SCIP_RETCODE SCIPincludeCorePlugins(SCIP *scip)
register additional core functionality that is designed as plugins
const char * SCIPgetGitHash(void)
SCIP_RETCODE SCIPsetCreate(SCIP_SET **set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP *scip)
SCIP_RETCODE SCIPsetFree(SCIP_SET **set, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPsetIncludeExternalCode(SCIP_SET *set, const char *name, const char *description)
internal methods for global SCIP settings
SCIP_Bool SCIPsolveIsStopped(SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool checknodelimits)
internal methods for main solving loop and node processing
datastructures for block memory pools and memory buffers
datastructures for collecting primal CIP solutions and primal informations
datastructures for storing and manipulating the main problem
SCIP main data structure.
datastructures for global SCIP settings
datastructures for problem statistics
SCIP_RETCODE SCIPsyncstoreRelease(SCIP_SYNCSTORE **syncstore)
SCIP_RETCODE SCIPsyncstoreCreate(SCIP_SYNCSTORE **syncstore)
the function declarations for the synchronization store
the type definitions for the SCIP parallel interface
SCIP_Bool SCIPtpiIsAvailable(void)
void SCIPtpiGetLibraryDesc(char *desc, int descsize)
void SCIPtpiGetLibraryName(char *name, int namesize)
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_INITPRESOLVE
@ SCIP_STAGE_EXITPRESOLVE
@ SCIP_STAGE_TRANSFORMING
enum SCIP_Stage SCIP_STAGE
@ SCIP_STATUS_TOTALNODELIMIT
@ SCIP_STATUS_BESTSOLLIMIT
@ SCIP_STATUS_PRIMALLIMIT
@ SCIP_STATUS_USERINTERRUPT
@ SCIP_STATUS_STALLNODELIMIT
@ SCIP_STATUS_RESTARTLIMIT
enum SCIP_Status SCIP_STATUS