Scippy

SCIP

Solving Constraint Integer Programs

primal.h File Reference

Detailed Description

internal methods for collecting primal CIP solutions and primal informations

Author
Tobias Achterberg

Definition in file primal.h.

#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_retcode.h"
#include "scip/type_set.h"
#include "scip/type_event.h"
#include "scip/type_lp.h"
#include "scip/type_var.h"
#include "scip/type_prob.h"
#include "scip/type_sol.h"
#include "scip/type_primal.h"
#include "scip/type_tree.h"
#include "scip/type_reopt.h"
#include "scip/type_heur.h"
#include "scip/struct_primal.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPprimalCreate (SCIP_PRIMAL **primal)
 
SCIP_RETCODE SCIPprimalFree (SCIP_PRIMAL **primal, BMS_BLKMEM *blkmem)
 
SCIP_RETCODE SCIPprimalClear (SCIP_PRIMAL **primal, BMS_BLKMEM *blkmem)
 
SCIP_RETCODE SCIPprimalSetCutoffbound (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real cutoffbound, SCIP_Bool useforobjlimit)
 
SCIP_RETCODE SCIPprimalSetUpperbound (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real upperbound)
 
SCIP_RETCODE SCIPprimalUpdateObjlimit (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
 
SCIP_RETCODE SCIPprimalUpdateObjoffset (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
 
void SCIPprimalAddOrigObjoffset (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_Real addval)
 
SCIP_Bool SCIPprimalUpperboundIsSol (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
 
SCIP_SOLSCIPprimalGetRay (SCIP_PRIMAL *primal)
 
SCIP_RETCODE SCIPprimalUpdateRay (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *primalray, BMS_BLKMEM *blkmem)
 
SCIP_RETCODE SCIPprimalAddSol (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL *sol, SCIP_Bool *stored)
 
SCIP_RETCODE SCIPprimalAddSolFree (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL **sol, SCIP_Bool *stored)
 
SCIP_RETCODE SCIPprimalAddOrigSol (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL *sol, SCIP_Bool *stored)
 
SCIP_RETCODE SCIPprimalAddOrigSolFree (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL **sol, SCIP_Bool *stored)
 
SCIP_RETCODE SCIPprimalAddCurrentSol (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_HEUR *heur, SCIP_Bool *stored)
 
SCIP_RETCODE SCIPprimalTrySol (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
 
SCIP_RETCODE SCIPprimalTrySolFree (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL **sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
 
SCIP_RETCODE SCIPprimalTryCurrentSol (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_HEUR *heur, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
 
SCIP_RETCODE SCIPprimalSolCreated (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_SOL *sol)
 
void SCIPprimalSolFreed (SCIP_PRIMAL *primal, SCIP_SOL *sol)
 
void SCIPprimalUpdateVarObj (SCIP_PRIMAL *primal, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
 
SCIP_RETCODE SCIPprimalRetransformSolutions (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob)
 
SCIP_RETCODE SCIPprimalTransformSol (SCIP_PRIMAL *primal, SCIP_SOL *sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Real *solvals, SCIP_Bool *solvalset, int solvalssize, SCIP_Bool *added)
 

Function Documentation

◆ SCIPprimalCreate()

SCIP_RETCODE SCIPprimalCreate ( SCIP_PRIMAL **  primal)

creates primal data

Parameters
primalpointer to primal data

Definition at line 117 of file primal.c.

References BMSallocMemory, NULL, SCIP_ALLOC, SCIP_INVALID, and SCIP_OKAY.

Referenced by copyProb(), SCIPcreateProb(), and SCIPtransformProb().

◆ SCIPprimalFree()

SCIP_RETCODE SCIPprimalFree ( SCIP_PRIMAL **  primal,
BMS_BLKMEM blkmem 
)

frees primal data

Parameters
primalpointer to primal data
blkmemblock memory

Definition at line 146 of file primal.c.

References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPsolFree().

Referenced by freeTransform(), and SCIPfreeProb().

◆ SCIPprimalClear()

SCIP_RETCODE SCIPprimalClear ( SCIP_PRIMAL **  primal,
BMS_BLKMEM blkmem 
)

clears primal data

Parameters
primalpointer to primal data
blkmemblock memory

Definition at line 189 of file primal.c.

References NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, and SCIPsolFree().

Referenced by freeReoptSolve().

◆ SCIPprimalSetCutoffbound()

SCIP_RETCODE SCIPprimalSetCutoffbound ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_Real  cutoffbound,
SCIP_Bool  useforobjlimit 
)

sets the cutoff bound in primal data and in LP solver

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
eventqueueevent queue
transprobtransformed problem data
origproboriginal problem data
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
cutoffboundnew cutoff bound
useforobjlimitshould the cutoff bound be used to update the objective limit, if better?

Definition at line 264 of file primal.c.

References SCIP_Primal::cutoffbound, NULL, primalSetCutoffbound(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPprobExternObjval(), SCIPprobGetObjlim(), SCIPprobSetObjlim(), SCIPsetDebugMsg, and SCIPsetInfinity().

Referenced by initSolve(), and SCIPupdateCutoffbound().

◆ SCIPprimalSetUpperbound()

SCIP_RETCODE SCIPprimalSetUpperbound ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_Real  upperbound 
)

sets upper bound in primal data and in LP solver

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
eventqueueevent queue
probtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
upperboundnew upper bound

Definition at line 371 of file primal.c.

References NULL, primalSetUpperbound(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPsetInfinity(), and SCIP_Primal::upperbound.

Referenced by primalAddSol().

◆ SCIPprimalUpdateObjlimit()

SCIP_RETCODE SCIPprimalUpdateObjlimit ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp 
)

updates upper bound and cutoff bound in primal data after a tightening of the problem's objective limit

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
eventqueueevent queue
transprobtransformed problem data
origproboriginal problem data
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data

Definition at line 402 of file primal.c.

References MIN, NULL, primalSetCutoffbound(), primalSetUpperbound(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPprobGetObjlim(), SCIPprobInternObjval(), and SCIPsetInfinity().

Referenced by initSolve(), presolve(), SCIPsetObjlimit(), and SCIPtransformProb().

◆ SCIPprimalUpdateObjoffset()

SCIP_RETCODE SCIPprimalUpdateObjoffset ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp 
)

recalculates upper bound and cutoff bound in primal data after a change of the problem's objective offset

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
eventqueueevent queue
transprobtranformed problem data
origproboriginal problem data
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data

Definition at line 441 of file primal.c.

References MIN, SCIP_Primal::nsols, NULL, primalSetCutoffbound(), primalSetUpperbound(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PRESOLVED, SCIPprobGetObjlim(), SCIPprobInternObjval(), SCIPsetGetStage(), SCIPsetInfinity(), SCIPsolGetObj(), SCIPsolIsOriginal(), and SCIP_Primal::sols.

Referenced by SCIPaddObjoffset(), SCIPprobCheckObjIntegral(), SCIPprobScaleObj(), and SCIPvarAddObj().

◆ SCIPprimalAddOrigObjoffset()

void SCIPprimalAddOrigObjoffset ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_Real  addval 
)

adds additional objective offset in origanal space to all existing solution (in original space)

adds additional objective offset in original space to all existing solution (in original space)

Parameters
primalprimal data
setglobal SCIP settings
addvaladditional objective offset in original space

Definition at line 507 of file primal.c.

References SCIP_Primal::existingsols, SCIP_Primal::nexistingsols, SCIP_Primal::nsols, NULL, SCIP_SOLORIGIN_ORIGINAL, SCIP_STAGE_PROBLEM, SCIPsetGetStage(), SCIPsetIsLE(), SCIPsolGetOrigin(), SCIPsolGetOrigObj(), SCIPsolOrigAddObjval(), and SCIP_Primal::sols.

Referenced by SCIPaddOrigObjoffset().

◆ SCIPprimalUpperboundIsSol()

SCIP_Bool SCIPprimalUpperboundIsSol ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_PROB transprob,
SCIP_PROB origprob 
)

returns whether the current primal bound is justified with a feasible primal solution; if not, the primal bound was set from the user as objective limit

Parameters
primalprimal data
setglobal SCIP settings
transprobtranformed problem data
origproboriginal problem data

Definition at line 541 of file primal.c.

References SCIP_Primal::nsols, NULL, SCIPsetIsEQ(), SCIPsolGetObj(), SCIP_Primal::sols, and SCIP_Primal::upperbound.

Referenced by SCIPisPrimalboundSol().

◆ SCIPprimalGetRay()

SCIP_SOL* SCIPprimalGetRay ( SCIP_PRIMAL primal)

returns the primal ray thats proves unboundedness

Parameters
primalprimal data

Definition at line 554 of file primal.c.

References NULL, and SCIP_Primal::primalray.

◆ SCIPprimalUpdateRay()

SCIP_RETCODE SCIPprimalUpdateRay ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_STAT stat,
SCIP_SOL primalray,
BMS_BLKMEM blkmem 
)

update the primal ray thats proves unboundedness

Parameters
primalprimal data
setglobal SCIP settings
statdynamic SCIP statistics
primalraythe new primal ray
blkmemblock memory

Definition at line 564 of file primal.c.

References NULL, SCIP_Primal::primalray, SCIP_CALL, SCIP_OKAY, SCIPsolCopy(), and SCIPsolFree().

Referenced by SCIPupdatePrimalRay().

◆ SCIPprimalAddSol()

SCIP_RETCODE SCIPprimalAddSol ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_SOL sol,
SCIP_Bool stored 
)

adds primal solution to solution storage by copying it

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
eventqueueevent queue
eventfilterevent filter for global (not variable dependent) events
solprimal CIP solution
storedstores whether given solution was good enough to keep

Definition at line 1142 of file primal.c.

References FALSE, SCIP_Primal::nsols, NULL, primalAddSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsetIsLE(), SCIPsolCopy(), SCIPsolGetObj(), SCIPsolIsPartial(), solOfInterest(), SCIP_Primal::sols, and TRUE.

Referenced by addCurrentSolution(), SCIPaddSol(), SCIPprimalAddCurrentSol(), SCIPtransformProb(), and SCIPtrySol().

◆ SCIPprimalAddSolFree()

SCIP_RETCODE SCIPprimalAddSolFree ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_SOL **  sol,
SCIP_Bool stored 
)

adds primal solution to solution storage, frees the solution afterwards

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
eventqueueevent queue
eventfilterevent filter for global (not variable dependent) events
solpointer to primal CIP solution; is cleared in function call
storedstores whether given solution was good enough to keep

Definition at line 1210 of file primal.c.

References FALSE, NULL, primalAddSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsolFree(), solOfInterest(), and TRUE.

Referenced by addCurrentSolution(), SCIPaddSol(), SCIPaddSolFree(), and SCIPtrySolFree().

◆ SCIPprimalAddOrigSol()

SCIP_RETCODE SCIPprimalAddOrigSol ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_SOL sol,
SCIP_Bool stored 
)

adds primal solution to solution candidate storage of original problem space

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
proboriginal problem data
solprimal CIP solution; is cleared in function call
storedstores whether given solution was good enough to keep

Definition at line 1265 of file primal.c.

References FALSE, NULL, origsolOfInterest(), primalAddOrigPartialSol(), primalAddOrigSol(), SCIP_CALL, SCIP_OKAY, SCIPsolCopy(), SCIPsolIsOriginal(), SCIPsolIsPartial(), and TRUE.

Referenced by freeTransform(), and SCIPaddSol().

◆ SCIPprimalAddOrigSolFree()

SCIP_RETCODE SCIPprimalAddOrigSolFree ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_SOL **  sol,
SCIP_Bool stored 
)

adds primal solution to solution candidate storage of original problem space, frees the solution afterwards

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
proboriginal problem data
solpointer to primal CIP solution; is cleared in function call
storedstores whether given solution was good enough to keep

Definition at line 1320 of file primal.c.

References FALSE, NULL, origsolOfInterest(), primalAddOrigPartialSol(), primalAddOrigSol(), SCIP_CALL, SCIP_OKAY, SCIPsolFree(), SCIPsolIsOriginal(), SCIPsolIsPartial(), and TRUE.

Referenced by SCIPaddSolFree().

◆ SCIPprimalAddCurrentSol()

SCIP_RETCODE SCIPprimalAddCurrentSol ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_HEUR heur,
SCIP_Bool stored 
)

adds current LP/pseudo solution to solution storage

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
eventqueueevent queue
eventfilterevent filter for global (not variable dependent) events
heurheuristic that found the solution (or NULL if it's from the tree)
storedstores whether given solution was good enough to keep

Definition at line 1404 of file primal.c.

References SCIP_Primal::currentsol, NULL, primalLinkCurrentSol(), SCIP_CALL, SCIP_OKAY, and SCIPprimalAddSol().

Referenced by SCIPaddCurrentSol().

◆ SCIPprimalTrySol()

SCIP_RETCODE SCIPprimalTrySol ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_SOL sol,
SCIP_Bool  printreason,
SCIP_Bool  completely,
SCIP_Bool  checkbounds,
SCIP_Bool  checkintegrality,
SCIP_Bool  checklprows,
SCIP_Bool stored 
)

checks primal solution; if feasible, adds it to storage by copying it

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
eventqueueevent queue
eventfilterevent filter for global (not variable dependent) events
solprimal CIP solution
printreasonShould all reasons of violations be printed?
completelyShould all violations be checked?
checkboundsShould the bounds of the variables be checked?
checkintegralityHas integrality to be checked?
checklprowsDo constraints represented by rows in the current LP have to be checked?
storedstores whether given solution was feasible and good enough to keep

Definition at line 1434 of file primal.c.

References FALSE, NULL, primalAddSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsolCheck(), SCIPsolCopy(), solOfInterest(), and TRUE.

Referenced by addCurrentSolution(), SCIPprimalTryCurrentSol(), SCIPtrySol(), solveNode(), and solveNodeLP().

◆ SCIPprimalTrySolFree()

SCIP_RETCODE SCIPprimalTrySolFree ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_SOL **  sol,
SCIP_Bool  printreason,
SCIP_Bool  completely,
SCIP_Bool  checkbounds,
SCIP_Bool  checkintegrality,
SCIP_Bool  checklprows,
SCIP_Bool stored 
)

checks primal solution; if feasible, adds it to storage; solution is freed afterwards

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
eventqueueevent queue
eventfilterevent filter for global (not variable dependent) events
solpointer to primal CIP solution; is cleared in function call
printreasonShould all the reasons of violations be printed?
completelyShould all violations be checked?
checkboundsShould the bounds of the variables be checked?
checkintegralityHas integrality to be checked?
checklprowsDo constraints represented by rows in the current LP have to be checked?
storedstores whether solution was feasible and good enough to keep

