SCIP Doxygen Documentation
Loading...
Searching...
No Matches

Detailed Description

constraint handler for counting feasible solutions

Author
Stefan Heinz
Michael Winkler

If this constraint handler is activated than it counts or collects all feasible solutions. We refer to How to use SCIP to count/enumerate feasible solutions for more details about using SCIP for counting feasible solutions.

Definition in file cons_countsols.c.

#include "blockmemshell/memory.h"
#include "scip/cons_bounddisjunction.h"
#include "scip/cons_countsols.h"
#include "scip/cons_knapsack.h"
#include "scip/cons_logicor.h"
#include "scip/cons_setppc.h"
#include "scip/cons_varbound.h"
#include "scip/dialog_default.h"
#include "scip/pub_cons.h"
#include "scip/pub_dialog.h"
#include "scip/pub_disp.h"
#include "scip/pub_heur.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_sol.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_cons.h"
#include "scip/scip_dialog.h"
#include "scip/scip_disp.h"
#include "scip/scip_general.h"
#include "scip/scip_heur.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_sol.h"
#include "scip/scip_solve.h"
#include "scip/scip_var.h"
#include "symmetry/type_symmetry.h"
#include <string.h>

Go to the source code of this file.

Macros

#define CONSHDLR_NAME   "countsols"
#define CONSHDLR_DESC   "constraint to count feasible solutions"
#define CONSHDLR_ENFOPRIORITY   -9999999
#define CONSHDLR_CHECKPRIORITY   -9999999
#define CONSHDLR_EAGERFREQ   100
#define CONSHDLR_NEEDSCONS   FALSE
#define DEFAULT_SPARSETEST   TRUE
#define DEFAULT_DISCARDSOLS   TRUE
#define DEFAULT_ACTIVE   FALSE
#define DEFAULT_COLLECT   FALSE
#define DEFAULT_SOLLIMIT   -1LL
#define DISP_SOLS_NAME   "sols"
#define DISP_SOLS_DESC   "number of detected feasible solutions"
#define DISP_SOLS_HEADER   " sols "
#define DISP_SOLS_WIDTH   7
#define DISP_SOLS_PRIORITY   110000
#define DISP_SOLS_POSITION   100000
#define DISP_SOLS_STRIPLINE   TRUE
#define DISP_CUTS_NAME   "feasST"
#define DISP_CUTS_DESC   "number of detected non trivial feasible subtrees"
#define DISP_CUTS_HEADER   "feasST"
#define DISP_CUTS_WIDTH   6
#define DISP_CUTS_PRIORITY   110000
#define DISP_CUTS_POSITION   110000
#define DISP_CUTS_STRIPLINE   TRUE
#define CUTOFF_CONSTRAINT(x)
#define consCopyCountsols   NULL

Functions

