GOBNILP  f164d83
Macros | Functions
convex4_cuts.c File Reference

Implements the functions needed to add acyclicity constraints based on the convex hull of the family-variable polytope for 4 nodes. More...

#include "convex4_cuts.h"
Include dependency graph for convex4_cuts.c:

Macros

#define DEFAULT_CONVEXHULL4BCUTS   TRUE
 
#define DEFAULT_CONVEXHULL4BCUTS_ADDCUT   TRUE
 
#define DEFAULT_CONVEXHULL4BCUTS_ADDTOPOOL   TRUE
 
#define DEFAULT_CONVEXHULL4BCUTS_DELAY   FALSE
 
#define DEFAULT_CONVEXHULL4CCUTS   FALSE
 
#define DEFAULT_CONVEXHULL4CCUTS_ADDCUT   TRUE
 
#define DEFAULT_CONVEXHULL4CCUTS_ADDTOPOOL   TRUE
 
#define DEFAULT_CONVEXHULL4CCUTS_DELAY   TRUE
 
#define DEFAULT_CONVEXHULL4DCUTS   FALSE
 
#define DEFAULT_CONVEXHULL4DCUTS_ADDCUT   TRUE
 
#define DEFAULT_CONVEXHULL4DCUTS_ADDTOPOOL   TRUE
 
#define DEFAULT_CONVEXHULL4DCUTS_DELAY   TRUE
 
#define DEFAULT_CONVEXHULL4ECUTS   FALSE
 
#define DEFAULT_CONVEXHULL4ECUTS_ADDCUT   TRUE
 
#define DEFAULT_CONVEXHULL4ECUTS_ADDTOPOOL   TRUE
 
#define DEFAULT_CONVEXHULL4ECUTS_DELAY   TRUE
 
#define DEFAULT_CONVEXHULL4GCUTS   FALSE
 
#define DEFAULT_CONVEXHULL4GCUTS_ADDCUT   TRUE
 
#define DEFAULT_CONVEXHULL4GCUTS_ADDTOPOOL   TRUE
 
#define DEFAULT_CONVEXHULL4GCUTS_DELAY   TRUE
 
#define DEFAULT_CONVEXHULL4HCUTS   FALSE
 
#define DEFAULT_CONVEXHULL4HCUTS_ADDCUT   TRUE
 
#define DEFAULT_CONVEXHULL4HCUTS_ADDTOPOOL   TRUE
 
#define DEFAULT_CONVEXHULL4HCUTS_DELAY   TRUE
 
#define DEFAULT_CONVEXHULL4ICUTS   FALSE
 
#define DEFAULT_CONVEXHULL4ICUTS_ADDCUT   TRUE
 
#define DEFAULT_CONVEXHULL4ICUTS_ADDTOPOOL   TRUE
 
#define DEFAULT_CONVEXHULL4ICUTS_DELAY   TRUE
 
#define DEFAULT_INITCONVEXHULL4BCUTS   0
 
#define DEFAULT_INITCONVEXHULL4BCUTS_ADDCUT   TRUE
 
#define DEFAULT_INITCONVEXHULL4BCUTS_ADDTOPOOL   FALSE
 
#define DEFAULT_INITCONVEXHULL4CCUTS   0
 
#define DEFAULT_INITCONVEXHULL4CCUTS_ADDCUT   TRUE
 
#define DEFAULT_INITCONVEXHULL4CCUTS_ADDTOPOOL   FALSE
 
#define DEFAULT_INITCONVEXHULL4DCUTS   0
 
#define DEFAULT_INITCONVEXHULL4DCUTS_ADDCUT   TRUE
 
#define DEFAULT_INITCONVEXHULL4DCUTS_ADDTOPOOL   FALSE
 
#define DEFAULT_INITCONVEXHULL4ECUTS   0
 
#define DEFAULT_INITCONVEXHULL4ECUTS_ADDCUT   TRUE
 
#define DEFAULT_INITCONVEXHULL4ECUTS_ADDTOPOOL   FALSE
 
#define DEFAULT_INITCONVEXHULL4GCUTS   0
 
#define DEFAULT_INITCONVEXHULL4GCUTS_ADDCUT   TRUE
 
#define DEFAULT_INITCONVEXHULL4GCUTS_ADDTOPOOL   FALSE
 
#define DEFAULT_INITCONVEXHULL4HCUTS   0
 