Definition at line 1504 of file primal.c.

References FALSE, NULL, primalAddSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsolCheck(), SCIPsolFree(), solOfInterest(), and TRUE.

Referenced by addCurrentSolution(), SCIPprimalTransformSol(), SCIPtrySolFree(), solveNode(), and solveNodeLP().

◆ SCIPprimalTryCurrentSol()

SCIP_RETCODE SCIPprimalTryCurrentSol ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_HEUR heur,
SCIP_Bool  printreason,
SCIP_Bool  completely,
SCIP_Bool  checkintegrality,
SCIP_Bool  checklprows,
SCIP_Bool stored 
)

checks current LP/pseudo solution; if feasible, adds it to storage

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
eventqueueevent queue
eventfilterevent filter for global (not variable dependent) events
heurheuristic that found the solution (or NULL if it's from the tree)
printreasonShould all reasons of violations be printed?
completelyShould all violations be checked?
checkintegralityHas integrality to be checked?
checklprowsDo constraints represented by rows in the current LP have to be checked?
storedstores whether given solution was good enough to keep

Definition at line 1578 of file primal.c.

References SCIP_Primal::currentsol, FALSE, NULL, primalLinkCurrentSol(), SCIP_CALL, SCIP_OKAY, and SCIPprimalTrySol().

Referenced by SCIPtryCurrentSol().

◆ SCIPprimalSolCreated()

SCIP_RETCODE SCIPprimalSolCreated ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_SOL sol 
)

