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 51 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 74 of file primal.c.
References BMSreallocMemoryArray, 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 99 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 121 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 151 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
-
primal pointer to primal data blkmem block memory
Definition at line 194 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 238 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 265 of file primal.c.
References SCIP_Primal::cutoffbound, 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 298 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 352 of file primal.c.
References 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 407 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 439 of file primal.c.
References 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 479 of file primal.c.
References 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 535 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 569 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 582 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 592 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 621 of file primal.c.
References SCIP_Stat::bestsolnode, ensureSolsSize(), FALSE, SCIP_Stat::firstprimalbound, SCIP_Stat::firstprimaldepth, SCIP_Stat::firstprimalheur, SCIP_Stat::firstprimaltime, 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_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, 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(), 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 826 of file primal.c.
References ensureSolsSize(), SCIP_Primal::nlimsolsfound, SCIP_Primal::nsols, SCIP_Primal::nsolsfound, NULL, SCIP_CALL, 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 878 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 909 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 959 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 994 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 |
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 1076 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 1128 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 1166 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 1187 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 1255 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
-
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 1310 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 1365 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 1422 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 1449 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 1479 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 1549 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 1623 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 1658 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 1680 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 1710 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 1733 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 1782 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 1957 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
-
primal problem data updateviolations marks whether the updating of violations is turned on
Definition at line 1967 of file primal.c.
References NULL, and SCIP_Primal::updateviolations.
Referenced by SCIPactivateSolViolationUpdates(), and SCIPdeactivateSolViolationUpdates().