mirror of
https://github.com/Z3Prover/z3
synced 2026-07-16 20:15:43 +00:00
lp: add best-of-N efficacy-based Gomory row selection
Add lp.gomory_efficacy_select (default false) and lp.gomory_candidate_rows (default 3). When enabled, Gomory cut rows are no longer chosen by how close the basic variable is to an integer. Instead, gomory_candidate_rows integer-infeasible GMI-clean rows are sampled uniformly at random, a cut is built for each, and the most efficacious cuts whose efficacy (k - t(x*))/||t||_2 is at least gomory_cut_efficacy_threshold are added (up to num_cuts of them, best first). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
8d1dde407e
commit
11e95dafeb
5 changed files with 81 additions and 14 deletions
|
|
@ -50,6 +50,8 @@ void lp::lp_settings::updt_params(params_ref const& _p) {
|
|||
m_lcube_flips = lp_p.lcube_flips();
|
||||
m_gomory_cut_efficacy_filter = lp_p.gomory_cut_efficacy_filter();
|
||||
m_gomory_cut_efficacy_threshold = lp_p.gomory_cut_efficacy_threshold();
|
||||
m_gomory_efficacy_select = lp_p.gomory_efficacy_select();
|
||||
m_gomory_candidate_rows = lp_p.gomory_candidate_rows();
|
||||
unsigned hammer_period = lp_p.int_hammer_period();
|
||||
SASSERT(hammer_period != 0);
|
||||
m_int_find_cube_period = hammer_period;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue