Scippy

SCIP

Solving Constraint Integer Programs

primal.c File Reference

Detailed Description

methods for collecting primal CIP solutions and primal informations

Author
Tobias Achterberg

Definition in file primal.c.

#include <assert.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/visual.h"
#include "scip/event.h"
#include "scip/lp.h"
#include "scip/var.h"
#include "scip/prob.h"
#include "scip/sol.h"
#include "scip/primal.h"
#include "scip/tree.h"
#include "scip/reopt.h"
#include "scip/disp.h"
#include "scip/struct_event.h"
#include "scip/pub_message.h"
#include "scip/pub_var.h"

Go to the source code of this file.

Functions

static SCIP_RETCODE ensureSolsSize (SCIP_PRIMAL *primal, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensurePartialsolsSize (SCIP_PRIMAL *primal, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensureExistingsolsSize (SCIP_PRIMAL *primal, SCIP_SET *set, int num)
 
SCIP_RETCODE SCIPprimalCreate (SCIP_PRIMAL **primal)
 
SCIP_RETCODE SCIPprimalFree (SCIP_PRIMAL **primal, BMS_BLKMEM *blkmem)
 
SCIP_RETCODE SCIPprimalClear (SCIP_PRIMAL **primal, BMS_BLKMEM *blkmem)
 
static SCIP_RETCODE primalSetCutoffbound (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real cutoffbound)
 
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)
 
static SCIP_RETCODE primalSetUpperbound (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 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)
 
static SCIP_RETCODE primalAddSol (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 **solptr, int insertpos, SCIP_Bool replace)
 
static SCIP_RETCODE primalAddOrigSol (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_SOL *sol, int insertpos)
 
static SCIP_RETCODE primalAddOrigPartialSol (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_SOL *sol)
 
static int primalSearchSolPos (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SOL *sol)
 
static int primalSearchOrigSolPos (SCIP_PRIMAL *primal, SCIP_SOL *sol)
 
static SCIP_Bool primalExistsSol (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_SOL *sol, int *insertpos, SCIP_Bool *replace)
 
static SCIP_Bool primalExistsOrigSol (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL *sol, int insertpos)
 
static SCIP_Bool solOfInterest (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_SOL *sol, int *insertpos, SCIP_Bool *replace)
 
static SCIP_Bool origsolOfInterest (SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_SOL *sol, int *insertpos)
 
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)
 
static SCIP_RETCODE primalLinkCurrentSol (SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)
 
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, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
 
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)
 
SCIP_Bool SCIPprimalUpdateViolations (SCIP_PRIMAL *primal)
 
void SCIPprimalSetUpdateViolations (SCIP_PRIMAL *primal, SCIP_Bool updateviolations)
 

Function Documentation

◆ ensureSolsSize()

static SCIP_RETCODE ensureSolsSize ( SCIP_PRIMAL primal,
SCIP_SET set,
int  num 
)
static

ensures, that sols array can store at least num entries

Parameters
primalprimal data
setglobal SCIP settings
numminimum number of entries to store

Definition at line 49 of file primal.c.

References BMSreallocMemoryArray, SCIP_Primal::nsols, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Primal::sols, and SCIP_Primal::solssize.

Referenced by primalAddOrigSol(), and primalAddSol().

◆ ensurePartialsolsSize()

static SCIP_RETCODE ensurePartialsolsSize ( SCIP_PRIMAL primal,
SCIP_SET set,
int  num 
)
static

ensures, that partialsols array can store at least num entries

Parameters
primalprimal data
setglobal SCIP settings
numminimum number of entries to store

Definition at line 72 of file primal.c.

References BMSreallocMemoryArray, MIN, SCIP_Primal::npartialsols, SCIP_Primal::partialsols, SCIP_Primal::partialsolssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by primalAddOrigPartialSol().

◆ ensureExistingsolsSize()

static SCIP_RETCODE ensureExistingsolsSize ( SCIP_PRIMAL primal,
SCIP_SET set,
int  num 
)
static

ensures, that existingsols array can store at least num entries

Parameters
primalprimal data
setglobal SCIP settings
numminimum number of entries to store

Definition at line 97 of file primal.c.

References BMSreallocMemoryArray, SCIP_Primal::existingsols, SCIP_Primal::existingsolssize, SCIP_Primal::nexistingsols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by SCIPprimalSolCreated().

◆ SCIPprimalCreate()

SCIP_RETCODE SCIPprimalCreate ( SCIP_PRIMAL **  primal)

creates primal data

Parameters
primalpointer to primal data

Definition at line 119 of file primal.c.

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

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 149 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 192 of file primal.c.

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

Referenced by freeReoptSolve().

◆ primalSetCutoffbound()

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

sets the cutoff bound in primal data and in LP solver

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
probproblem data
eventqueueevent queue
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
cutoffboundnew cutoff bound

Definition at line 236 of file primal.c.

References SCIP_Primal::cutoffbound, MIN, NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIPlpSetCutoffbound(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsLE(), SCIPtreeCutoff(), SCIPtreeInRepropagation(), and SCIP_Primal::upperbound.

Referenced by primalSetUpperbound(), SCIPprimalSetCutoffbound(), SCIPprimalUpdateObjlimit(), and SCIPprimalUpdateObjoffset().

◆ 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 268 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().

◆ primalSetUpperbound()

static SCIP_RETCODE primalSetUpperbound ( 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 
)
static

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 321 of file primal.c.

References MIN, SCIP_Stat::nnodes, NULL, primalSetCutoffbound(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPprobIsObjIntegral(), SCIPsetCutoffbounddelta(), SCIPsetDebugMsg, SCIPsetFeasCeil(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPtreeGetCurrentDepth(), SCIPvisualUpperbound(), SCIP_Primal::upperbound, and SCIP_Stat::visual.

Referenced by SCIPprimalSetUpperbound(), SCIPprimalUpdateObjlimit(), and SCIPprimalUpdateObjoffset().

◆ 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 375 of file primal.c.

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

Referenced by primalAddSol(), and SCIPprimalRetransformSolutions().

◆ 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 406 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 445 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 original space to all existing solution (in original space)

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

Definition at line 511 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 545 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 558 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 568 of file primal.c.

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

Referenced by SCIPupdatePrimalRay().

◆ primalAddSol()

static SCIP_RETCODE primalAddSol ( 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 **  solptr,
int  insertpos,
SCIP_Bool  replace 
)
static

adds primal solution to solution storage at given position

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
solptrpointer to primal CIP solution
insertposposition in solution storage to add solution to
replaceshould the solution at insertpos be replaced by the new solution?

Definition at line 597 of file primal.c.

References SCIP_Stat::bestsolnode, ensureSolsSize(), FALSE, SCIP_Stat::firstprimalbound, SCIP_Stat::firstprimaldepth, SCIP_Stat::firstprimalheur, SCIP_Stat::firstprimaltime, MIN, SCIP_Primal::nbestsolsfound, SCIP_Primal::nlimsolsfound, SCIP_Stat::nnodes, SCIP_Stat::nnodesbeforefirst, SCIP_Stat::nrunsbeforefirst, SCIP_Primal::nsols, SCIP_Primal::nsolsfound, NULL, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_BESTSOLFOUND, SCIP_EVENTTYPE_POORSOLFOUND, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIPdebug, SCIPdispPrintLine(), SCIPerrorMessage, SCIPeventChgSol(), SCIPeventChgType(), SCIPeventProcess(), SCIPprimalSetUpperbound(), SCIPprimalTransformSol(), SCIPprobExternObjval(), SCIPprobGetObjlim(), SCIPprobInternObjval(), SCIPsetDebugMsg, SCIPsetGetStage(), SCIPsetIsFeasLE(), SCIPsolCheck(), SCIPsolFree(), SCIPsolGetDepth(), SCIPsolGetHeur(), SCIPsolGetNodenum(), SCIPsolGetObj(), SCIPsolGetRunnum(), SCIPsolGetTime(), SCIPsolIsOriginal(), SCIPsolPrint(), SCIPsolTransform(), SCIPsolUnlink(), SCIPsolUpdateVarsum(), SCIPtreeGetCurrentNode(), SCIPtreeInRepropagation(), SCIPvisualFoundSolution(), SCIP_Primal::sols, TRUE, and SCIP_Stat::visual.

Referenced by SCIPprimalAddSol(), SCIPprimalAddSolFree(), SCIPprimalTrySol(), and SCIPprimalTrySolFree().

◆ primalAddOrigSol()

static SCIP_RETCODE primalAddOrigSol ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_PROB prob,
SCIP_SOL sol,
int  insertpos 
)
static

adds primal solution to solution storage at given position

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
proboriginal problem data
solprimal CIP solution
insertposposition in solution storage to add solution to

Definition at line 784 of file primal.c.

References ensureSolsSize(), MIN, SCIP_Primal::nlimsolsfound, SCIP_Primal::nsols, SCIP_Primal::nsolsfound, NULL, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIPprobGetObjlim(), SCIPsetDebugMsg, SCIPsetIsFeasLE(), SCIPsolFree(), SCIPsolGetOrigObj(), and SCIP_Primal::sols.

Referenced by SCIPprimalAddOrigSol(), and SCIPprimalAddOrigSolFree().

◆ primalAddOrigPartialSol()

static SCIP_RETCODE primalAddOrigPartialSol ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_PROB prob,
SCIP_SOL sol 
)
static

adds primal solution to solution storage

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
proboriginal problem data
solprimal CIP solution

Definition at line 836 of file primal.c.

References ensurePartialsolsSize(), SCIP_Primal::npartialsols, NULL, SCIP_Primal::partialsols, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, and SCIPsetDebugMsg.

Referenced by SCIPprimalAddOrigSol(), and SCIPprimalAddOrigSolFree().

◆ primalSearchSolPos()

static int primalSearchSolPos ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_SOL sol 
)
static

