Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods to control the solving process of SCIP

This large group of methods and modules comprises the solving process related API of SCIP. This includes

  1. changing parameters to control the solver behavior
  2. access search tree related information
  3. access relaxation information
  4. access various solving process statistics
  5. solve auxiliary relaxations and subproblems using LP/NLP diving or probing mode

Modules

 Solving Statistics
 methods to query statistics about the solving process
 
 Parameter
 methods to create, query, and print user parameters
 
 Event Handling
 methods to create, catch, process, and drop events during the solving process of SCIP
 
 LP Relaxation
 methods to build and access LP relaxation information
 
 NLP Relaxation
 methods for the nonlinear relaxation
 
 Conflict Analysis
 public methods for conflict analysis
 
 Branching
 methods for branching on LP solutions, relaxation solutions, and pseudo solutions
 
 Local Subproblem
 methods to query information about or strengthen the problem at the current local search node
 
 Search Tree
 methods to query search tree related information
 
 Probing
 methods to initiate and control the probing mode of SCIP
 
 Reoptimization
 methods for reoptimization related tasks
 

Functions

SCIP_RETCODE SCIPtransformProb (SCIP *scip)
 
SCIP_RETCODE SCIPpresolve (SCIP *scip)
 
SCIP_RETCODE SCIPsolve (SCIP *scip)
 
SCIP_RETCODE SCIPsolveParallel (SCIP *scip)
 
SCIP_RETCODE SCIPsolveConcurrent (SCIP *scip)
 
SCIP_RETCODE SCIPfreeSolve (SCIP *scip, SCIP_Bool restart)
 
SCIP_RETCODE SCIPfreeTransform (SCIP *scip)
 
SCIP_RETCODE SCIPinterruptSolve (SCIP *scip)
 
SCIP_Bool SCIPisSolveInterrupted (SCIP *scip)
 
SCIP_RETCODE SCIPrestartSolve (SCIP *scip)
 
SCIP_Bool SCIPisInRestart (SCIP *scip)
 

Function Documentation

◆ SCIPtransformProb()

SCIP_RETCODE SCIPtransformProb ( SCIP scip)

initializes solving data structures and transforms problem

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:
Postcondition
When calling this method in the SCIP_STAGE_PROBLEM stage, the SCIP stage is changed to SCIP_STAGE_TRANSFORMED; otherwise, the stage is not changed

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

Parameters
scipSCIP data structure

Definition at line 223 of file scip_solve.c.

