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 &)
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)
void CoinDisjointCopyN(const T *from, const CoinBigIndex size, T *to)
This helper function copies an array to another location.
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.