17 const std::string mpdDir );
53 CglClique(
bool setPacking =
false,
bool justOriginalRows =
false);
242 const int *current_indices,
243 const int *current_degrees,
244 const double *current_values);
247 int *current_indices,
int *current_degrees,
248 double *current_values);
263 const std::string mpdDir);
int edgenum
of edges in the graph
void selectFractionals(const OsiSolverInterface &si)
Scan through the variables and select those that are at a fractional level.
void scl_delete_node(const int del_ind, int ¤t_nodenum, int *current_indices, int *current_degrees, double *current_values)
void selectRowCliques(const OsiSolverInterface &si, int numOriginalRows)
OsiSolverInterface * fakeSolver_
fake solver to use
double * all_edgecost
The array of the costs of the edges going to the neighbors.
int degree
degree of the node
double val
the fractional value of the variable corresponding to this node
int * cl_del_indices
An array of nodes discarded from the candidate list.
Information about where the cut generator is invoked from.
int greedy_maximal_clique(OsiCuts &cs)
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
Generate cuts for the model data contained in si.
double getMinViolation() const
bool rcl_report_result
whether to give a detailed statistics on the row clique method
Collections of row cuts and column cuts.
void deleteFractionalGraph()
int nodenum
of nodes = # of fractional values in the LP solution
int cl_length
The length of cl_indices.
void setStarCliqueNextNodeMethod(scl_next_node_method method)
void find_scl(OsiCuts &cs)
virtual std::string generateCpp(FILE *fp)
Create C++ lines to get to current state.
Abstract Base Class for describing an interface to a solver.
void deleteSetPackingSubMatrix()
CglProbing * probing_
Probing object.
int maxNumber_
Maximum number of binaries for looking at all.
void setStarCliqueCandidateLengthThreshold(int maxlen)
int cl_perm_length
The length of cl_perm_indices.
void setMaxNumber(int value)
Maximum number of binaries for looking at all.
int * cl_indices
List of indices that should be considered for extending the ones listed in cl_perm_indices.
const int * cl_perm_indices
variables/arrays that are used across many methods
Cut Generator Base Class.
A graph corresponding to a fractional solution of an LP.
CglFakeClique & operator=(const CglFakeClique &rhs)
Assignment operator.
CglFakeClique(const CglFakeClique &rhs)
Copy constructor.
void CglCliqueUnitTest(const OsiSolverInterface *siP, const std::string mpdDir)
A function that tests the methods in the CglClique class.
scl_next_node_method
possible choices for selecting the next node in the star clique search
void recordClique(const int len, int *indices, OsiCuts &cs)
void setRowCliqueReport(bool yesno=true)
int sp_numrows
pieces of the set packing part of the solverinterface
bool scl_report_result
whether to give a detailed statistics on the star clique method
double density
density= edgenum/(nodenum choose 2)
virtual ~CglClique()
Destructor.
double * edgecosts
1-x_i-x_j, needed for odd holes, in the same order as the adj list, pointer into all_edgecost ...
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
Generate cuts for the model data contained in si.
int * nbrs
pointer into all_nbr
int * all_nbr
The array of all the neighbors.
bool do_star_clique
whether to do the star clique algorithm or not.
virtual CglCutGenerator * clone() const
Clone.
CglClique(const CglClique &rhs)
Copy constructor.
void setStarCliqueReport(bool yesno=true)
friend void CglCliqueUnitTest(const OsiSolverInterface *siP, const std::string mpdDir)
A function that tests the methods in the CglClique class.
int cl_del_length
The length of cl_del_indices.
scl_next_node_method scl_next_node_rule
How the next node to be added to the star clique should be selected.
frac_graph fgraph
the intersection graph corresponding to the set packing problem
A node of the fractional graph.
void selectFractionalBinaries(const OsiSolverInterface &si)
Scan through the variables and select those that are binary and are at a fractional level...
void setDoRowClique(bool yesno=true)
bool do_row_clique
data for the star clique algorithm
void createSetPackingSubMatrix(const OsiSolverInterface &si)
CglClique & operator=(const CglClique &rhs)
Assignment operator.
void find_rcl(OsiCuts &cs)
void setDoStarClique(bool yesno=true)
void setRowCliqueCandidateLengthThreshold(int maxlen)
void setMinViolation(double minviol)
virtual CglCutGenerator * clone() const
Clone.
fnode * nodes
The array of the nodes in the graph.
bool * node_node
the node-node incidence matrix of the intersection graph.
void createFractionalGraph()
int rcl_candidate_length_threshold
In the row clique method the maximal length of the candidate list (those nodes that can extend the ro...
double petol
The primal tolerance in the solverinterface.
bool setPacking_
An indicator showing whether the whole matrix in the solverinterface is a set packing problem or not...
void considerRows(const int numRows, const int *rowInd)
virtual ~CglFakeClique()
Destructor.
int enumerate_maximal_cliques(int &pos, bool *scl_label, OsiCuts &cs)
int scl_candidate_length_threshold
In the star clique method the maximal length of the candidate list (those nodes that are in a star...
void assignSolver(OsiSolverInterface *fakeSolver)
Assign solver (generator takes over ownership)
int scl_choose_next_node(const int current_nodenum, const int *current_indices, const int *current_degrees, const double *current_values)
Probing Cut Generator Class.
bool justOriginalRows_
True if just look at original rows.