mirror of
https://github.com/Z3Prover/z3
synced 2026-07-25 00:12:34 +00:00
lp: add efficacy-augment Gomory mode (keep fractional cut + diversify by efficacy)
Add lp.gomory_efficacy_augment (default false). Unlike gomory_efficacy_select (which fully replaces fractionality-based row choice), augment keeps one fractionality-selected cut with priority and fills the remaining cut slots with the most efficacious cuts built from gomory_candidate_rows random candidate rows, subject to gomory_cut_efficacy_threshold. This preserves the proven baseline cut while adding a depth-diversified second cut. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
11e95dafeb
commit
c4ac986c42
4 changed files with 41 additions and 16 deletions
|
|
@ -18,6 +18,7 @@ def_module_params(module_name='lp',
|
|||
('gomory_cut_efficacy_filter', BOOL, False, 'discard a generated Gomory cut whose efficacy (distance from the LP solution to the cut hyperplane, normalized by the cut coefficient norm) is below gomory_cut_efficacy_threshold'),
|
||||
('gomory_cut_efficacy_threshold', DOUBLE, 0.01, 'minimal efficacy (normalized violation) required to keep a Gomory cut when gomory_cut_efficacy_filter or gomory_efficacy_select is enabled'),
|
||||
('gomory_efficacy_select', BOOL, False, 'select Gomory cut rows by cut efficacy instead of by how close the basic variable is to an integer: pick gomory_candidate_rows integer-infeasible rows at random, build their cuts, and add the most efficacious ones whose efficacy is at least gomory_cut_efficacy_threshold'),
|
||||
('gomory_candidate_rows', UINT, 3, 'number of integer-infeasible rows sampled at random to build candidate Gomory cuts from when gomory_efficacy_select is enabled'),
|
||||
('gomory_efficacy_augment', BOOL, False, 'keep the standard (fractionality-based) Gomory cut(s) but diversify by efficacy: build the standard cuts plus gomory_candidate_rows random candidate cuts, always add the standard cut(s) first, then fill the remaining slots (up to the requested number of cuts) with the most efficacious remaining cuts whose efficacy is at least gomory_cut_efficacy_threshold'),
|
||||
('gomory_candidate_rows', UINT, 3, 'number of integer-infeasible rows sampled at random to build candidate Gomory cuts from when gomory_efficacy_select or gomory_efficacy_augment is enabled'),
|
||||
))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue