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) );
580 return scip->stat->status;
593 return "user interrupt";
595 return "node limit reached";
597 return "total node limit reached";
599 return "stall node limit reached";
601 return "time limit reached";
603 return "memory limit reached";
605 return "gap limit reached";
607 return "primal limit reached";
609 return "dual limit reached";
611 return "solution limit reached";
613 return "solution improvement limit reached";
615 return "restart limit reached";
617 return "optimal solution found";
623 return "infeasible or unbounded";
625 return "termination signal received";
644 SCIP_CALL(
SCIPcheckStage(
scip,
"SCIPprintStatus",
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE) );
687 SCIP_CALL_ABORT(
SCIPcheckStage(
scip,
"SCIPisPresolveFinished",
FALSE,
FALSE,
FALSE,
FALSE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE) );
690 maxnrounds =
scip->set->presol_maxrounds;
691 if( maxnrounds == -1 )
692 maxnrounds = INT_MAX;
695 finished = (
scip->transprob->nvars == 0
696 || (
scip->stat->npresolfixedvars -
scip->stat->lastnpresolfixedvars
697 +
scip->stat->npresolaggrvars -
scip->stat->lastnpresolaggrvars
698 +
scip->stat->npresolchgvartypes -
scip->stat->lastnpresolchgvartypes
699 + (
scip->stat->npresolchgbds -
scip->stat->lastnpresolchgbds)/10.0
700 + (
scip->stat->npresoladdholes -
scip->stat->lastnpresoladdholes)/10.0
701 <=
scip->set->presol_abortfac *
scip->transprob->nvars));
705 && (
scip->transprob->nconss == 0
706 || (
scip->stat->npresoldelconss -
scip->stat->lastnpresoldelconss
707 +
scip->stat->npresoladdconss -
scip->stat->lastnpresoladdconss
708 +
scip->stat->npresolupgdconss -
scip->stat->lastnpresolupgdconss
709 +
scip->stat->npresolchgsides -
scip->stat->lastnpresolchgsides
710 <=
scip->set->presol_abortfac *
scip->transprob->nconss));
714 && (
scip->transprob->nvars == 0 ||
scip->transprob->nconss == 0
715 || (
scip->stat->npresolchgcoefs -
scip->stat->lastnpresolchgcoefs
716 <=
scip->set->presol_abortfac * 0.01 *
scip->transprob->nvars *
scip->transprob->nconss));
718#ifdef SCIP_DISABLED_CODE
722 && (
scip->stat->nimplications -
scip->stat->lastnpresolimplications
723 <=
scip->set->presol_abortfac * 100 *
scip->transprob->nbinvars)
725 <=
scip->set->presol_abortfac *
scip->transprob->nbinvars);
729 finished = finished || (
scip->stat->npresolrounds + 1 >= maxnrounds);
745 SCIP_CALL_ABORT(
SCIPcheckStage(
scip,
"SCIPhasPerformedPresolve",
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE) );
747 return scip->stat->performpresol;
771 SCIP_CALL_ABORT(
SCIPcheckStage(
scip,
"SCIPisStopped",
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE) );
780 const char* description
786 SCIP_CALL(
SCIPcheckStage(
scip,
"SCIPincludeExternalCodeInformation",
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE) );
801 return scip->set->extcodenames;
815 return scip->set->extcodedescs;
826 return scip->set->nextcodes;
841 if(
scip->set->nextcodes == 0 )
848 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