static void allocInt (Int *value)
static void setInt (Int *value, SCIP_Longint newvalue)
static void setPowerOfTwo (Int *value, SCIP_Longint exponent)
static void freeInt (Int *value)
static void addOne (Int *value)
static void addInt (Int *value, Int *summand)
static void multInt (Int *value, SCIP_Longint factor)
static void toString (Int value, char **buffer, int buffersize)
static SCIP_Longint getNCountedSols (Int value, SCIP_Bool *valid)
static SCIP_Bool varIsUnfixedLocal (SCIP_VAR *var)
static SCIP_RETCODE conshdlrdataCreate (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata)
static void checkSolutionOrig (SCIP *scip, SCIP_SOL *sol, SCIP_CONSHDLRDATA *conshdlrdata)
static SCIP_RETCODE checkParameters (SCIP *scip)
static CUTOFF_CONSTRAINT (addBinaryCons)
static CUTOFF_CONSTRAINT (addIntegerCons)
static SCIP_RETCODE collectSolution (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_SOL *sol)
static SCIP_RETCODE countSparseSol (SCIP *scip, SCIP_SOL *sol, SCIP_Bool feasible, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_RESULT *result)
static SCIP_RETCODE checkLogicor (SCIP *scip, SCIP_CONSHDLR *conshdlr, int nconss, SCIP_Bool *satisfied)
static SCIP_RETCODE checkKnapsack (SCIP *scip, SCIP_CONSHDLR *conshdlr, int nconss, SCIP_Bool *satisfied)
static SCIP_RETCODE checkBounddisjunction (SCIP *scip, SCIP_CONSHDLR *conshdlr, int nconss, SCIP_Bool *satisfied)
static SCIP_RETCODE checkVarbound (SCIP *scip, SCIP_CONSHDLR *conshdlr, int nconss, SCIP_Bool *satisfied)
static SCIP_RETCODE checkFeasSubtree (SCIP *scip, SCIP_SOL *sol, SCIP_Bool *feasible)
static SCIP_RETCODE checkSolution (SCIP *scip, SCIP_SOL *sol, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_RESULT *result)
static SCIP_RETCODE includeConshdlrCountsols (SCIP *scip, SCIP_Bool dialogs)
static SCIP_DECL_CONSHDLRCOPY (conshdlrCopyCountsols)
static SCIP_DECL_CONSFREE (consFreeCountsols)
static SCIP_DECL_CONSINIT (consInitCountsols)
static SCIP_DECL_CONSEXIT (consExitCountsols)
static SCIP_DECL_CONSINITSOL (consInitsolCountsols)
static SCIP_DECL_CONSEXITSOL (consExitsolCountsols)
static SCIP_DECL_CONSENFOLP (consEnfolpCountsols)
static SCIP_DECL_CONSENFORELAX (consEnforelaxCountsols)
static SCIP_DECL_CONSENFOPS (consEnfopsCountsols)
static SCIP_DECL_CONSCHECK (consCheckCountsols)
static SCIP_DECL_CONSLOCK (consLockCountsols)
 SCIP_DECL_DIALOGEXEC (SCIPdialogExecCountPresolve)
 SCIP_DECL_DIALOGEXEC (SCIPdialogExecCount)
static SCIP_DECL_SORTPTRCOMP (varCompProbindex)
static SCIP_RETCODE writeExpandedSolutions (SCIP *scip, FILE *file, SCIP_VAR **allvars, int nallvars, SCIP_VAR **activevars, int nactivevars, SCIP_HASHMAP *hashmap, SCIP_SPARSESOL **sols, int nsols)
 SCIP_DECL_DIALOGEXEC (SCIPdialogExecWriteAllsolutions)
static SCIP_RETCODE createCountDialog (SCIP *scip)
static SCIP_DECL_DISPOUTPUT (dispOutputSols)
static SCIP_DECL_DISPOUTPUT (dispOutputFeasSubtrees)
SCIP_RETCODE SCIPincludeConshdlrCountsols (SCIP *scip)
SCIP_RETCODE SCIPcount (SCIP *scip)
SCIP_Longint SCIPgetNCountedSols (SCIP *scip, SCIP_Bool *valid)
void SCIPgetNCountedSolsstr (SCIP *scip, char **buffer, int buffersize, int *requiredsize)
SCIP_Longint SCIPgetNCountedFeasSubtrees (SCIP *scip)
void SCIPgetCountedSparseSols (SCIP *scip, SCIP_VAR ***vars, int *nvars, SCIP_SPARSESOL ***sols, int *nsols)
SCIP_RETCODE SCIPsetParamsCountsols (SCIP *scip)

Macro Definition Documentation

◆ CONSHDLR_NAME

#define CONSHDLR_NAME   "countsols"

Definition at line 85 of file cons_countsols.c.

◆ CONSHDLR_DESC

#define CONSHDLR_DESC   "constraint to count feasible solutions"

Definition at line 86 of file cons_countsols.c.

◆ CONSHDLR_ENFOPRIORITY

#define CONSHDLR_ENFOPRIORITY   -9999999

priority of the constraint handler for constraint enforcing

Definition at line 87 of file cons_countsols.c.

◆ CONSHDLR_CHECKPRIORITY

