Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cpp/include/cuopt/linear_programming/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
#define CUOPT_MIP_MIXED_INTEGER_ROUNDING_CUTS "mip_mixed_integer_rounding_cuts"
#define CUOPT_MIP_MIXED_INTEGER_GOMORY_CUTS "mip_mixed_integer_gomory_cuts"
#define CUOPT_MIP_KNAPSACK_CUTS "mip_knapsack_cuts"
#define CUOPT_MIP_IMPLIED_BOUND_CUTS "mip_implied_bound_cuts"
#define CUOPT_MIP_CLIQUE_CUTS "mip_clique_cuts"
#define CUOPT_MIP_STRONG_CHVATAL_GOMORY_CUTS "mip_strong_chvatal_gomory_cuts"
#define CUOPT_MIP_REDUCED_COST_STRENGTHENING "mip_reduced_cost_strengthening"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ class mip_solver_settings_t {
i_t mixed_integer_gomory_cuts = -1;
i_t knapsack_cuts = -1;
i_t clique_cuts = -1;
i_t implied_bound_cuts = -1;
i_t strong_chvatal_gomory_cuts = -1;
i_t reduced_cost_strengthening = -1;
f_t cut_change_threshold = -1.0;
Expand Down
11 changes: 4 additions & 7 deletions cpp/src/branch_and_bound/branch_and_bound.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,9 +243,11 @@ branch_and_bound_t<i_t, f_t>::branch_and_bound_t(
const user_problem_t<i_t, f_t>& user_problem,
const simplex_solver_settings_t<i_t, f_t>& solver_settings,
f_t start_time,
const probing_implied_bound_t<i_t, f_t>& probing_implied_bound,
std::shared_ptr<detail::clique_table_t<i_t, f_t>> clique_table)
: original_problem_(user_problem),
settings_(solver_settings),
probing_implied_bound_(probing_implied_bound),
clique_table_(std::move(clique_table)),
original_lp_(user_problem.handle_ptr, 1, 1, 1),
Arow_(1, 1, 0),
Expand Down Expand Up @@ -724,12 +726,6 @@ void branch_and_bound_t<i_t, f_t>::set_final_solution(mip_solution_t<i_t, f_t>&
obj,
is_maximization ? "Upper" : "Lower",
user_bound);
{
const f_t root_lp_obj = root_lp_current_lower_bound_.load();
if (std::isfinite(root_lp_obj)) {
settings_.log.printf("Root LP dual objective (last): %.16e\n", root_lp_obj);
}
}

if (gap <= settings_.absolute_mip_gap_tol || gap_rel <= settings_.relative_mip_gap_tol) {
solver_status_ = mip_status_t::OPTIMAL;
Expand Down Expand Up @@ -2150,6 +2146,7 @@ mip_status_t branch_and_bound_t<i_t, f_t>::solve(mip_solution_t<i_t, f_t>& solut
new_slacks_,
var_types_,
original_problem_,
probing_implied_bound_,
clique_table_,
&clique_table_future_,
&signal_extend_cliques_);
Expand Down Expand Up @@ -2220,7 +2217,7 @@ mip_status_t branch_and_bound_t<i_t, f_t>::solve(mip_solution_t<i_t, f_t>& solut
i_t num_cuts = cut_pool.get_best_cuts(cuts_to_add, cut_rhs, cut_types);
if (num_cuts == 0) { break; }
cut_info.record_cut_types(cut_types);
#ifdef PRINT_CUT_POOL_TYPES
#if 1
cut_pool.print_cutpool_types();
print_cut_types("In LP ", cut_types, settings_);
printf("Cut pool size: %d\n", cut_pool.pool_size());
Expand Down
2 changes: 2 additions & 0 deletions cpp/src/branch_and_bound/branch_and_bound.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class branch_and_bound_t {
branch_and_bound_t(const user_problem_t<i_t, f_t>& user_problem,
const simplex_solver_settings_t<i_t, f_t>& solver_settings,
f_t start_time,
const probing_implied_bound_t<i_t, f_t>& probing_implied_bound,
std::shared_ptr<detail::clique_table_t<i_t, f_t>> clique_table = nullptr);

// Set an initial guess based on the user_problem. This should be called before solve.
Expand Down Expand Up @@ -148,6 +149,7 @@ class branch_and_bound_t {
private:
const user_problem_t<i_t, f_t>& original_problem_;
const simplex_solver_settings_t<i_t, f_t> settings_;
const probing_implied_bound_t<i_t, f_t>& probing_implied_bound_;
std::shared_ptr<detail::clique_table_t<i_t, f_t>> clique_table_;
std::future<std::shared_ptr<detail::clique_table_t<i_t, f_t>>> clique_table_future_;
std::atomic<bool> signal_extend_cliques_{false};
Expand Down
Loading