12 const std::string mpdDir );
48 CglClique(
bool setPacking =
false,
bool justOriginalRows =
false);
216 void selectRowCliques(
const OsiSolverInterface& si,
int numOriginalRows)
const;
233 const int *current_indices,
234 const int *current_degrees,
235 const double *current_values)
const;
238 int *current_indices,
int *current_degrees,
239 double *current_values)
const;
245 void recordClique(
const int len,
int* indices, OsiCuts& cs)
const;
254 const std::string mpdDir);
269 generateCuts(
const OsiSolverInterface& si, OsiCuts & cs,
291 CglFakeClique(OsiSolverInterface * solver=NULL,
bool setPacking =
false);
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.
void deleteFractionalGraph() const
bool justOriginalRows_
True if just look at original rows.
double petol
The primal tolerance in the solverinterface.
void createFractionalGraph() const
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.
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.
void selectFractionals(const OsiSolverInterface &si) const
Scan through the variables and select those that are at a fractional level.
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.
bool * node_node
the node-node incidence matrix of the intersection graph.
void recordClique(const int len, int *indices, OsiCuts &cs) const
void deleteSetPackingSubMatrix() const
int * all_nbr
The array of all the neighbors.
void selectFractionalBinaries(const OsiSolverInterface &si) const
Scan through the variables and select those that are binary and are at a fractional level...
void setRowCliqueReport(bool yesno=true)
possible choices for selecting the next node in the star clique search
int * sp_orig_col_ind
possible choices for selecting the next node in the star clique search
void setStarCliqueCandidateLengthThreshold(int maxlen)
possible choices for selecting the next node in the star clique search
int cl_length
The length of cl_indices.
fnode * nodes
The array of the nodes in the graph.
void selectRowCliques(const OsiSolverInterface &si, int numOriginalRows) const
scl_next_node_method scl_next_node_rule
How the next node to be added to the star clique should be selected.
void setStarCliqueReport(bool yesno=true)
possible choices for selecting the next node in the star clique search
void scl_delete_node(const int del_ind, int ¤t_nodenum, int *current_indices, int *current_degrees, double *current_values) const
int scl_choose_next_node(const int current_nodenum, const int *current_indices, const int *current_degrees, const double *current_values) const
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
int enumerate_maximal_cliques(int &pos, bool *scl_label, OsiCuts &cs) const
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...
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const
Generate cuts for the model data contained in si.
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
double val
the fractional value of the variable corresponding to this node
A node of the fractional graph.
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
int sp_numrows
pieces of the set packing part of the solverinterface
Cut Generator Base Class.
void find_rcl(OsiCuts &cs) const
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...
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const
Generate cuts for the model data contained in si.
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 greedy_maximal_clique(OsiCuts &cs) const
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
void find_scl(OsiCuts &cs) const
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 ~CglClique()
Destructor.
void assignSolver(OsiSolverInterface *fakeSolver)
Assign solver (generator takes over ownership)
virtual ~CglFakeClique()
Destructor.
void createSetPackingSubMatrix(const OsiSolverInterface &si) const
double getMinViolation() const
possible choices for selecting the next node in the star clique search
CglClique(const CglClique &rhs)
Copy constructor.
int createNodeNode() const