SCIP Doxygen Documentation
 
Loading...
Searching...
No Matches
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_EVENTFILTER *eventfilter, 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_EVENTFILTER *eventfilter, 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_EVENTFILTER *eventfilter, 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_EVENTFILTER *eventfilter, 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, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, 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

◆ SCIPprimalCreate()

SCIP_RETCODE SCIPprimalCreate ( SCIP_PRIMAL ** primal)

creates primal data

Parameters
primalpointer to primal data

Definition at line 130 of file primal.c.

References assert(), 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 160 of file primal.c.

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

Referenced by freeTransform(), freeTransforming(), 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 203 of file primal.c.

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

Referenced by freeReoptSolve().

◆ SCIPprimalSetCutoffbound()

SCIP_RETCODE SCIPprimalSetCutoffbound ( SCIP_PRIMAL * primal,
BMS_BLKMEM * blkmem,
SCIP_SET * set,
SCIP_STAT * stat,
SCIP_EVENTFILTER * eventfilter,
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
eventfilterevent filter for global (not variable dependent) events
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 307 of file primal.c.

References assert(), SCIP_Primal::cutoffbound, NULL, objval, primalSetCutoffbound(), SCIP_Bool, 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_EVENTFILTER * eventfilter,
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
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
probtransformed problem after presolve
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
upperboundnew upper bound

Definition at line 416 of file primal.c.

References assert(), NULL, primalSetUpperbound(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, 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_EVENTFILTER * eventfilter,
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
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
transprobtransformed problem data
origproboriginal problem data
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data

Definition at line 448 of file primal.c.

References assert(), 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_EVENTFILTER * eventfilter,
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
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
transprobtranformed problem data
origproboriginal problem data
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data

Definition at line 488 of file primal.c.

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

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

References assert(), SCIP_Primal::existingsols, i, SCIP_Primal::nexistingsols, SCIP_Primal::nsols, NULL, SCIP_Real, 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 578 of file primal.c.

References assert(), SCIP_Primal::nsols, NULL, SCIP_Bool, 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 591 of file primal.c.

References assert(), 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 601 of file primal.c.

References assert(), 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 1213 of file primal.c.

References assert(), FALSE, i, SCIP_Primal::nsols, NULL, primalAddSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsetIsLE(), SCIPsolCopy(), SCIPsolGetObj(), SCIPsolIsPartial(), sol, 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 1281 of file primal.c.

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

Referenced by addCurrentSolution(), 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 1336 of file primal.c.

References assert(), FALSE, NULL, origsolOfInterest(), primalAddOrigPartialSol(), primalAddOrigSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsolCopy(), SCIPsolIsOriginal(), SCIPsolIsPartial(), sol, 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 1391 of file primal.c.

References assert(), FALSE, NULL, origsolOfInterest(), primalAddOrigPartialSol(), primalAddOrigSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsolFree(), SCIPsolIsOriginal(), SCIPsolIsPartial(), sol, 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 1475 of file primal.c.

References assert(), SCIP_Primal::currentsol, NULL, primalLinkCurrentSol(), SCIP_Bool, 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 1505 of file primal.c.

References assert(), FALSE, NULL, primalAddSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsolCheck(), SCIPsolCopy(), sol, 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 1575 of file primal.c.

References assert(), FALSE, NULL, primalAddSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsolCheck(), SCIPsolFree(), sol, 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 1649 of file primal.c.

References assert(), SCIP_Primal::currentsol, FALSE, NULL, primalLinkCurrentSol(), SCIP_Bool, 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 1684 of file primal.c.

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

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

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

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

References assert(), SCIP_Primal::existingsols, i, newobj, SCIP_Primal::nexistingsols, NULL, oldobj, SCIP_Real, SCIPsolIsOriginal(), SCIPsolUpdateVarObj(), and var.

Referenced by SCIPeventProcess().

◆ SCIPprimalRetransformSolutions()

SCIP_RETCODE SCIPprimalRetransformSolutions ( SCIP_PRIMAL * primal,
BMS_BLKMEM * blkmem,
SCIP_SET * set,
SCIP_STAT * stat,
SCIP_EVENTFILTER * eventfilter,
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
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
origproboriginal problem
transprobtransformed problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data

Definition at line 1759 of file primal.c.

References assert(), i, SCIP_Primal::nsols, NULL, obj, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SOLORIGIN_ZERO, SCIPprimalSetUpperbound(), SCIPsolGetObj(), SCIPsolGetOrigin(), SCIPsolRetransform(), SCIP_Primal::sols, and sortPrimalSols().

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

References assert(), 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(), sol, TRUE, var, 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 1983 of file primal.c.

References assert(), NULL, SCIP_Bool, and SCIP_Primal::updateviolations.

Referenced by SCIPsolCheckOrig(), 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 1993 of file primal.c.

References assert(), NULL, SCIP_Bool, and SCIP_Primal::updateviolations.

Referenced by SCIPactivateSolViolationUpdates(), and SCIPdeactivateSolViolationUpdates().