uses binary search to find position in solution storage

Parameters
primalprimal data
setglobal SCIP settings
transprobtranformed problem data
origproboriginal problem data
solprimal solution to search position for

Definition at line 868 of file primal.c.

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

Referenced by solOfInterest().

◆ primalSearchOrigSolPos()

static int primalSearchOrigSolPos ( SCIP_PRIMAL primal,
SCIP_SOL sol 
)
static

uses binary search to find position in solution storage

Parameters
primalprimal data
solprimal solution to search position for

Definition at line 918 of file primal.c.

References SCIP_Primal::nsols, NULL, SCIP_Real, SCIPsolGetOrigObj(), and SCIP_Primal::sols.

Referenced by origsolOfInterest().

◆ primalExistsSol()

static SCIP_Bool primalExistsSol ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_SOL sol,
int *  insertpos,
SCIP_Bool replace 
)
static

returns whether the given primal solution is already existent in the solution storage

Parameters
primalprimal data
setglobal SCIP settings
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
solprimal solution to search position for
insertpospointer to insertion position returned by primalSearchSolPos(); the position might be changed if an existing solution should be replaced
replacepointer to store whether the solution at insertpos should be replaced

Definition at line 953 of file primal.c.

References FALSE, SCIP_Primal::nsols, NULL, REALABS, SCIP_Real, SCIPsetEpsilon(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsolGetObj(), SCIPsolIsOriginal(), SCIPsolsAreEqual(), SCIP_Primal::sols, and TRUE.

Referenced by solOfInterest().

◆ primalExistsOrigSol()

static SCIP_Bool primalExistsOrigSol ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_SOL sol,
int  insertpos 
)
static

returns whether the given primal solution is already existent in the original solution candidate storage

Parameters
primalprimal data
setglobal SCIP settings
statproblem statistics data
proboriginal problem
solprimal solution to search position for
insertposinsertion position returned by primalSearchOrigSolPos()

Definition at line 1035 of file primal.c.

References FALSE, SCIP_Primal::nsols, NULL, SCIP_Real, SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsolGetOrigObj(), SCIPsolsAreEqual(), SCIP_Primal::sols, and TRUE.

Referenced by origsolOfInterest().

