Detailed Description
methods for collecting primal CIP solutions and primal informations
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"
#include "scip/scip_solvingstats.h"
Go to the source code of this file.
Function Documentation
◆ ensureSolsSize()
|
static |
ensures, that sols array can store at least num entries
- Parameters
-
primal primal data set global SCIP settings num minimum number of entries to store
Definition at line 60 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 |
ensures, that partialsols array can store at least num entries
- Parameters
-
primal primal data set global SCIP settings num minimum number of entries to store
Definition at line 83 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 |
ensures, that existingsols array can store at least num entries
- Parameters
-
primal primal data set global SCIP settings num minimum number of entries to store
Definition at line 108 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
-
primal pointer to primal data
Definition at line 130 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
-
primal pointer to primal data blkmem block memory
Definition at line 160 of file primal.c.
References 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
-
primal pointer to primal data blkmem block memory
Definition at line 203 of file primal.c.
References NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIPsolFree(), and TRUE.
Referenced by freeReoptSolve().
◆ sortPrimalSols()
|
static |
sorts primal solutions by objective value
- Parameters
-
primal primal data set global SCIP settings origprob original problem transprob transformed problem
Definition at line 247 of file primal.c.
References SCIP_Primal::nsols, SCIP_Real, SCIPsolGetObj(), and SCIP_Primal::sols.
Referenced by SCIPprimalRetransformSolutions(), and SCIPprimalUpdateObjoffset().
◆ primalSetCutoffbound()
|
static |
sets the cutoff bound in primal data and in LP solver
- Parameters
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data prob problem data eventfilter event filter for global (not variable dependent) events eventqueue event queue tree branch and bound tree reopt reoptimization data structure lp current LP data cutoffbound new cutoff bound
Definition at line 274 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_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
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data eventfilter event filter for global (not variable dependent) events eventqueue event queue transprob transformed problem data origprob original problem data tree branch and bound tree reopt reoptimization data structure lp current LP data cutoffbound new cutoff bound useforobjlimit should the cutoff bound be used to update the objective limit, if better?
Definition at line 307 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 |
sets upper bound in primal data and in LP solver
- Parameters
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data eventfilter event filter for global (not variable dependent) events eventqueue event queue prob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data upperbound new upper bound
Definition at line 361 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_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
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data eventfilter event filter for global (not variable dependent) events eventqueue event queue prob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data upperbound new upper bound
Definition at line 416 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_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
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data eventfilter event filter for global (not variable dependent) events eventqueue event queue transprob transformed problem data origprob original problem data tree branch and bound tree reopt reoptimization data structure lp current LP data
Definition at line 448 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_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
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data eventfilter event filter for global (not variable dependent) events eventqueue event queue transprob tranformed problem data origprob original problem data tree branch and bound tree reopt reoptimization data structure lp current LP data
Definition at line 488 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(), 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 original space to all existing solution (in original space)
- Parameters
-
primal primal data set global SCIP settings addval additional objective offset in original space
Definition at line 544 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
-
primal primal data set global SCIP settings transprob tranformed problem data origprob original problem data
Definition at line 578 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
-
primal primal data
Definition at line 591 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
-
primal primal data set global SCIP settings stat dynamic SCIP statistics primalray the new primal ray blkmem block memory
Definition at line 601 of file primal.c.
References NULL, SCIP_Primal::primalray, SCIP_CALL, SCIP_OKAY, SCIPsolCopy(), and SCIPsolFree().
Referenced by SCIPupdatePrimalRay().
◆ primalAddSol()
|
static |
adds primal solution to solution storage at given position
- Parameters
-
primal primal data blkmem block memory set global SCIP settings messagehdlr message handler stat problem statistics data origprob original problem transprob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data eventqueue event queue eventfilter event filter for global (not variable dependent) events solptr pointer to primal CIP solution insertpos position in solution storage to add solution to replace should the solution at insertpos be replaced by the new solution?
Definition at line 630 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_Prob::objsense, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_BESTSOLFOUND, SCIP_EVENTTYPE_POORSOLFOUND, SCIP_LONGINT_FORMAT, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PRESOLVED, SCIP_STAGE_SOLVING, SCIPABORT, SCIPdebug, SCIPdispPrintLine(), SCIPerrorMessage, SCIPeventChgSol(), SCIPeventChgType(), SCIPeventProcess(), SCIPgetLowerbound(), SCIPmessagePrintWarning(), SCIPprimalSetUpperbound(), SCIPprimalTransformSol(), SCIPprobExternObjval(), SCIPprobGetObjlim(), SCIPprobInternObjval(), SCIPsetDebugMsg, SCIPsetGetStage(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsInfinity(), SCIPsolCheck(), SCIPsolFree(), SCIPsolGetDepth(), SCIPsolGetHeur(), SCIPsolGetNodenum(), SCIPsolGetObj(), SCIPsolGetRunnum(), SCIPsolGetTime(), SCIPsolIsOriginal(), SCIPsolPrint(), SCIPsolRetransform(), SCIPsolTransform(), SCIPsolUnlink(), SCIPsolUpdateVarsum(), SCIPtreeGetCurrentNode(), SCIPtreeInRepropagation(), SCIPvisualFoundSolution(), SCIP_Primal::sols, TRUE, and SCIP_Stat::visual.
Referenced by SCIPprimalAddSol(), SCIPprimalAddSolFree(), SCIPprimalTrySol(), and SCIPprimalTrySolFree().
◆ primalAddOrigSol()
|
static |
adds primal solution to solution storage at given position
- Parameters
-
primal primal data blkmem block memory set global SCIP settings prob original problem data sol primal CIP solution insertpos position in solution storage to add solution to
Definition at line 847 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 |
adds primal solution to solution storage
- Parameters
-
primal primal data set global SCIP settings prob original problem data sol primal CIP solution
Definition at line 899 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 |
uses binary search to find position in solution storage
- Parameters
-
primal primal data set global SCIP settings transprob tranformed problem data origprob original problem data sol primal solution to search position for
Definition at line 930 of file primal.c.
References SCIP_Primal::nsols, NULL, SCIP_Real, SCIPsetIsEQ(), SCIPsolGetObj(), SCIPsolIsOriginal(), and SCIP_Primal::sols.
Referenced by solOfInterest().
◆ primalSearchOrigSolPos()
|
static |
uses binary search to find position in solution storage
- Parameters
-
primal primal data sol primal solution to search position for
Definition at line 980 of file primal.c.
References SCIP_Primal::nsols, NULL, SCIP_Real, SCIPsolGetOrigObj(), and SCIP_Primal::sols.
Referenced by origsolOfInterest().
◆ primalExistsSol()
|
static |
returns whether the given primal solution is already existent in the solution storage
- Parameters
-
primal primal data set global SCIP settings stat problem statistics data origprob original problem transprob transformed problem after presolve sol primal solution to search position for insertpos pointer to insertion position returned by primalSearchSolPos(); the position might be changed if an existing solution should be replaced replace pointer to store whether the solution at insertpos should be replaced
Definition at line 1015 of file primal.c.
References FALSE, SCIP_Primal::nsols, NULL, REALABS, SCIP_Real, SCIP_STAGE_PRESOLVED, SCIPsetEpsilon(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsolGetObj(), SCIPsolIsOriginal(), SCIPsolsAreEqual(), SCIP_Primal::sols, and TRUE.
Referenced by solOfInterest().
◆ primalExistsOrigSol()
|
static |
returns whether the given primal solution is already existent in the original solution candidate storage
- Parameters
-
primal primal data set global SCIP settings stat problem statistics data prob original problem sol primal solution to search position for insertpos insertion position returned by primalSearchOrigSolPos()
Definition at line 1097 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 |
check if we are willing to check the solution for feasibility
- Parameters
-
primal primal data set global SCIP settings stat problem statistics data origprob original problem transprob transformed problem after presolve sol primal CIP solution insertpos pointer to store the insert position of that solution replace pointer to store whether the solution at insertpos should be replaced (e.g., because it lives in the original space)
Definition at line 1149 of file primal.c.
References FALSE, primalExistsSol(), primalSearchSolPos(), SCIP_Real, SCIPsetIsInfinity(), SCIPsolGetObj(), and TRUE.
Referenced by SCIPprimalAddSol(), SCIPprimalAddSolFree(), SCIPprimalTrySol(), and SCIPprimalTrySolFree().
◆ origsolOfInterest()
|
static |
check if we are willing to store the solution candidate for later checking
- Parameters
-
primal primal data set global SCIP settings stat problem statistics data origprob original problem sol primal CIP solution insertpos pointer to store the insert position of that solution
Definition at line 1187 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
-
primal primal data blkmem block memory set global SCIP settings messagehdlr message handler stat problem statistics data origprob original problem transprob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data eventqueue event queue eventfilter event filter for global (not variable dependent) events sol primal CIP solution stored stores whether given solution was good enough to keep
Definition at line 1208 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
-
primal primal data blkmem block memory set global SCIP settings messagehdlr message handler stat problem statistics data origprob original problem transprob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data eventqueue event queue eventfilter event filter for global (not variable dependent) events sol pointer to primal CIP solution; is cleared in function call stored stores whether given solution was good enough to keep
Definition at line 1276 of file primal.c.
References FALSE, NULL, primalAddSol(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPsolFree(), 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
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data prob original problem data sol primal CIP solution; is cleared in function call stored stores whether given solution was good enough to keep
Definition at line 1331 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
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data prob original problem data sol pointer to primal CIP solution; is cleared in function call stored stores whether given solution was good enough to keep
Definition at line 1386 of file primal.c.
References FALSE, NULL, origsolOfInterest(), primalAddOrigPartialSol(), primalAddOrigSol(), SCIP_CALL, SCIP_OKAY, SCIPsolFree(), SCIPsolIsOriginal(), SCIPsolIsPartial(), and TRUE.
Referenced by SCIPaddSolFree().
◆ primalLinkCurrentSol()
|
static |
links temporary solution of primal data to current solution
- Parameters
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data prob transformed problem data tree branch and bound tree lp current LP data heur heuristic that found the solution (or NULL if it's from the tree)
Definition at line 1443 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
-
primal primal data blkmem block memory set global SCIP settings messagehdlr message handler stat problem statistics data origprob original problem transprob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data eventqueue event queue eventfilter event filter for global (not variable dependent) events heur heuristic that found the solution (or NULL if it's from the tree) stored stores whether given solution was good enough to keep
Definition at line 1470 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
-
primal primal data blkmem block memory set global SCIP settings messagehdlr message handler stat problem statistics data origprob original problem transprob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data eventqueue event queue eventfilter event filter for global (not variable dependent) events sol primal CIP solution printreason Should all reasons of violations be printed? completely Should all violations be checked? checkbounds Should the bounds of the variables be checked? checkintegrality Has integrality to be checked? checklprows Do constraints represented by rows in the current LP have to be checked? stored stores whether given solution was feasible and good enough to keep
Definition at line 1500 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
-
primal primal data blkmem block memory set global SCIP settings messagehdlr message handler stat problem statistics data origprob original problem transprob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data eventqueue event queue eventfilter event filter for global (not variable dependent) events sol pointer to primal CIP solution; is cleared in function call printreason Should all the reasons of violations be printed? completely Should all violations be checked? checkbounds Should the bounds of the variables be checked? checkintegrality Has integrality to be checked? checklprows Do constraints represented by rows in the current LP have to be checked? stored stores whether solution was feasible and good enough to keep
Definition at line 1570 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
-
primal primal data blkmem block memory set global SCIP settings messagehdlr message handler stat problem statistics data origprob original problem transprob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data eventqueue event queue eventfilter event filter for global (not variable dependent) events heur heuristic that found the solution (or NULL if it's from the tree) printreason Should all reasons of violations be printed? completely Should all violations be checked? checkintegrality Has integrality to be checked? checklprows Do constraints represented by rows in the current LP have to be checked? stored stores whether given solution was good enough to keep
Definition at line 1644 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
-
primal primal data set global SCIP settings sol primal CIP solution
Definition at line 1679 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
-
primal primal data sol primal CIP solution
Definition at line 1701 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
-
primal primal data var problem variable oldobj old objective value newobj new objective value
Definition at line 1731 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_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
-
primal primal data blkmem block memory set global SCIP settings stat problem statistics data eventfilter event filter for global (not variable dependent) events eventqueue event queue origprob original problem transprob transformed problem tree branch and bound tree reopt reoptimization data structure lp current LP data
Definition at line 1754 of file primal.c.
References SCIP_Primal::nsols, NULL, 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
-
primal primal data sol primal solution blkmem block memory set global SCIP settings messagehdlr message handler stat problem statistics data origprob original problem transprob transformed problem after presolve tree branch and bound tree reopt reoptimization data structure lp current LP data eventqueue event queue eventfilter event filter for global (not variable dependent) events solvals array 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 solvalset array 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 solvalssize size of solvals and solvalset arrays, should be >= number of active variables added pointer to store whether the solution was added
Definition at line 1803 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
-
primal problem data
Definition at line 1978 of file primal.c.
References NULL, 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
-
primal problem data updateviolations marks whether the updating of violations is turned on
Definition at line 1988 of file primal.c.
References NULL, and SCIP_Primal::updateviolations.
Referenced by SCIPactivateSolViolationUpdates(), and SCIPdeactivateSolViolationUpdates().