41 static inline void *
operator new(
size_t size) {
44 static inline void operator delete(
void *p,
size_t size) {
78 static inline void *
operator new(
size_t size) {
81 static inline void operator delete(
void *p,
size_t size) {
90 const double * elements) :
134 const double alpha,
const double beta,
136 const int heurswitchround,
137 const bool do_edge_switch_heur,
const int struct_switch_heur);
143 const double alpha,
const double beta,
145 const int heurswitchround,
146 const bool do_edge_switch_heur,
const int struct_switch_heur,
147 const double minviol,
const int maxnewcuts,
154 int * nodesign,
int * edges_in_tree);
160 int * nodesign,
int * parentnode,
int * parentedge);
166 const bool generate_all_cuts,
167 const double minviol,
175 const double* x,
const double minviol,
180 const double* x,
const double minviol,
void MC_test_ising_four_cycles(const int n, const int *cycles, const double *x, const double minviol, BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_row * > &rows)
MC_cycle_cut(const int *ei, const int pos, const int len)
bool MC_cycle_cut_equal(const BCP_cut *bc0, const BCP_cut *bc1)
Abstract base class that defines members common to all types of cuts.
MC_explicit_dense_cut(const MC_explicit_dense_cut &)
void CoinDisjointCopyN(register const T *from, const int size, register T *to)
This helper function copies an array to another location.
This is the class from which the user should derive her own algorithmic cuts.
double ub() const
Return the upper bound on the cut.
MC_solution * MC_mst_cutgen(const MC_problem &mc, const double *x, const double *w, const double alpha, const double beta, const MC_EdgeOrdering edge_ordering, const int heurswitchround, const bool do_edge_switch_heur, const int struct_switch_heur, const double minviol, const int maxnewcuts, BCP_vec< BCP_cut * > &new_cuts, BCP_vec< BCP_row * > &new_rows)
MC_explicit_dense_cut(const double ub, const int num, const double *elements)
void pack(BCP_buffer &buf) const
void free(void *p, size_t n)
static BCP_MemPool memPool
void pack(BCP_buffer &buf) const
static BCP_MemPool memPool
MC_cycle_cut(const MC_cycle_cut &)
MC_cycle_cut & operator=(const MC_cycle_cut &)
This class describes the message buffer used for all processes of BCP.
void MC_test_ising_triangles(const int n, const int *triangles, const double *x, const double minviol, BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_row * > &rows)
bool MC_cycle_cut_less(const BCP_cut *bc0, const BCP_cut *bc1)
MC_explicit_dense_cut & operator=(const MC_explicit_dense_cut &)
void MC_generate_shortest_path_cycles(const MC_problem &mc, const double *x, const bool generate_all_cuts, const double minviol, BCP_vec< BCP_cut * > &new_cuts, BCP_vec< BCP_row * > &new_rows)
void MC_kruskal(const MC_problem &mc, const int *edgeorder, const double *x, int *nodesign, int *edges_in_tree)
MC_solution * MC_mst_heur(const MC_problem &mc, const double *x, const double *w, const double alpha, const double beta, const MC_EdgeOrdering edge_ordering, const int heurswitchround, const bool do_edge_switch_heur, const int struct_switch_heur)
This class holds a row in a compressed form.