#define DEFAULT_INITCONVEXHULL4HCUTS_ADDCUT   TRUE
 
#define DEFAULT_INITCONVEXHULL4HCUTS_ADDTOPOOL   FALSE
 
#define DEFAULT_INITCONVEXHULL4ICUTS   0
 
#define DEFAULT_INITCONVEXHULL4ICUTS_ADDCUT   TRUE
 
#define DEFAULT_INITCONVEXHULL4ICUTS_ADDTOPOOL   FALSE
 

Functions

SCIP_RETCODE C4_add_convexhull_constraints (SCIP *scip, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, int *nGen, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious, SCIP_Bool *cutoff)
 Search for (potentially) all non-initial 'convex4' constraints (derived from convex hull of DAG polytope with 4 nodes ) More...
 
SCIP_RETCODE C4_add_initconvexhull_constraints (SCIP *scip, SCIP_CONSHDLR *conshdlr, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store)
 Search for (potentially) all initial 'convex4' constraints (derived from convex hull of DAG polytope with 4 nodes ) More...
 
SCIP_RETCODE C4_addParams (SCIP *scip)
 Add parameters controlling the addition of 'convex4' cuts to the SCIP instance. More...
 
static SCIP_RETCODE convexhull4x (SCIP *scip, SCIP_CONSHDLR *conshdlr, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_SOL *sol, const int cluster[4], const int convex4x, const int convex4x_ind, SCIP_Bool *result, const SCIP_Bool must_separate, const SCIP_Bool add_to_pool, const SCIP_Bool addcut, const SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
 (conditionally) add a convex4 cut More...
 
static SCIP_RETCODE cut_convexhull4b (SCIP *scip, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_CONSHDLR *conshdlr, int *nGen, SCIP_SOL *sol, SCIP_Bool must_separate, SCIP_Bool add_to_pool, SCIP_Bool addcut, int limit, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
 Search for 4B constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution. More...
 
static SCIP_RETCODE cut_convexhull4c (SCIP *scip, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_CONSHDLR *conshdlr, int *nGen, SCIP_SOL *sol, SCIP_Bool must_separate, SCIP_Bool add_to_pool, SCIP_Bool addcut, int limit, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
 Search for 4C constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution. More...
 
static SCIP_RETCODE cut_convexhull4d (SCIP *scip, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_CONSHDLR *conshdlr, int *nGen, SCIP_SOL *sol, SCIP_Bool must_separate, SCIP_Bool add_to_pool, SCIP_Bool addcut, int limit, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
 Search for 4D constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution. More...
 
static SCIP_RETCODE cut_convexhull4e (SCIP *scip, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_CONSHDLR *conshdlr, int *nGen, SCIP_SOL *sol, SCIP_Bool must_separate, SCIP_Bool add_to_pool, SCIP_Bool addcut, int limit, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
 Search for 4E constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution. More...
 
static SCIP_RETCODE cut_convexhull4g (SCIP *scip, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_CONSHDLR *conshdlr, int *nGen, SCIP_SOL *sol, SCIP_Bool must_separate, SCIP_Bool add_to_pool, SCIP_Bool addcut, int limit, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
 Search for 4G constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution. More...
 
static SCIP_RETCODE cut_convexhull4h (SCIP *scip, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_CONSHDLR *conshdlr, int *nGen, SCIP_SOL *sol, SCIP_Bool must_separate, SCIP_Bool add_to_pool, SCIP_Bool addcut, int limit, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
 Search for 4H constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution. More...
 
static SCIP_RETCODE cut_convexhull4i (SCIP *scip, SolutionInfo *solinfo, ParentSetData *psd, SCIP_Bool ***store, SCIP_CONSHDLR *conshdlr, int *nGen, SCIP_SOL *sol, SCIP_Bool must_separate, SCIP_Bool add_to_pool, SCIP_Bool addcut, int limit, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
 Search for 4I constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution. More...
 

Detailed Description

Implements the functions needed to add acyclicity constraints based on the convex hull of the family-variable polytope for 4 nodes.

Function Documentation

◆ C4_add_convexhull_constraints()

SCIP_RETCODE C4_add_convexhull_constraints ( SCIP *  scip,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_CONSHDLR *  conshdlr,
SCIP_SOL *  sol,
int *  nGen,
SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious,
SCIP_Bool *  cutoff 
)

Search for (potentially) all non-initial 'convex4' constraints (derived from convex hull of DAG polytope with 4 nodes )

(Not all will be searched for; it depends on the parameter settings.)

References cut_convexhull4b(), cut_convexhull4c(), cut_convexhull4d(), cut_convexhull4e(), cut_convexhull4g(), cut_convexhull4h(), and cut_convexhull4i().

Here is the call graph for this function:

◆ C4_add_initconvexhull_constraints()

SCIP_RETCODE C4_add_initconvexhull_constraints ( SCIP *  scip,
SCIP_CONSHDLR *  conshdlr,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store 
)

Search for (potentially) all initial 'convex4' constraints (derived from convex hull of DAG polytope with 4 nodes )

(Not all will be searched for; it depends on the parameter settings.)

References cut_convexhull4b(), cut_convexhull4c(), cut_convexhull4d(), cut_convexhull4e(), cut_convexhull4g(), cut_convexhull4h(), and cut_convexhull4i().

Referenced by SCIP_DECL_CONSINITLP().

Here is the call graph for this function:

◆ C4_addParams()

SCIP_RETCODE C4_addParams ( SCIP *  scip)

Add parameters controlling the addition of 'convex4' cuts to the SCIP instance.

Parameters
scipSCIP data structure

◆ convexhull4x()

static SCIP_RETCODE convexhull4x ( SCIP *  scip,
SCIP_CONSHDLR *  conshdlr,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_SOL *  sol,
const int  cluster[4],
const int  convex4x,
const int  convex4x_ind,
SCIP_Bool *  result,
const SCIP_Bool  must_separate,
const SCIP_Bool  add_to_pool,
const SCIP_Bool  addcut,
const SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious_ptr,
SCIP_Bool *  cutoff 
)
static

(conditionally) add a convex4 cut

Parameters
scipSCIP data structure
conshdlrconstraint handler
solinfosolution information
solsolution to be separated
clusterthe 4 variables in the convex4 cut to be added e.g. [v0,v1,v2,v3] = [2,5,4,3]
convex4xconvex4 cut class, e.g 4b=1, 4c=2
convex4x_indconvex4 cut class, e.g 4b=1, 4c=2 but offset to pick out right pattern
resultto return whether the cut was added
must_separatewhether to only add if it separates sol, otherwise added unconditionally
add_to_poolwhether to add cut to global cut pool
addcutwhether to add cut to LP ( might just add to cut pool )
forcecutswhether to force cuts to be added
found_efficacious_ptrto return whether an efficacious cutting plane was found

References SolutionInfo::lpsolvals, ParentSetData::nParentSets, and ParentSetData::PaVars.

Referenced by cut_convexhull4b(), cut_convexhull4c(), cut_convexhull4d(), cut_convexhull4e(), cut_convexhull4g(), cut_convexhull4h(), and cut_convexhull4i().

◆ cut_convexhull4b()

static SCIP_RETCODE cut_convexhull4b ( SCIP *  scip,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_CONSHDLR *  conshdlr,
int *  nGen,
SCIP_SOL *  sol,
SCIP_Bool  must_separate,
SCIP_Bool  add_to_pool,
SCIP_Bool  addcut,
int  limit,
SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious_ptr,
SCIP_Bool *  cutoff 
)
static

Search for 4B constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution.

Example convex4b cut:

$ I(0 \leftarrow 1,3)+I(0 \leftarrow 2,3)+I(0 \leftarrow 1,2,3)+ I(1 \leftarrow 2)+I(1 \leftarrow 0,2)+I(1 \leftarrow 0,3)+I(1 \leftarrow 2,3)+I(1 \leftarrow 0,2,3)+ I(2 \leftarrow 1)+I(2 \leftarrow 0,1)+I(2 \leftarrow 0,3)+I(2 \leftarrow 1,3)+I(2 \leftarrow 0,1,3)+ I(3 \leftarrow 0,1)+I(3 \leftarrow 0,2)+I(3 \leftarrow 0,1,2) \leq 2 $

Parameters
scipSCIP data structure
solinfosolution information
conshdlrconstraint handler
nGen*nGen is how many cuts added
solsolution to be separated
must_separateif true cut is only added if it separates sol, otherwise added unconditionally
add_to_poolwhether to add cut to global cut pool
addcutwhether to add cut ( might just add to cut pool )
limitlimit on number of cuts to add (-1 for no limit )
forcecutswhether to force cuts to be added
found_efficacious_ptrto return whether an efficacious cutting plane was found

References SolutionInfo::ch, convexhull4x(), SolutionInfo::ispa, ParentSetData::n, SolutionInfo::nch, SolutionInfo::npa, SolutionInfo::nposvars, SolutionInfo::pa, and SolutionInfo::posvars.

Referenced by C4_add_convexhull_constraints(), and C4_add_initconvexhull_constraints().

Here is the call graph for this function:

◆ cut_convexhull4c()

static SCIP_RETCODE cut_convexhull4c ( SCIP *  scip,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_CONSHDLR *  conshdlr,
int *  nGen,
SCIP_SOL *  sol,
SCIP_Bool  must_separate,
SCIP_Bool  add_to_pool,
SCIP_Bool  addcut,
int  limit,
SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious_ptr,
SCIP_Bool *  cutoff 
)
static

Search for 4C constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution.

Example 4c cut:

$ I(0 \leftarrow 1,3)+I(0 \leftarrow 2,3)+I(0 \leftarrow 1,2,3)+ I(1 \leftarrow 0)+I(1 \leftarrow 2)+I(1 \leftarrow 0,2)+I(1 \leftarrow 0,3)+I(1 \leftarrow 2,3)+I(1 \leftarrow 0,2,3)+ I(2 \leftarrow 0,3)+I(2 \leftarrow 1,3)+I(2 \leftarrow 0,1,3)+ I(3 \leftarrow 0,2)+I(3 \leftarrow 0,1,2) \leq 2 $

Parameters
scipSCIP data structure
solinfosolution information
conshdlrconstraint handler
nGen*nGen is how many cuts added
solsolution to be separated
must_separateif true cut is only added if it separates sol, otherwise added unconditionally
add_to_poolwhether to add cut to global cut pool
addcutwhether to add cut ( might just add to cut pool )
limitlimit on number of cuts to add (-1 for no limit )
forcecutswhether to force cuts to be added
found_efficacious_ptrto return whether an efficacious cutting plane was found

References convexhull4x(), SolutionInfo::ispa, ParentSetData::n, SolutionInfo::npa, SolutionInfo::nposvars, SolutionInfo::pa, and SolutionInfo::posvars.

Referenced by C4_add_convexhull_constraints(), and C4_add_initconvexhull_constraints().

Here is the call graph for this function:

◆ cut_convexhull4d()

static SCIP_RETCODE cut_convexhull4d ( SCIP *  scip,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_CONSHDLR *  conshdlr,
int *  nGen,
SCIP_SOL *  sol,
SCIP_Bool  must_separate,
SCIP_Bool  add_to_pool,
SCIP_Bool  addcut,
int  limit,
SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious_ptr,
SCIP_Bool *  cutoff 
)
static

Search for 4D constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution.

$ I(0 \leftarrow 3)+I(0 \leftarrow 1,3)+I(0 \leftarrow 2,3)+I(0 \leftarrow 1,2,3)+ I(1 \leftarrow 0)+I(1 \leftarrow 2)+I(1 \leftarrow 3)+I(1 \leftarrow 0,2)+I(1 \leftarrow 0,3)+I(1 \leftarrow 2,3)+I(1 \leftarrow 0,2,3)+ I(2 \leftarrow 3)+I(2 \leftarrow 0,3)+I(2 \leftarrow 1,3)+I(2 \leftarrow 0,1,3)+ I(3 \leftarrow 0)+I(3 \leftarrow 1)+I(3 \leftarrow 2)+I(3 \leftarrow 0,1)+2I(3 \leftarrow 0,2)+I(3 \leftarrow 1,2)+2I(3 \leftarrow 0,1,2) \leq 3 $

Parameters
scipSCIP data structure
solinfosolution information
conshdlrconstraint handler
nGen*nGen is how many cuts added
solsolution to be separated
must_separateif true cut is only added if it separates sol, otherwise added unconditionally
add_to_poolwhether to add cut to global cut pool
addcutwhether to add cut ( might just add to cut pool )
limitlimit on number of cuts to add (-1 for no limit )
forcecutswhether to force cuts to be added
found_efficacious_ptrto return whether an efficacious cutting plane was found

References convexhull4x(), SolutionInfo::ispa, ParentSetData::n, SolutionInfo::npa, SolutionInfo::nposvars, SolutionInfo::pa, and SolutionInfo::posvars.

Referenced by C4_add_convexhull_constraints(), and C4_add_initconvexhull_constraints().

Here is the call graph for this function:

◆ cut_convexhull4e()

static SCIP_RETCODE cut_convexhull4e ( SCIP *  scip,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_CONSHDLR *  conshdlr,
int *  nGen,
SCIP_SOL *  sol,
SCIP_Bool  must_separate,
SCIP_Bool  add_to_pool,
SCIP_Bool  addcut,
int  limit,
SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious_ptr,
SCIP_Bool *  cutoff 
)
static

Search for 4E constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution.

Example 4e cut:

$ I(0 \leftarrow 1,2)+I(0 \leftarrow 1,3)+I(0 \leftarrow 2,3)+2I(0 \leftarrow 1,2,3)+ I(1 \leftarrow 0,2)+I(1 \leftarrow 0,3)+I(1 \leftarrow 0,2,3)+ I(2 \leftarrow 0,1)+I(2 \leftarrow 0,3)+I(2 \leftarrow 0,1,3)+ I(3 \leftarrow 0,1)+I(3 \leftarrow 0,2)+I(3 \leftarrow 0,1,2) \leq 2 $

Parameters
scipSCIP data structure
solinfosolution information
conshdlrconstraint handler
nGen*nGen is how many cuts added
solsolution to be separated
must_separateif true cut is only added if it separates sol, otherwise added unconditionally
add_to_poolwhether to add cut to global cut pool
addcutwhether to add cut ( might just add to cut pool )
limitlimit on number of cuts to add (-1 for no limit )
forcecutswhether to force cuts to be added
found_efficacious_ptrto return whether an efficacious cutting plane was found

References convexhull4x(), SolutionInfo::ispa, ParentSetData::n, SolutionInfo::npa, SolutionInfo::nposvars, SolutionInfo::pa, and SolutionInfo::posvars.

Referenced by C4_add_convexhull_constraints(), and C4_add_initconvexhull_constraints().

Here is the call graph for this function:

◆ cut_convexhull4g()

static SCIP_RETCODE cut_convexhull4g ( SCIP *  scip,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_CONSHDLR *  conshdlr,
int *  nGen,
SCIP_SOL *  sol,
SCIP_Bool  must_separate,
SCIP_Bool  add_to_pool,
SCIP_Bool  addcut,
int  limit,
SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious_ptr,
SCIP_Bool *  cutoff 
)
static

Search for 4G constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution.

$ I(0 \leftarrow 1)+I(0 \leftarrow 2)+I(0 \leftarrow 1,2)+I(0 \leftarrow 1,3)+I(0 \leftarrow 2,3)+2I(0 \leftarrow 1,2,3)+ I(1 \leftarrow 0)+I(1 \leftarrow 2)+I(1 \leftarrow 3)+I(1 \leftarrow 0,2)+2I(1 \leftarrow 0,3)+I(1 \leftarrow 2,3)+2I(1 \leftarrow 0,2,3)+ I(2 \leftarrow 0)+I(2 \leftarrow 0,1)+I(2 \leftarrow 0,3)+I(2 \leftarrow 0,1,3)+ I(3 \leftarrow 0,1)+I(3 \leftarrow 0,1,2) \leq 3 $

Parameters
scipSCIP data structure
solinfosolution information
conshdlrconstraint handler
nGen*nGen is how many cuts added
solsolution to be separated
must_separateif true cut is only added if it separates sol, otherwise added unconditionally
add_to_poolwhether to add cut to global cut pool
addcutwhether to add cut ( might just add to cut pool )
limitlimit on number of cuts to add (-1 for no limit )
forcecutswhether to force cuts to be added
found_efficacious_ptrto return whether an efficacious cutting plane was found

References SolutionInfo::ch, convexhull4x(), SolutionInfo::ispa, ParentSetData::n, SolutionInfo::nch, SolutionInfo::npa, SolutionInfo::nposvars, SolutionInfo::pa, and SolutionInfo::posvars.

Referenced by C4_add_convexhull_constraints(), and C4_add_initconvexhull_constraints().

Here is the call graph for this function:

◆ cut_convexhull4h()

static SCIP_RETCODE cut_convexhull4h ( SCIP *  scip,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_CONSHDLR *  conshdlr,
int *  nGen,
SCIP_SOL *  sol,
SCIP_Bool  must_separate,
SCIP_Bool  add_to_pool,
SCIP_Bool  addcut,
int  limit,
SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious_ptr,
SCIP_Bool *  cutoff 
)
static

Search for 4H constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution.

Example 4h cut:

$ I(0 \leftarrow 1)+I(0 \leftarrow 2)+I(0 \leftarrow 1,2)+I(0 \leftarrow 1,3)+I(0 \leftarrow 2,3)+2I(0 \leftarrow 1,2,3)+ I(1 \leftarrow 0,3)+I(1 \leftarrow 0,2,3)+ I(2 \leftarrow 0,3)+I(2 \leftarrow 0,1,3)+ I(3 \leftarrow 0,1,2) \leq 2 $

Parameters
scipSCIP data structure
solinfosolution information
conshdlrconstraint handler
nGen*nGen is how many cuts added
solsolution to be separated
must_separateif true cut is only added if it separates sol, otherwise added unconditionally
add_to_poolwhether to add cut to global cut pool
addcutwhether to add cut ( might just add to cut pool )
limitlimit on number of cuts to add (-1 for no limit )
forcecutswhether to force cuts to be added
found_efficacious_ptrto return whether an efficacious cutting plane was found

References convexhull4x(), ParentSetData::n, SolutionInfo::npa, SolutionInfo::nposvars, SolutionInfo::pa, and SolutionInfo::posvars.

Referenced by C4_add_convexhull_constraints(), and C4_add_initconvexhull_constraints().

Here is the call graph for this function:

◆ cut_convexhull4i()

static SCIP_RETCODE cut_convexhull4i ( SCIP *  scip,
SolutionInfo solinfo,
ParentSetData psd,
SCIP_Bool ***  store,
SCIP_CONSHDLR *  conshdlr,
int *  nGen,
SCIP_SOL *  sol,
SCIP_Bool  must_separate,
SCIP_Bool  add_to_pool,
SCIP_Bool  addcut,
int  limit,
SCIP_Bool  forcecuts,
SCIP_Bool *  found_efficacious_ptr,
SCIP_Bool *  cutoff 
)
static

Search for 4I constraints (derived from convex hull of DAG polytope with 4 nodes ) Can be use to add initial cuts or cuts for a specific LP solution.

greedy search incomplete algorithm

Example 4i cut:

$ I(0 \leftarrow 1)+I(0 \leftarrow 2)+I(0 \leftarrow 1,2)+I(0 \leftarrow 1,3)+I(0 \leftarrow 2,3)+2I(0 \leftarrow 1,2,3)+ I(1 \leftarrow 0)+I(1 \leftarrow 2)+I(1 \leftarrow 3)+I(1 \leftarrow 0,2)+2I(1 \leftarrow 0,3)+I(1 \leftarrow 2,3)+2I(1 \leftarrow 0,2,3)+ I(2 \leftarrow 0)+I(2 \leftarrow 1)+I(2 \leftarrow 3)+I(2 \leftarrow 0,1)+2I(2 \leftarrow 0,3)+I(2 \leftarrow 1,3)+2I(2 \leftarrow 0,1,3)+ I(3 \leftarrow 1)+I(3 \leftarrow 2)+I(3 \leftarrow 0,1)+I(3 \leftarrow 0,2)+I(3 \leftarrow 1,2)+2I(3 \leftarrow 0,1,2) \leq 4 $

Parameters
scipSCIP data structure
solinfosolution information
conshdlrconstraint handler
nGen*nGen is how many cuts added
solsolution to be separated
must_separateif true cut is only added if it separates sol, otherwise added unconditionally
add_to_poolwhether to add cut to global cut pool
addcutwhether to add cut ( might just add to cut pool )
limitlimit on number of cuts to add (-1 for no limit )
forcecutswhether to force cuts to be added
found_efficacious_ptrto return whether an efficacious cutting plane was found

References convexhull4x(), SolutionInfo::ispa, ParentSetData::n, SolutionInfo::npa, and SolutionInfo::pa.

Referenced by C4_add_convexhull_constraints(), and C4_add_initconvexhull_constraints().

Here is the call graph for this function: