3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-24 16:02:33 +00:00

lp: add optional efficacy filter for Gomory cuts

Add lp.gomory_cut_efficacy_filter (default false) and
lp.gomory_cut_efficacy_threshold (default 0.01). When enabled, a
generated Gomory cut t >= k is discarded if its efficacy
(k - t(x*))/||t||_2, the normalized distance from the LP solution to the
cut hyperplane, is below the threshold. Comparison is done on squared
quantities to stay rational and deterministic.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Lev Nachmanson 2026-06-25 14:51:32 -07:00
parent 57fb719007
commit 8d1dde407e
5 changed files with 41 additions and 1 deletions

View file

@ -270,9 +270,13 @@ private:
bool m_random_hammers = true;
bool m_lcube = true;
unsigned m_lcube_flips = 16;
bool m_gomory_cut_efficacy_filter = false;
double m_gomory_cut_efficacy_threshold = 0.01;
public:
bool lcube() const { return m_lcube; }
unsigned lcube_flips() const { return m_lcube_flips; }
bool gomory_cut_efficacy_filter() const { return m_gomory_cut_efficacy_filter; }
double gomory_cut_efficacy_threshold() const { return m_gomory_cut_efficacy_threshold; }
unsigned dio_calls_period() const { return m_dio_calls_period; }
unsigned & dio_calls_period() { return m_dio_calls_period; }
unsigned dio_calls_period_decrease() const { return m_dio_calls_period_decrease; }