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