References BMSgarbagecollectBlockMemory, calcNonZeros(), FALSE, h, MAX, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIP_STAGE_TRANSFORMED, SCIP_STAGE_TRANSFORMING, SCIP_STATUS_UNKNOWN, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIPbranchcandCreate(), SCIPcheckStage(), SCIPcliquetableCreate(), SCIPconflictCreate(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPerrorMessage, SCIPeventfilterCreate(), SCIPeventqueueCreate(), SCIPgetBestSol(), SCIPgetNConss(), SCIPgetNVars(), SCIPgetSolOrigObj(), SCIPisInfinity(), SCIPlpCreate(), SCIPmessagePrintVerbInfo(), SCIPpermuteProb(), SCIPprimalAddSol(), SCIPprimalCreate(), SCIPprimalUpdateObjlimit(), SCIPprobCheckObjIntegral(), SCIPprobGetName(), SCIPprobMarkNConss(), SCIPprobScaleObj(), SCIPprobTransform(), SCIPrelaxationCreate(), SCIPsetGetNodesel(), SCIPsetInitPlugins(), SCIPsolCheckOrig(), SCIPsolFree(), SCIPsolGetObj(), SCIPsolRecomputeObj(), SCIPstatMark(), SCIPstoreSolutionGap(), SCIPtreeCreate(), and TRUE.

Referenced by componentSetupWorkingSol(), createSubSCIP(), executeLNSHeuristic(), reoptimize(), SCIP_DECL_DIALOGEXEC(), SCIP_DECL_HEUREXEC(), SCIP_DECL_RELAXEXEC(), SCIPapplyHeurSubNlp(), SCIPapplyProximity(), SCIPpresolve(), SCIPsolveConcurrent(), setupAndSolve(), setupAndSolveSubscip(), setupAndSolveSubscipCrossover(), setupAndSolveSubscipLocalbranching(), setupAndSolveSubscipOneopt(), setupAndSolveSubscipRapidlearning(), setupAndSolveSubscipTrustregion(), solveSubscip(), solveSubscipLpface(), wrapperDins(), and wrapperRins().

◆ SCIPpresolve()

SCIP_RETCODE SCIPpresolve ( SCIP scip)

transforms and presolves problem

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:
Postcondition
After calling this method SCIP reaches one of the following stages:

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

Parameters
scipSCIP data structure

Definition at line 2332 of file scip_solve.c.

References displayRelevantStats(), FALSE, h, initSolve(), presolve(), SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_PRESOLVED, SCIP_STAGE_PRESOLVING, SCIP_STAGE_PROBLEM, SCIP_STAGE_SOLVED, SCIP_STAGE_TRANSFORMED, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_INFORUNBD, SCIP_STATUS_OPTIMAL, SCIP_STATUS_UNBOUNDED, SCIP_VERBLEVEL_HIGH, SCIP_VERBLEVEL_NORMAL, SCIPABORT, SCIPcheckStage(), SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPfreeTransform(), SCIPinterruptCapture(), SCIPinterruptLP(), SCIPinterruptRelease(), SCIPmessagePrintVerbInfo(), SCIPprobIsObjIntegral(), SCIPtransformProb(), SCIPtreeClear(), and TRUE.

Referenced by createSubSCIP(), executeLNSHeuristic(), runGastrans(), runSpring(), SCIP_DECL_DIALOGEXEC(), SCIP_DECL_HEUREXEC(), SCIPapplyHeurDualval(), SCIPapplyProximity(), SCIPsolve(), SCIPsolveConcurrent(), setupAndSolve(), setupAndSolveSubscip(), setupAndSolveSubscipRapidlearning(), and solveSubNLP().

◆ SCIPsolve()

SCIP_RETCODE SCIPsolve ( SCIP scip)

transforms, presolves, and solves problem

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:
Postcondition
After calling this method SCIP reaches one of the following stages depending on if and when the solution process was interrupted:

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

Parameters
scipSCIP data structure

Definition at line 2502 of file scip_solve.c.

References displayRelevantStats(), FALSE, freeSolve(), initSolve(), MAX, MIN, NULL, prepareReoptimization(), SCIP_Bool, SCIP_CALL, SCIP_INVALIDCALL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIP_STAGE_PRESOLVED, SCIP_STAGE_PRESOLVING, SCIP_STAGE_PROBLEM, SCIP_STAGE_SOLVED, SCIP_STAGE_SOLVING, SCIP_STAGE_TRANSFORMED, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_INFORUNBD, SCIP_STATUS_OPTIMAL, SCIP_STATUS_UNBOUNDED, SCIP_VERBLEVEL_NORMAL, SCIPapplyBendersDecomposition(), SCIPcheckStage(), SCIPclearRelaxSolVals(), SCIPclockStart(), SCIPclockStop(), SCIPcutpoolAddMaxNCuts(), SCIPcutpoolAddNCalls(), SCIPcutpoolAddNCutsAdded(), SCIPcutpoolAddNCutsFound(), SCIPcutpoolAddNRootCalls(), SCIPcutpoolGetMaxNCuts(), SCIPcutpoolGetNCalls(), SCIPcutpoolGetNCutsAdded(), SCIPcutpoolGetNCutsFound(), SCIPcutpoolGetNRootCalls(), SCIPcutpoolGetTime(), SCIPcutpoolSetTime(), SCIPdebug, SCIPdebugMsg, SCIPdecompstoreGetNOrigDecomps(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetChildren(), SCIPgetLeaves(), SCIPgetNActiveBenders(), SCIPgetNBinVars(), SCIPgetNIntVars(), SCIPgetNNodesLeft(), SCIPgetRealParam(), SCIPgetSiblings(), SCIPgetSolvingTime(), SCIPinterruptCapture(), SCIPinterruptLP(), SCIPinterruptRelease(), SCIPmessagePrintVerbInfo(), SCIPpresolve(), SCIPreoptAddOptSol(), SCIPreoptAddSol(), SCIPreoptSaveOpenNodes(), SCIPreoptUpdateVarHistory(), SCIPsetGetNodesel(), SCIPsetRealParam(), SCIPsolGetHeur(), SCIPsolGetNodenum(), SCIPsolIsOriginal(), SCIPsolPrint(), SCIPsolRetransform(), SCIPsolveCIP(), SCIPsolveIsStopped(), SCIPstatResetDisplay(), SCIPtreeGetCurrentNode(), SCIPtreeGetNNodes(), SCIPverbMessage(), SCIPwarningMessage(), and TRUE.

Referenced by applyRepair(), createSubSCIP(), doPricing(), doSolveSubMIP(), execmain(), executeLNSHeuristic(), fromAmpl(), fromCommandLine(), main(), reoptimize(), runBenders(), runBrachistochrone(), runGastrans(), runPacking(), runSpring(), SCIP_DECL_CONCSOLVEREXEC(), SCIP_DECL_DIALOGEXEC(), SCIP_DECL_HEUREXEC(), SCIP_DECL_RELAXEXEC(), SCIPapplyHeurDualval(), SCIPapplyProximity(), SCIPapplyRedSize(), SCIPbendersComputeSubproblemLowerbound(), SCIPbendersSolveSubproblemCIP(), SCIPcount(), SCIPsolveConcurrent(), SCIPverifyCircularPatternNLP(), searchEcAggrWithMIP(), setupAndSolve(), setupAndSolveCumulativeSubscip(), setupAndSolveFiniteSolSubscip(), setupAndSolveSubscip(), setupAndSolveSubscipCrossover(), setupAndSolveSubscipLocalbranching(), setupAndSolveSubscipMutation(), setupAndSolveSubscipOneopt(), setupAndSolveSubscipRapidlearning(), setupAndSolveSubscipTrustregion(), scipexamples::QueensSolver::solve(), solveCoveringProblem(), solvePricingMINLP(), solveSubNLP(), solveSubproblem(), solveSubscip(), solveSubscipLpface(), wrapperDins(), wrapperRins(), and writeBounds().

◆ SCIPsolveParallel()

SCIP_RETCODE SCIPsolveParallel ( SCIP scip)

transforms, presolves, and solves problem using additional solvers which emphasize on finding solutions.

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:
Postcondition
After calling this method SCIP reaches one of the following stages depending on if and when the solution process was interrupted:

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

Deprecated:
Please use SCIPsolveConcurrent() instead.

transforms, presolves, and solves problem using the configured concurrent solvers

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:
Postcondition
After calling this method SCIP reaches one of the following stages depending on if and when the solution process was interrupted:

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

Deprecated:
Please use SCIPsolveConcurrent() instead.
Parameters
scipSCIP data structure

Definition at line 2834 of file scip_solve.c.

References FALSE, SCIP_CALL, SCIPcheckStage(), SCIPsolveConcurrent(), and TRUE.

◆ SCIPsolveConcurrent()

SCIP_RETCODE SCIPsolveConcurrent ( SCIP scip)

transforms, presolves, and solves problem using additional solvers which emphasize on finding solutions.

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:
Postcondition
After calling this method SCIP reaches one of the following stages depending on if and when the solution process was interrupted:

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

transforms, presolves, and solves problem using the configured concurrent solvers

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:
Postcondition
After calling this method SCIP reaches one of the following stages depending on if and when the solution process was interrupted:

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

Parameters
scipSCIP data structure

Definition at line 2864 of file scip_solve.c.

References displayRelevantStats(), exitPresolve(), FALSE, initPresolve(), initSolve(), MAX, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_CLOCKTYPE_WALL, SCIP_INVALIDDATA, SCIP_Longint, SCIP_MEM_NOLIMIT, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIP_STAGE_PRESOLVED, SCIP_STATUS_MEMLIMIT, SCIP_STATUS_OPTIMAL, SCIP_VERBLEVEL_FULL, SCIPallocBufferArray, SCIPcheckStage(), SCIPclockStart(), SCIPclockStop(), SCIPconcsolverCreateInstance(), SCIPconcsolverInitSeeds(), SCIPconcsolverTypeGetPrefPrio(), SCIPconcurrentSolve(), SCIPcreateRandom(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPfreeConcurrent(), SCIPfreeRandom(), SCIPgetConcsolverTypes(), SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetNConcsolverTypes(), SCIPgetNConcurrentSolvers(), SCIPgetStage(), SCIPgetStatus(), SCIPgetSyncstore(), SCIPpresolve(), SCIPrandomGetInt(), SCIPselectDownRealInt(), SCIPsetIntParam(), SCIPsolve(), SCIPsyncstoreInit(), SCIPsyncstoreSetSolveIsStopped(), SCIPtpiIsAvailable(), SCIPtransformProb(), SCIPverbMessage(), SCIPwarningMessage(), and TRUE.

Referenced by SCIP_DECL_DIALOGEXEC(), and SCIPsolveParallel().

◆ SCIPfreeSolve()

SCIP_RETCODE SCIPfreeSolve ( SCIP scip,
SCIP_Bool  restart 
)

frees branch and bound tree and all solution process data; statistics, presolving data and transformed problem is preserved

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:
Postcondition
If this method is called in SCIP stage SCIP_STAGE_INIT or SCIP_STAGE_PROBLEM, the stage of SCIP is not changed; otherwise, the SCIP stage is changed to SCIP_STAGE_TRANSFORMED

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

Parameters
scipSCIP data structure
restartshould certain data be preserved for improved restarting?

Definition at line 3220 of file scip_solve.c.

References exitPresolve(), FALSE, freeSolve(), SCIP_Bool, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_INIT, SCIP_STAGE_PRESOLVED, SCIP_STAGE_PRESOLVING, SCIP_STAGE_PROBLEM, SCIP_STAGE_SOLVED, SCIP_STAGE_SOLVING, SCIP_STAGE_TRANSFORMED, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_INFORUNBD, SCIP_STATUS_OPTIMAL, SCIP_STATUS_UNBOUNDED, SCIPcheckStage(), SCIPerrorMessage, and TRUE.

Referenced by SCIP_DECL_DIALOGEXEC(), and SCIPfreeTransform().

◆ SCIPfreeTransform()

SCIP_RETCODE SCIPfreeTransform ( SCIP scip)

frees all solution process data including presolving and transformed problem, only original problem is kept

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:
Postcondition
After calling this method SCIP reaches one of the following stages:

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

Parameters
scipSCIP data structure

Definition at line 3350 of file scip_solve.c.

References exitPresolve(), FALSE, freeTransform(), freeTransforming(), NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_INIT, SCIP_STAGE_PRESOLVED, SCIP_STAGE_PRESOLVING, SCIP_STAGE_PROBLEM, SCIP_STAGE_SOLVED, SCIP_STAGE_SOLVING, SCIP_STAGE_TRANSFORMED, SCIP_STAGE_TRANSFORMING, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_INFORUNBD, SCIP_STATUS_OPTIMAL, SCIP_STATUS_UNBOUNDED, SCIPcheckStage(), SCIPerrorMessage, SCIPfreeSolve(), SCIPreoptReleaseData(), and TRUE.

Referenced by freeMemory(), readDiffFile(), reoptimize(), runBenders(), SCIP_DECL_DIALOGEXEC(), SCIP_DECL_HEUREXEC(), SCIP_DECL_READERREAD(), SCIPapplyHeurDualval(), SCIPapplyHeurSubNlp(), SCIPapplyProximity(), SCIPapplyUndercover(), SCIPbendersFreeSubproblem(), SCIPfreeProb(), SCIPpresolve(), solveAndEvalSubscip(), and updateMIP().

◆ SCIPinterruptSolve()

SCIP_RETCODE SCIPinterruptSolve ( SCIP scip)

informs SCIP that the solving process should be interrupted as soon as possible (e.g., after the current node has been solved)

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:
Note
the SCIP stage does not get changed
Parameters
scipSCIP data structure

Definition at line 3436 of file scip_solve.c.

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

Referenced by applySolvingPhase(), checkSolution(), SCIP_DECL_CONCSOLVERSTOP(), SCIP_DECL_EVENTEXEC(), and solveComponent().

◆ SCIPisSolveInterrupted()

SCIP_Bool SCIPisSolveInterrupted ( SCIP scip)

indicates whether SCIP has been informed that the solving process should be interrupted as soon as possible

This function returns whether SCIPinterruptSolve() has been called, which is different from SCIPinterrupted(), which returns whether a SIGINT signal has been received by the SCIP signal handler.

Precondition
This method can be called if scip is in one of the following stages:
Note
the SCIP stage does not get changed
Parameters
scipSCIP data structure

Definition at line 3468 of file scip_solve.c.

References FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), and TRUE.

Referenced by F77_FUNC(), processSolveOutcome(), and SCIP_DECL_NLPISOLVE().

◆ SCIPrestartSolve()

SCIP_RETCODE SCIPrestartSolve ( SCIP scip)

informs SCIP that the solving process should be restarted as soon as possible (e.g., after the current node has been solved)

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:
Note
the SCIP stage does not get changed
Parameters
scipSCIP data structure

Definition at line 3491 of file scip_solve.c.

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

Referenced by applySolvingPhase(), SCIP_DECL_CONSINITLP(), SCIP_DECL_EVENTEXEC(), and SCIPbendersSolveSubproblemCIP().

◆ SCIPisInRestart()

SCIP_Bool SCIPisInRestart ( SCIP scip)

returns whether we are in the restarting phase

Returns
TRUE, if we are in the restarting phase; FALSE, otherwise
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 3597 of file scip_solve.c.

References FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), and TRUE.

Referenced by copyCuts(), DECL_TIMESERIESUPDATE(), SCIP_DECL_PROPEXITSOL(), SCIPconflictstoreClean(), and updateTreeData().