#define CONSHDLR_CHECKPRIORITY   -9999999

priority of the constraint handler for checking feasibility

Definition at line 88 of file cons_countsols.c.

◆ CONSHDLR_EAGERFREQ

#define CONSHDLR_EAGERFREQ   100

frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only

Definition at line 89 of file cons_countsols.c.

◆ CONSHDLR_NEEDSCONS

#define CONSHDLR_NEEDSCONS   FALSE

should the constraint handler be skipped, if no constraints are available?

Definition at line 91 of file cons_countsols.c.

◆ DEFAULT_SPARSETEST

#define DEFAULT_SPARSETEST   TRUE

sparse test on or off

Definition at line 94 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DEFAULT_DISCARDSOLS

#define DEFAULT_DISCARDSOLS   TRUE

is it allowed to discard solutions

Definition at line 95 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DEFAULT_ACTIVE

#define DEFAULT_ACTIVE   FALSE

is the constraint handler active

Definition at line 96 of file cons_countsols.c.

◆ DEFAULT_COLLECT

#define DEFAULT_COLLECT   FALSE

should the solutions be collected

Definition at line 97 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DEFAULT_SOLLIMIT

#define DEFAULT_SOLLIMIT   -1LL

counting stops, if the given number of solutions were found (-1: no limit)

Definition at line 98 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_SOLS_NAME

#define DISP_SOLS_NAME   "sols"

Definition at line 101 of file cons_countsols.c.

Referenced by includeConshdlrCountsols(), and SCIP_DECL_DISPOUTPUT().

◆ DISP_SOLS_DESC

#define DISP_SOLS_DESC   "number of detected feasible solutions"

Definition at line 102 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_SOLS_HEADER

#define DISP_SOLS_HEADER   " sols "

Definition at line 103 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_SOLS_WIDTH

#define DISP_SOLS_WIDTH   7

Definition at line 104 of file cons_countsols.c.

Referenced by includeConshdlrCountsols(), and SCIP_DECL_DISPOUTPUT().

◆ DISP_SOLS_PRIORITY

#define DISP_SOLS_PRIORITY   110000

Definition at line 105 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_SOLS_POSITION

#define DISP_SOLS_POSITION   100000

Definition at line 106 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_SOLS_STRIPLINE

#define DISP_SOLS_STRIPLINE   TRUE

Definition at line 107 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_CUTS_NAME

#define DISP_CUTS_NAME   "feasST"

Definition at line 109 of file cons_countsols.c.

Referenced by includeConshdlrCountsols(), and SCIP_DECL_DISPOUTPUT().

◆ DISP_CUTS_DESC

#define DISP_CUTS_DESC   "number of detected non trivial feasible subtrees"

Definition at line 110 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_CUTS_HEADER

#define DISP_CUTS_HEADER   "feasST"

Definition at line 111 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_CUTS_WIDTH

#define DISP_CUTS_WIDTH   6

Definition at line 112 of file cons_countsols.c.

Referenced by includeConshdlrCountsols(), and SCIP_DECL_DISPOUTPUT().

◆ DISP_CUTS_PRIORITY

#define DISP_CUTS_PRIORITY   110000

Definition at line 113 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_CUTS_POSITION

#define DISP_CUTS_POSITION   110000

Definition at line 114 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ DISP_CUTS_STRIPLINE

#define DISP_CUTS_STRIPLINE   TRUE

Definition at line 115 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

◆ CUTOFF_CONSTRAINT

#define CUTOFF_CONSTRAINT ( x)
Value:
SCIP_VAR ** x
static SCIP_SOL * sol
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
Definition type_cons.h:64
enum SCIP_Retcode SCIP_RETCODE
struct Scip SCIP
Definition type_scip.h:39
struct SCIP_Sol SCIP_SOL
Definition type_sol.h:57

creates and adds a constraint which cuts off the solution from the feasibility region

input:

  • scip : SCIP main data structure
  • sol : solution to cut off
  • conshdlrdata : constraint handler data

