3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-20 22:15:49 +00:00
Commit graph

15 commits

Author SHA1 Message Date
Lev Nachmanson
4076820fe7 lp: add cross-round orthogonality for efficacy Gomory cut selection
Add lp.gomory_cut_orthogonality (default false), lp.gomory_recent_cuts
(default 5) and lp.gomory_parallelism_threshold (default 0.9). When efficacy
selection (select or augment) is active and orthogonality is enabled, a
non-priority candidate cut is skipped when its parallelism
|a.b|/(||a|| ||b||) with an already-selected cut this round, or with one of the
last gomory_recent_cuts cuts added in previous rounds (kept in
int_solver::m_recent_cuts), exceeds gomory_parallelism_threshold. Adds
lar_term::find_coeff and gomory::cut_parallelism.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 17:23:04 -07:00
Lev Nachmanson
11e95dafeb 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>
2026-06-25 15:24:23 -07:00
Lev Nachmanson
8d1dde407e 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>
2026-06-25 14:51:32 -07:00
Lev Nachmanson
d8df203622 remove an unused declaration
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2024-01-13 19:11:17 -10:00
Lev Nachmanson
e2fb4fbd38 fix dependencies for Gomory polarity
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2024-01-13 19:01:21 -10:00
Lev Nachmanson
19f3ad46ce fix the build 2023-12-20 14:14:01 -10:00
Lev Nachmanson
4317d134bf refactor: move gomory functionaly from int_solver to gomory 2023-12-20 12:56:20 -10:00
Lev Nachmanson
fc23a498c4 a simple version of choosing a column for gomory cut 2023-12-04 15:06:50 -10:00
Lev Nachmanson
e091a2e775 remove the line with clang-format off 2023-07-10 12:05:59 -07:00
Lev Nachmanson
f5d9ffaca1 clean up and add clang-format off
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-06-30 11:57:42 -07:00
Nuno Lopes
f1e0d5dc8a remove a hundred implicit constructors/destructors 2021-05-23 14:25:01 +01:00
Nikolaj Bjorner
9451dd9a74 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-02-09 09:00:34 -08:00
Nikolaj Bjorner
c12c9a75e6 move all gomory functionality into gomory class
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-02-08 15:03:58 -08:00
Nikolaj Bjorner
d44855f262 move all gomory functionality into gomory class
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-02-08 13:02:19 -08:00
Lev Nachmanson
33cbd29ed0 mv util/lp to math/lp
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2020-01-28 10:04:21 -08:00
Renamed from src/util/lp/gomory.h (Browse further)