@@ -2501,20 +2501,21 @@ i_t add_cuts(const simplex_solver_settings_t<i_t, f_t>& settings,
25012501}
25022502
25032503template <typename i_t , typename f_t >
2504- void remove_cuts (lp_problem_t <i_t , f_t >& lp,
2505- const simplex_solver_settings_t <i_t , f_t >& settings,
2506- csr_matrix_t <i_t , f_t >& Arow,
2507- std::vector<i_t >& new_slacks,
2508- i_t original_rows,
2509- std::vector<variable_type_t >& var_types,
2510- std::vector<variable_status_t >& vstatus,
2511- std::vector<f_t >& edge_norms,
2512- std::vector<f_t >& x,
2513- std::vector<f_t >& y,
2514- std::vector<f_t >& z,
2515- std::vector<i_t >& basic_list,
2516- std::vector<i_t >& nonbasic_list,
2517- basis_update_mpf_t <i_t , f_t >& basis_update)
2504+ i_t remove_cuts (lp_problem_t <i_t , f_t >& lp,
2505+ const simplex_solver_settings_t <i_t , f_t >& settings,
2506+ f_t start_time,
2507+ csr_matrix_t <i_t , f_t >& Arow,
2508+ std::vector<i_t >& new_slacks,
2509+ i_t original_rows,
2510+ std::vector<variable_type_t >& var_types,
2511+ std::vector<variable_status_t >& vstatus,
2512+ std::vector<f_t >& edge_norms,
2513+ std::vector<f_t >& x,
2514+ std::vector<f_t >& y,
2515+ std::vector<f_t >& z,
2516+ std::vector<i_t >& basic_list,
2517+ std::vector<i_t >& nonbasic_list,
2518+ basis_update_mpf_t <i_t , f_t >& basis_update)
25182519{
25192520 std::vector<i_t > cuts_to_remove;
25202521 cuts_to_remove.reserve (lp.num_rows - original_rows);
@@ -2644,9 +2645,13 @@ void remove_cuts(lp_problem_t<i_t, f_t>& lp,
26442645 lp.A .col_start [lp.A .n ]);
26452646
26462647 basis_update.resize (lp.num_rows );
2647- basis_update.refactor_basis (
2648- lp.A , settings, lp.lower , lp.upper , basic_list, nonbasic_list, vstatus);
2648+ i_t refactor_status = basis_update.refactor_basis (
2649+ lp.A , settings, lp.lower , lp.upper , start_time, basic_list, nonbasic_list, vstatus);
2650+ if (refactor_status == CONCURRENT_HALT_RETURN ) { return CONCURRENT_HALT_RETURN ; }
2651+ if (refactor_status == TIME_LIMIT_RETURN ) { return TIME_LIMIT_RETURN ; }
26492652 }
2653+
2654+ return 0 ;
26502655}
26512656
26522657template <typename i_t , typename f_t >
@@ -2793,20 +2798,21 @@ template int add_cuts(const simplex_solver_settings_t<int, double>& settings,
27932798 std::vector<variable_status_t >& vstatus,
27942799 std::vector<double >& edge_norms);
27952800
2796- template void remove_cuts<int , double >(lp_problem_t <int , double >& lp,
2797- const simplex_solver_settings_t <int , double >& settings,
2798- csr_matrix_t <int , double >& Arow,
2799- std::vector<int >& new_slacks,
2800- int original_rows,
2801- std::vector<variable_type_t >& var_types,
2802- std::vector<variable_status_t >& vstatus,
2803- std::vector<double >& edge_norms,
2804- std::vector<double >& x,
2805- std::vector<double >& y,
2806- std::vector<double >& z,
2807- std::vector<int >& basic_list,
2808- std::vector<int >& nonbasic_list,
2809- basis_update_mpf_t <int , double >& basis_update);
2801+ template int remove_cuts<int , double >(lp_problem_t <int , double >& lp,
2802+ const simplex_solver_settings_t <int , double >& settings,
2803+ double start_time,
2804+ csr_matrix_t <int , double >& Arow,
2805+ std::vector<int >& new_slacks,
2806+ int original_rows,
2807+ std::vector<variable_type_t >& var_types,
2808+ std::vector<variable_status_t >& vstatus,
2809+ std::vector<double >& edge_norms,
2810+ std::vector<double >& x,
2811+ std::vector<double >& y,
2812+ std::vector<double >& z,
2813+ std::vector<int >& basic_list,
2814+ std::vector<int >& nonbasic_list,
2815+ basis_update_mpf_t <int , double >& basis_update);
28102816
28112817template void read_saved_solution_for_cut_verification<int , double >(
28122818 const lp_problem_t <int , double >& lp,
0 commit comments