Definition at line 124 of file cons_countsols.c.

◆ consCopyCountsols

#define consCopyCountsols   NULL

Definition at line 1407 of file cons_countsols.c.

Referenced by includeConshdlrCountsols().

Typedef Documentation

◆ Int

typedef SCIP_Longint Int

Definition at line 81 of file cons_countsols.c.

Function Documentation

◆ allocInt()

void allocInt ( Int * value)
static

allocates memory for the value pointer

Parameters
valuepointer to the value to allocate memory

Definition at line 165 of file cons_countsols.c.

Referenced by conshdlrdataCreate(), and countSparseSol().

◆ setInt()

void setInt ( Int * value,
SCIP_Longint newvalue )
static

sets the value pointer to the new value

Parameters
valuepointer to the value to initialize
newvaluenew value

Definition at line 177 of file cons_countsols.c.

References assert(), and SCIP_Longint.

Referenced by countSparseSol(), and SCIP_DECL_CONSINIT().

◆ setPowerOfTwo()

void setPowerOfTwo ( Int * value,
SCIP_Longint exponent )
static

sets a power of 2 to the given value

Parameters
valuepointer to the value to increase
exponentexponent for the base 2

Definition at line 194 of file cons_countsols.c.

References assert(), and SCIP_Longint.

Referenced by countSparseSol().

◆ freeInt()

void freeInt ( Int * value)
static

free memory

Parameters
valuepointer to the value to free

Definition at line 212 of file cons_countsols.c.

Referenced by countSparseSol(), and SCIP_DECL_CONSFREE().

◆ addOne()

void addOne ( Int * value)
static

adds one to the given value

Parameters
valuepointer to the value to increase

Definition at line 224 of file cons_countsols.c.

Referenced by checkSolution(), and countSparseSol().

◆ addInt()

void addInt ( Int * value,
Int * summand )
static

adds the summand to the given value

Parameters
valuepointer to the value to increase
summandsummand to add on

Definition at line 238 of file cons_countsols.c.

Referenced by countSparseSol().

◆ multInt()

void multInt ( Int * value,
SCIP_Longint factor )
static

multiplies the factor by the given value

Parameters
valuepointer to the value to increase
factorfactor to multiply with

Definition at line 253 of file cons_countsols.c.

References assert(), and SCIP_Longint.

Referenced by countSparseSol().

◆ toString()

void toString ( Int value,
char ** buffer,
int buffersize )
static

method for creating a string out of an Int which is a mpz_t or SCIP_Longint

Parameters
valuenumber
bufferpointer to buffer for storing the string
buffersizelength of the buffer

Definition at line 270 of file cons_countsols.c.

References SCIP_LONGINT_FORMAT, and SCIPsnprintf().

Referenced by SCIPgetNCountedSolsstr().

◆ getNCountedSols()

SCIP_Longint getNCountedSols ( Int value,
SCIP_Bool * valid )
static

method for creating a SCIP_Longing out of an Int

Parameters
valuenumber to convert
validpointer to store if the return value is valid

Definition at line 286 of file cons_countsols.c.

References FALSE, SCIP_Bool, SCIP_Longint, TRUE, and valid.

Referenced by checkSolution(), and SCIPgetNCountedSols().

◆ varIsUnfixedLocal()

SCIP_Bool varIsUnfixedLocal ( SCIP_VAR * var)
static

returns whether a given integer variable is unfixed in the local domain

Parameters
varinteger variable

Definition at line 311 of file cons_countsols.c.

References assert(), NULL, SCIP_Bool, SCIP_VARTYPE_CONTINUOUS, SCIPvarGetLbLocal(), SCIPvarGetType(), SCIPvarGetUbLocal(), and var.

Referenced by checkKnapsack(), and checkLogicor().

◆ conshdlrdataCreate()

SCIP_RETCODE conshdlrdataCreate ( SCIP * scip,
SCIP_CONSHDLRDATA ** conshdlrdata )
static

creates the constraint handler data