inserts solution into the global array of all existing primal solutions

Parameters
primalprimal data
setglobal SCIP settings
solprimal CIP solution

Definition at line 1613 of file primal.c.

References ensureExistingsolsSize(), SCIP_Primal::existingsols, SCIP_Primal::nexistingsols, NULL, SCIP_CALL, SCIP_OKAY, SCIPsolGetPrimalIndex(), and SCIPsolSetPrimalIndex().

Referenced by SCIPsolCopy(), SCIPsolCreate(), SCIPsolCreateOriginal(), SCIPsolCreatePartial(), and SCIPsolCreateUnknown().

◆ SCIPprimalSolFreed()

void SCIPprimalSolFreed ( SCIP_PRIMAL primal,
SCIP_SOL sol 
)

removes solution from the global array of all existing primal solutions

Parameters
primalprimal data
solprimal CIP solution

Definition at line 1635 of file primal.c.

References SCIP_Primal::existingsols, SCIP_Primal::nexistingsols, NULL, SCIPsolGetPrimalIndex(), and SCIPsolSetPrimalIndex().

Referenced by SCIPsolFree().

◆ SCIPprimalUpdateVarObj()

void SCIPprimalUpdateVarObj ( SCIP_PRIMAL primal,
SCIP_VAR var,
SCIP_Real  oldobj,
SCIP_Real  newobj 
)

updates all existing primal solutions after a change in a variable's objective value

Parameters
primalprimal data
varproblem variable
oldobjold objective value
newobjnew objective value

Definition at line 1665 of file primal.c.

References SCIP_Primal::existingsols, SCIP_Primal::nexistingsols, NULL, SCIPsolIsOriginal(), and SCIPsolUpdateVarObj().

Referenced by SCIPeventProcess().

◆ SCIPprimalRetransformSolutions()

SCIP_RETCODE SCIPprimalRetransformSolutions ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob 
)

retransforms all existing solutions to original problem space

Parameters
primalprimal data
setglobal SCIP settings
statproblem statistics data
origproboriginal problem
transprobtransformed problem

Definition at line 1684 of file primal.c.

References SCIP_Primal::nsols, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_SOLORIGIN_ZERO, SCIPsolGetOrigin(), SCIPsolRetransform(), and SCIP_Primal::sols.

Referenced by initPresolve().

◆ SCIPprimalTransformSol()

SCIP_RETCODE SCIPprimalTransformSol ( SCIP_PRIMAL primal,
SCIP_SOL sol,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_Real solvals,
SCIP_Bool solvalset,
int  solvalssize,
SCIP_Bool added 
)

tries to transform original solution to the transformed problem space

Parameters
primalprimal data
solprimal solution
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
eventqueueevent queue
eventfilterevent filter for global (not variable dependent) events
solvalsarray for internal use to store solution values, or NULL; if the method is called multiple times in a row, an array with size >= number of active variables should be given for performance reasons
solvalsetarray for internal use to store which solution values were set, or NULL; if the method is called multiple times in a row, an array with size >= number of active variables should be given for performance reasons
solvalssizesize of solvals and solvalset arrays, should be >= number of active variables
addedpointer to store whether the solution was added

Definition at line 1709 of file primal.c.

References BMSclearMemoryArray, FALSE, NULL, SCIP_Prob::nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPprimalTrySolFree(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsolCreate(), SCIPsolGetHeur(), SCIPsolGetOrigObj(), SCIPsolGetVal(), SCIPsolIsOriginal(), SCIPsolSetVal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetProbvarSum(), SCIPvarGetStatus(), SCIPvarIsActive(), TRUE, and SCIP_Prob::vars.

Referenced by primalAddSol(), and transformSols().