◆ solOfInterest()

static SCIP_Bool solOfInterest ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_SOL sol,
int *  insertpos,
SCIP_Bool replace 
)
static

check if we are willing to check the solution for feasibility

Parameters
primalprimal data
setglobal SCIP settings
statproblem statistics data
origproboriginal problem
transprobtransformed problem after presolve
solprimal CIP solution
insertpospointer to store the insert position of that solution
replacepointer to store whether the solution at insertpos should be replaced (e.g., because it lives in the original space)

Definition at line 1087 of file primal.c.

References FALSE, primalExistsSol(), primalSearchSolPos(), SCIP_Real, SCIPsetIsInfinity(), SCIPsolGetObj(), and TRUE.

Referenced by SCIPprimalAddSol(), SCIPprimalAddSolFree(), SCIPprimalTrySol(), and SCIPprimalTrySolFree().

◆ origsolOfInterest()

static SCIP_Bool origsolOfInterest ( SCIP_PRIMAL primal,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_SOL sol,
int *  insertpos 
)
static

check if we are willing to store the solution candidate for later checking

Parameters
primalprimal data
setglobal SCIP settings
statproblem statistics data
origproboriginal problem
solprimal CIP solution
insertpospointer to store the insert position of that solution

Definition at line 1125 of file primal.c.

References FALSE, primalExistsOrigSol(), primalSearchOrigSolPos(), SCIPsolIsOriginal(), and TRUE.

Referenced by SCIPprimalAddOrigSol(), and SCIPprimalAddOrigSolFree().

◆ 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 1146 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 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 1214 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 1269 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 1324 of file primal.c.

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

Referenced by SCIPaddSolFree().

◆ primalLinkCurrentSol()

static SCIP_RETCODE primalLinkCurrentSol ( SCIP_PRIMAL primal,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_HEUR heur 
)
static

links temporary solution of primal data to current solution

Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
probtransformed problem data
treebranch and bound tree
lpcurrent LP data
heurheuristic that found the solution (or NULL if it's from the tree)

Definition at line 1381 of file primal.c.

References SCIP_Primal::currentsol, NULL, SCIP_CALL, SCIP_OKAY, SCIPsolCreateCurrentSol(), SCIPsolLinkCurrentSol(), and SCIPsolSetHeur().

Referenced by SCIPprimalAddCurrentSol(), and SCIPprimalTryCurrentSol().

◆ 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 1408 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 1438 of file primal.c.

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

Referenced by 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 1508 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 1582 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 1617 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 1639 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 1669 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,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp 
)

retransforms all existing solutions to original problem space

Note
as a side effect, the objective value of the solutions can change (numerical errors) so we update the objective cutoff value and upper bound accordingly
Parameters
primalprimal data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
eventqueueevent queue
origproboriginal problem
transprobtransformed problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data

Definition at line 1692 of file primal.c.

References SCIP_Primal::nsols, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SOLORIGIN_ZERO, SCIPprimalSetUpperbound(), SCIPsolGetObj(), 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 1738 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().

◆ SCIPprimalUpdateViolations()

SCIP_Bool SCIPprimalUpdateViolations ( SCIP_PRIMAL primal)

is the updating of violations enabled for this problem?

Parameters
primalproblem data

Definition at line 1913 of file primal.c.

References NULL, and SCIP_Primal::updateviolations.

Referenced by SCIPupdateSolBoundViolation(), SCIPupdateSolConsViolation(), SCIPupdateSolIntegralityViolation(), SCIPupdateSolLPConsViolation(), and SCIPupdateSolLPRowViolation().

◆ SCIPprimalSetUpdateViolations()

void SCIPprimalSetUpdateViolations ( SCIP_PRIMAL primal,
SCIP_Bool  updateviolations 
)

set whether the updating of violations is turned on

Parameters
primalproblem data
updateviolationsmarks whether the updating of violations is turned on

Definition at line 1923 of file primal.c.

References NULL, and SCIP_Primal::updateviolations.

Referenced by SCIPactivateSolViolationUpdates(), and SCIPdeactivateSolViolationUpdates().