28 #define HEUR_NAME "pscostdiving" 29 #define HEUR_DESC "LP diving heuristic that chooses fixings w.r.t. the pseudo cost values" 30 #define HEUR_DISPCHAR 'p' 31 #define HEUR_PRIORITY -1002000 33 #define HEUR_FREQOFS 2 34 #define HEUR_MAXDEPTH -1 35 #define HEUR_TIMING SCIP_HEURTIMING_AFTERLPPLUNGE 36 #define HEUR_USESSUBSCIP FALSE 37 #define DIVESET_DIVETYPES SCIP_DIVETYPE_INTEGRALITY 44 #define DEFAULT_MINRELDEPTH 0.0 45 #define DEFAULT_MAXRELDEPTH 1.0 46 #define DEFAULT_MAXLPITERQUOT 0.05 47 #define DEFAULT_MAXLPITEROFS 1000 48 #define DEFAULT_MAXDIVEUBQUOT 0.8 50 #define DEFAULT_MAXDIVEAVGQUOT 0.0 52 #define DEFAULT_MAXDIVEUBQUOTNOSOL 0.1 53 #define DEFAULT_MAXDIVEAVGQUOTNOSOL 0.0 54 #define DEFAULT_BACKTRACK TRUE 55 #define DEFAULT_LPRESOLVEDOMCHGQUOT 0.15 56 #define DEFAULT_LPSOLVEFREQ 0 57 #define DEFAULT_ONLYLPBRANCHCANDS TRUE 59 #define DEFAULT_RANDSEED 103 102 assert(heurdata != NULL);
116 assert(heur != NULL);
121 assert(heurdata != NULL);
136 assert(heur != NULL);
141 assert(heurdata != NULL);
158 assert(heurdata != NULL);
162 assert(diveset != NULL);
192 candsfrac =
MAX(candsfrac, 0.1);
193 candsfrac = MIN(candsfrac, 0.9);
205 assert(pscostdown >= 0.0 && pscostup >= 0.0);
206 if( mayrounddown != mayroundup )
207 *roundup = mayrounddown;
222 else if( pscostdown > pscostup )
228 pscostquot =
sqrt(candsfrac) * (1.0 + pscostdown) / (1.0 + pscostup);
230 pscostquot =
sqrt(1.0 - candsfrac) * (1.0 + pscostup) / (1.0 + pscostdown);
234 pscostquot *= 1000.0;
236 assert(pscostquot >= 0);
262 assert(heur != NULL);
int SCIPgetNIntVars(SCIP *scip)
#define DIVESET_DIVETYPES
SCIP_Real SCIPgetVarPseudocostVal(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPsetHeurExit(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEUREXIT((*heurexit)))
#define DEFAULT_MAXDIVEUBQUOTNOSOL
SCIP_DIVESET ** SCIPheurGetDivesets(SCIP_HEUR *heur)
#define DEFAULT_ONLYLPBRANCHCANDS
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_Real SCIPvarGetRootSol(SCIP_VAR *var)
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_HeurData SCIP_HEURDATA
#define SCIPfreeBlockMemory(scip, ptr)
SCIP_RETCODE SCIPincludeHeurBasic(SCIP *scip, SCIP_HEUR **heur, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, SCIP_HEURTIMING timingmask, SCIP_Bool usessubscip, SCIP_DECL_HEUREXEC((*heurexec)), SCIP_HEURDATA *heurdata)
int SCIPrandomGetInt(SCIP_RANDNUMGEN *randnumgen, int minrandval, int maxrandval)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
LP diving heuristic that chooses fixings w.r.t. the pseudo cost values.
void SCIPheurSetData(SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
#define SCIPallocBlockMemory(scip, ptr)
#define DEFAULT_LPSOLVEFREQ
static SCIP_DECL_HEURFREE(heurFreePscostdiving)
#define DEFAULT_MAXLPITEROFS
const char * SCIPheurGetName(SCIP_HEUR *heur)
SCIP_RETCODE SCIPsetHeurFree(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURFREE((*heurfree)))
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIPInterval sqrt(const SCIPInterval &x)
static SCIP_DECL_HEUREXIT(heurExitPscostdiving)
int SCIPheurGetNDivesets(SCIP_HEUR *heur)
#define DEFAULT_BACKTRACK
SCIP_RANDNUMGEN * SCIPdivesetGetRandnumgen(SCIP_DIVESET *diveset)
static SCIP_DECL_DIVESETGETSCORE(divesetGetScorePscostdiving)
SCIP_RETCODE SCIPcreateDiveset(SCIP *scip, SCIP_DIVESET **diveset, SCIP_HEUR *heur, const char *name, SCIP_Real minreldepth, SCIP_Real maxreldepth, SCIP_Real maxlpiterquot, SCIP_Real maxdiveubquot, SCIP_Real maxdiveavgquot, SCIP_Real maxdiveubquotnosol, SCIP_Real maxdiveavgquotnosol, SCIP_Real lpresolvedomchgquot, int lpsolvefreq, int maxlpiterofs, unsigned int initialseed, SCIP_Bool backtrack, SCIP_Bool onlylpbranchcands, SCIP_Bool specificsos1score, SCIP_DECL_DIVESETGETSCORE((*divesetgetscore)))
#define DEFAULT_MAXDIVEAVGQUOT
SCIP_RETCODE SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
#define DEFAULT_MAXRELDEPTH
#define DEFAULT_MAXDIVEUBQUOT
int SCIPgetNBinVars(SCIP *scip)
SCIP_RETCODE SCIPperformGenericDivingAlgorithm(SCIP *scip, SCIP_DIVESET *diveset, SCIP_SOL *worksol, SCIP_HEUR *heur, SCIP_RESULT *result, SCIP_Bool nodeinfeasible)
#define DEFAULT_MAXDIVEAVGQUOTNOSOL
#define DEFAULT_MINRELDEPTH
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPsetHeurInit(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURINIT((*heurinit)))
SCIP_RETCODE SCIPincludeHeurPscostdiving(SCIP *scip)
static SCIP_DECL_HEURINIT(heurInitPscostdiving)
static SCIP_DECL_HEUREXEC(heurExecPscostdiving)
SCIP_RETCODE SCIPsetHeurCopy(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURCOPY((*heurcopy)))
#define DEFAULT_LPRESOLVEDOMCHGQUOT
SCIP_HEURDATA * SCIPheurGetData(SCIP_HEUR *heur)
#define DEFAULT_MAXLPITERQUOT
static SCIP_DECL_HEURCOPY(heurCopyPscostdiving)
SCIP_Bool SCIPvarMayRoundUp(SCIP_VAR *var)
SCIP_Bool SCIPvarMayRoundDown(SCIP_VAR *var)
SCIP_RETCODE SCIPcreateSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)