Parameters
scipSCIP data structure
conshdlrdatapointer to store constraint handler data

Definition at line 325 of file cons_countsols.c.

References allocInt(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.

Referenced by includeConshdlrCountsols().

◆ checkSolutionOrig()

void checkSolutionOrig ( SCIP * scip,
SCIP_SOL * sol,
SCIP_CONSHDLRDATA * conshdlrdata )
static

check solution in original space

Parameters
scipSCIP data structure
solsolution to add
conshdlrdataconstraint handler data

Definition at line 357 of file cons_countsols.c.

References assert(), FALSE, SCIP_Bool, SCIP_OKAY, SCIPABORT, SCIPcheckSolOrig(), SCIPdebugMsg, SCIPprintError(), sol, and TRUE.

Referenced by checkSolution().

◆ checkParameters()

SCIP_RETCODE checkParameters ( SCIP * scip)
static

check if the current parameter setting is correct for a safe counting process

Parameters
scipSCIP data structure

Definition at line 393 of file cons_countsols.c.

References assert(), FALSE, h, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPgetHeurs(), SCIPgetIntParam(), SCIPgetNHeurs(), SCIPheurGetFreq(), SCIPisParamFixed(), SCIPsetIntParam(), SCIPunfixParam(), SCIPverbMessage(), SCIPwarningMessage(), TRUE, and valid.

Referenced by SCIPcount().

◆ CUTOFF_CONSTRAINT() [1/2]

CUTOFF_CONSTRAINT ( addBinaryCons )
static

creates and adds a constraints which cuts off the current solution from the feasibility region in the case there are only binary variables

Definition at line 460 of file cons_countsols.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPcreateConsSetcover(), SCIPfreeBufferArray, SCIPgetNegatedVar(), SCIPgetSolVal(), SCIPisFeasIntegral(), SCIPreleaseCons(), SCIPvarIsBinary(), sol, TRUE, var, and vars.

◆ CUTOFF_CONSTRAINT() [2/2]

CUTOFF_CONSTRAINT ( addIntegerCons )
static

creates and adds a bound disjunction constraints which cuts off the current solution from the feasibility region; if only binary variables are involved, then a set covering constraint is created which is a special case of a bound disjunction constraint

Definition at line 518 of file cons_countsols.c.

References assert(), FALSE, nbinvars, NULL, nvars, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPallocBufferArray, SCIPcreateConsBounddisjunction(), SCIPcreateConsSetcover(), SCIPfreeBufferArray, SCIPgetNegatedVar(), SCIPgetSolVal(), SCIPisFeasEQ(), SCIPisFeasIntegral(), SCIPreleaseCons(), SCIPvarGetLbLocal(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), sol, TRUE, var, and vars.

◆ collectSolution()

SCIP_RETCODE collectSolution ( SCIP * scip,
SCIP_CONSHDLRDATA * conshdlrdata,
SCIP_SOL * sol )
static

collect given solution or local domains as sparse solution

Parameters
scipSCIP data structure
conshdlrdataconstraint handler data
solsolution, or NULL if local domains

Definition at line 649 of file cons_countsols.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_CALL_FINALLY, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIPallocMemoryArray, SCIPconvertRealToLongint(), SCIPdebugMsg, SCIPgetSolVal(), SCIPreallocMemoryArray, SCIPsparseSolCreate(), SCIPsparseSolFree(), SCIPsparseSolGetLbs(), SCIPsparseSolGetUbs(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), sol, and var.

Referenced by checkSolution(), and countSparseSol().

◆ countSparseSol()

SCIP_RETCODE countSparseSol ( SCIP * scip,
SCIP_SOL * sol,
SCIP_Bool feasible,
SCIP_CONSHDLRDATA * conshdlrdata,
SCIP_RESULT * result )
static

counts the number of solutions represented by sol

Note
aggregations and multi aggregations: we do not have to care about these things since we count solutions from the transformed problem and therefore, SCIP does it for us
Parameters
scipSCIP data structure
solsolution
feasibleis solution feasible?
conshdlrdataconstraint handler data
resultpointer to store the result of the checking process

Definition at line 727 of file cons_countsols.c.

References addInt(), addOne(), allocInt(), assert(), collectSolution(), freeInt(), multInt(), NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_INFEASIBLE, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPdebugMsg, SCIPgetNBinVars(), SCIPgetNPseudoBranchCands(), SCIPgetNVars(), SCIPgetPseudoBranchCands(), SCIPisFeasIntegral(), SCIPisFeasLT(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetOrigvarSum(), SCIPvarGetType(), SCIPvarGetUbLocal(), setInt(), setPowerOfTwo(), sol, var, and vars.

Referenced by checkSolution().

◆ checkLogicor()

SCIP_RETCODE checkLogicor ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
int nconss,
SCIP_Bool * satisfied )
static

checks if the new solution is feasible for the logicor constraints

Note
the logicor constraints are not fully propagated; therefore, we have to check them by hand if they are satisfied or not; if a constraint is satisfied we delete it locally from the branch and bound tree.
Parameters
scipSCIP data structure
conshdlrconstraint handler
nconssnumber of enabled constraints
satisfiedpointer to store if the logicor constraints a satisfied

Definition at line 844 of file cons_countsols.c.

References assert(), c, FALSE, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetName(), SCIPconshdlrGetConss(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNEnabledConss(), SCIPconsIsEnabled(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelConsLocal(), SCIPgetNVarsLogicor(), SCIPgetVarsLogicor(), SCIPvarGetLbLocal(), SCIPvarIsBinary(), TRUE, varIsUnfixedLocal(), and vars.

Referenced by checkFeasSubtree().

◆ checkKnapsack()

SCIP_RETCODE checkKnapsack ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
int nconss,
SCIP_Bool * satisfied )
static

checks if the new solution is feasible for the knapsack constraints

Note
the knapsack constraints are not fully propagated; therefore, we have to check them by hand if they are satisfied or not; if a constraint is satisfied we delete it locally from the branch and bound tree.
Parameters
scipSCIP data structure
conshdlrconstraint handler
nconssnumber of enabled constraints
satisfiedpointer to store if the logicor constraints a satisfied

Definition at line 917 of file cons_countsols.c.

References assert(), c, FALSE, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_Real, SCIPconsGetName(), SCIPconshdlrGetConss(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNEnabledConss(), SCIPconsIsEnabled(), SCIPdebug, SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelConsLocal(), SCIPgetCapacityKnapsack(), SCIPgetNVarsKnapsack(), SCIPgetVarsKnapsack(), SCIPgetWeightsKnapsack(), SCIPisFeasLT(), SCIPprintVar(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), TRUE, varIsUnfixedLocal(), and vars.

Referenced by checkFeasSubtree().

◆ checkBounddisjunction()

SCIP_RETCODE checkBounddisjunction ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
int nconss,
SCIP_Bool * satisfied )
static

checks if the new solution is feasible for the bounddisjunction constraints

Note
the bounddisjunction constraints are not fully propagated; therefore, we have to check them by hand if they are satisfied or not; if a constraint is satisfied we delete it locally from the branch and bound tree
Parameters
scipSCIP data structure
conshdlrconstraint handler
nconssnumber of enabled constraints
satisfiedpointer to store if the logicor constraints a satisfied

Definition at line 1012 of file cons_countsols.c.

References assert(), c, FALSE, NULL, nvars, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetName(), SCIPconshdlrGetConss(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNEnabledConss(), SCIPconsIsEnabled(), SCIPdebug, SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelConsLocal(), SCIPgetBoundsBounddisjunction(), SCIPgetBoundtypesBounddisjunction(), SCIPgetNVarsBounddisjunction(), SCIPgetVarsBounddisjunction(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPprintVar(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), TRUE, and vars.

Referenced by checkFeasSubtree().

◆ checkVarbound()

SCIP_RETCODE checkVarbound ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
int nconss,
SCIP_Bool * satisfied )
static

checks if the new solution is feasible for the varbound constraints

Note
the varbound constraints are not fully propagated; therefore, we have to check them by hand if they are satisfied or not; if a constraint is satisfied we delete it locally from the branch and bound tree.
Parameters
scipSCIP data structure
conshdlrconstraint handler
nconssnumber of enabled constraints
satisfiedpointer to store if the logicor constraints a satisfied

Definition at line 1090 of file cons_countsols.c.

References assert(), c, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPconsGetName(), SCIPconshdlrGetConss(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNEnabledConss(), SCIPconsIsEnabled(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelConsLocal(), SCIPgetLhsVarbound(), SCIPgetRhsVarbound(), SCIPgetVarVarbound(), SCIPgetVbdcoefVarbound(), SCIPgetVbdvarVarbound(), SCIPisGE(), SCIPisGT(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetType(), SCIPvarGetUbLocal(), TRUE, and var.

Referenced by checkFeasSubtree().

◆ checkFeasSubtree()

SCIP_RETCODE checkFeasSubtree ( SCIP * scip,
SCIP_SOL * sol,
SCIP_Bool * feasible )
static

check if the current node initializes a non trivial unrestricted subtree

Parameters
scipSCIP main data structure
solsolution to check
feasiblepointer to store the result of the check

Definition at line 1166 of file cons_countsols.c.

References assert(), checkBounddisjunction(), checkKnapsack(), checkLogicor(), checkVarbound(), CONSHDLR_NAME, FALSE, h, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNEnabledConss(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPgetConshdlrs(), SCIPgetNConshdlrs(), SCIPgetNPseudoBranchCands(), sol, and TRUE.

Referenced by checkSolution().

◆ checkSolution()

SCIP_RETCODE checkSolution ( SCIP * scip,
SCIP_SOL * sol,
SCIP_CONSHDLRDATA * conshdlrdata,
SCIP_RESULT * result )
static

◆ includeConshdlrCountsols()

◆ SCIP_DECL_CONSHDLRCOPY()

SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyCountsols )
static

copy method for constraint handler plugins (called when SCIP copies plugins)

Definition at line 1382 of file cons_countsols.c.

References assert(), CONSHDLR_NAME, FALSE, includeConshdlrCountsols(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), TRUE, and valid.

◆ SCIP_DECL_CONSFREE()

SCIP_DECL_CONSFREE ( consFreeCountsols )
static

destructor of constraint handler to free constraint handler data (called when SCIP is exiting)

Definition at line 1411 of file cons_countsols.c.

References assert(), CONSHDLR_NAME, freeInt(), NULL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPconshdlrSetData(), and SCIPfreeBlockMemory.

◆ SCIP_DECL_CONSINIT()

◆ SCIP_DECL_CONSEXIT()

SCIP_DECL_CONSEXIT ( consExitCountsols )
static

◆ SCIP_DECL_CONSINITSOL()

SCIP_DECL_CONSINITSOL ( consInitsolCountsols )
static

solving process initialization method of constraint handler (called when branch and bound process is about to begin)

This method is called when the presolving was finished and the branch and bound process is about to begin. The constraint handler may use this call to initialize its branch and bound specific data.

Definition at line 1582 of file cons_countsols.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPblkmem(), SCIPcaptureVar(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPduplicateBlockMemoryArray, SCIPgetNBinVars(), SCIPgetNContVars(), SCIPgetNVars(), SCIPgetVars(), SCIPhashmapCreate(), SCIPhashmapInsertInt(), SCIPvarGetOrigvarSum(), SCIPvarGetProbindex(), SCIPvarGetType(), and vars.

◆ SCIP_DECL_CONSEXITSOL()

SCIP_DECL_CONSEXITSOL ( consExitsolCountsols )
static

solving process deinitialization method of constraint handler (called before branch and bound process data is freed)

Definition at line 1667 of file cons_countsols.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPABORT, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIP_DECL_CONSENFOLP()

SCIP_DECL_CONSENFOLP ( consEnfolpCountsols )
static

constraint enforcing method of constraint handler for LP solutions

Definition at line 1691 of file cons_countsols.c.

References assert(), checkSolution(), NULL, result, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPcreateLPSol(), SCIPdebugMsg, SCIPfreeSol(), and sol.

◆ SCIP_DECL_CONSENFORELAX()

SCIP_DECL_CONSENFORELAX ( consEnforelaxCountsols )
static

constraint enforcing method of constraint handler for relaxation solutions

Definition at line 1728 of file cons_countsols.c.

References assert(), checkSolution(), NULL, result, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPdebugMsg, and sol.

◆ SCIP_DECL_CONSENFOPS()

SCIP_DECL_CONSENFOPS ( consEnfopsCountsols )
static

constraint enforcing method of constraint handler for pseudo solutions

Definition at line 1760 of file cons_countsols.c.

References assert(), checkSolution(), NULL, result, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPcreatePseudoSol(), SCIPdebugMsg, SCIPfreeSol(), and sol.

◆ SCIP_DECL_CONSCHECK()

SCIP_DECL_CONSCHECK ( consCheckCountsols )
static

feasibility check method of constraint handler for integral solutions

Definition at line 1798 of file cons_countsols.c.

References assert(), checkSolution(), NULL, result, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPdebugMsg, SCIPgetNVars(), SCIPwarningMessage(), sol, and TRUE.

◆ SCIP_DECL_CONSLOCK()

SCIP_DECL_CONSLOCK ( consLockCountsols )
static

variable rounding lock method of constraint handler

Definition at line 1831 of file cons_countsols.c.

References SCIP_OKAY.

◆ SCIP_DECL_SORTPTRCOMP()

SCIP_DECL_SORTPTRCOMP ( varCompProbindex )
static

comparison method for sorting variables by non-decreasing w.r.t. problem index

Definition at line 2144 of file cons_countsols.c.

References assert(), NULL, and SCIPvarGetProbindex().

◆ writeExpandedSolutions()

SCIP_RETCODE writeExpandedSolutions ( SCIP * scip,
FILE * file,
SCIP_VAR ** allvars,
int nallvars,
SCIP_VAR ** activevars,
int nactivevars,
SCIP_HASHMAP * hashmap,
SCIP_SPARSESOL ** sols,
int nsols )
static

expands the sparse solutions and writes them to the file

Parameters
scipSCIP data structure
filefile handler
allvarsSCIP variables
nallvarsnumber of all variables
activevarsSCIP variables
nactivevarsnumber of active variables
hashmaphashmap from active solution variable to the position in the active variables array
solssparse solutions to expands and write
nsolsnumber of sparse solutions

Definition at line 2168 of file cons_countsols.c.

References assert(), i, NULL, nvars, objval, scalars, SCIP_CALL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetProbvarLinearSum(), SCIPhashmapExists(), SCIPhashmapGetImageInt(), SCIPinfoMessage(), SCIPisIntegral(), SCIPretransformObj(), SCIPsparseSolGetFirstSol(), SCIPsparseSolGetNextSol(), SCIPsparseSolGetNVars(), SCIPvarGetObj(), sol, TRUE, and vars.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ createCountDialog()

SCIP_RETCODE createCountDialog ( SCIP * scip)
static

create the interactive shell dialogs for the counting process

Parameters
scipSCIP data structure

Definition at line 2483 of file cons_countsols.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPaddDialogEntry(), SCIPdialogFindEntry(), SCIPdialogHasEntry(), SCIPerrorMessage, SCIPgetRootDialog(), SCIPincludeDialog(), and SCIPreleaseDialog().

Referenced by includeConshdlrCountsols().

◆ SCIP_DECL_DISPOUTPUT() [1/2]

SCIP_DECL_DISPOUTPUT ( dispOutputSols )
static

◆ SCIP_DECL_DISPOUTPUT() [2/2]

SCIP_DECL_DISPOUTPUT ( dispOutputFeasSubtrees )
static