#include <algorithm>
#include "CoinHelperFunctions.hpp"
#include "BCP_math.hpp"
#include "BCP_mempool.hpp"
#include "BCP_cut.hpp"
Include dependency graph for MC_cut.hpp:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Classes | |
class | MC_cycle_cut |
class | MC_explicit_dense_cut |
Enumerations | |
enum | MC_cut_t { MC_cut_t__cycle, MC_cut_t__explicit_dense } |
enum | MC_EdgeOrdering { MC_MstEdgeOrderingPreferZero, MC_MstEdgeOrderingPreferOne, MC_MstEdgeOrderingPreferExtreme } |
Functions | |
bool | MC_cycle_cut_less (const BCP_cut *bc0, const BCP_cut *bc1) |
bool | MC_cycle_cut_equal (const BCP_cut *bc0, const BCP_cut *bc1) |
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) |
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) |
void | MC_kruskal (const MC_problem &mc, const int *edgeorder, const double *x, int *nodesign, int *edges_in_tree) |
void | MC_kruskal (const MC_problem &mc, const int *edgeorder, const double *x, int *nodesign, int *parentnode, int *parentedge) |
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_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) |
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) |
enum MC_cut_t |
enum MC_EdgeOrdering |
MC_MstEdgeOrderingPreferZero | |
MC_MstEdgeOrderingPreferOne | |
MC_MstEdgeOrderingPreferExtreme |
Definition at line 26 of file MC_cut.hpp.
Definition at line 107 of file MC_cut.hpp.
References MC_cycle_cut::cycle_len, MC_cycle_cut::edges, and MC_cycle_cut::pos_edges.
Referenced by MC_tm::create_root(), and MC_cycle_row_pair_comp().
Definition at line 122 of file MC_cut.hpp.
References MC_cycle_cut::cycle_len, MC_cycle_cut::edges, and MC_cycle_cut::pos_edges.
Referenced by MC_lp::compare_cuts(), MC_tm::create_root(), and MC_lp::unique_cycle_cuts().
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 | |||
) |
Definition at line 13 of file MC_mst_heur.cpp.
References BCP_vec< T >::begin(), m, MC_kruskal(), MC_MstEdgeOrderingPreferExtreme, MC_MstEdgeOrderingPreferOne, MC_MstEdgeOrderingPreferZero, n, MC_problem::num_edges, and MC_problem::num_nodes.
Referenced by MC_lp::mc_generate_heuristic_solution().
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 | |||
) |
Definition at line 152 of file MC_cutgen.cpp.
References BCP_vec< T >::begin(), BCP_vec< T >::end(), m, MC_cuts_from_mst(), MC_kruskal(), MC_MstEdgeOrderingPreferExtreme, MC_MstEdgeOrderingPreferOne, MC_MstEdgeOrderingPreferZero, n, MC_problem::num_edges, MC_problem::num_nodes, BCP_vec< T >::reserve(), BCP_vec< T >::size(), and BCP_vec< T >::unchecked_push_back().
Referenced by MC_tm::create_root(), MC_lp::generate_mst_cuts(), and MC_lp::test_feasibility().
void MC_kruskal | ( | const MC_problem & | mc, | |
const int * | edgeorder, | |||
const double * | x, | |||
int * | nodesign, | |||
int * | edges_in_tree | |||
) |
Definition at line 33 of file MC_kruskal.cpp.
Referenced by MC_kruskal(), MC_mst_cutgen(), and MC_mst_heur().
void MC_kruskal | ( | const MC_problem & | mc, | |
const int * | edgeorder, | |||
const double * | x, | |||
int * | nodesign, | |||
int * | parentnode, | |||
int * | parentedge | |||
) |
Definition at line 129 of file MC_kruskal.cpp.
References MC_problem::edges, MC_graph_edge::head, k, MC_kruskal(), MC_label_neighbors(), n, MC_problem::num_nodes, and MC_graph_edge::tail.
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 | |||
) |
Definition at line 89 of file MC_shortest_path_cycle.cpp.
References MC_path_node::adj_list, MC_path_adj_entry::cost, MC_path_node::degree, MC_path_node::distance, distance(), MC_path_node::edge_to_parent, MC_problem::edges, m, MC_create_shortest_path_cut(), MC_find_components(), n, MC_path_adj_entry::neighbor, nt, MC_problem::num_edges, MC_problem::num_nodes, MC_path_adj_entry::orig_edge, MC_path_node::parent, MC_path_node::processed, and BCP_vec< T >::size().
Referenced by MC_lp::generate_sp_cuts().
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 | |||
) |
Definition at line 65 of file MC_ising_cycles.cpp.
References MC_test_ising_four_cycle().
Referenced by MC_tm::create_root(), and MC_lp::generate_cuts_in_lp().
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 | |||
) |
Definition at line 92 of file MC_ising_cycles.cpp.
References BCP_DBL_MAX, and BCP_vec< T >::push_back().
Referenced by MC_tm::create_root(), and MC_lp::generate_cuts_in_lp().