Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
5691e56
Add half-way-draft of flow-cover-cuts
Opt-Mucca Jul 23, 2025
677c731
Add complete cutgen. Definitely buggy
Opt-Mucca Jul 23, 2025
ad07c98
Further draft of flow cover cuts
Opt-Mucca Jul 25, 2025
bc44a0c
Merge branch 'latest' into flow-cover-cuts
Opt-Mucca Jul 25, 2025
1f3de3a
Add comments. Still need to replace slack
Opt-Mucca Jul 25, 2025
b97863e
First flow cover draft
Opt-Mucca Jul 29, 2025
76b30a4
Unify comment notation. Add tryGenFlowCut
Opt-Mucca Jul 29, 2025
b49d5b5
Correct efficacy calculation
Opt-Mucca Jul 29, 2025
41c8be5
Update to correct efficacy calc
Opt-Mucca Jul 31, 2025
32536dd
Merge branch 'latest' into flow-cover-cuts
Opt-Mucca Aug 4, 2025
74a4c23
Fix bug where local domain change not repr
Opt-Mucca Aug 5, 2025
76a3407
Add more fixes
Opt-Mucca Aug 6, 2025
7327b68
Change when vbcoef is used
Opt-Mucca Aug 7, 2025
d737abd
Add missing vlb / vub check
Opt-Mucca Aug 7, 2025
f8e1982
Add genflowcover param
Opt-Mucca Aug 8, 2025
45df9ca
Allow vbcol to be used mult. times
Opt-Mucca Aug 8, 2025
74aff96
Change when minefficacy used
Opt-Mucca Aug 8, 2025
dd658b5
Correct efficacy calc
Opt-Mucca Aug 11, 2025
c782d75
Correct efficacy again
Opt-Mucca Aug 11, 2025
6188114
Add additional documentation
Opt-Mucca Aug 11, 2025
db6c8ce
Turn off fc for tableau. Add cover > cmir > fc
Opt-Mucca Aug 13, 2025
8a85830
Update comments. Remove unneeded import
Opt-Mucca Aug 13, 2025
3856a5d
Revert cmir change. Fix min eff calc
Opt-Mucca Aug 13, 2025
4d45a72
Correct mineff for conflicts
Opt-Mucca Aug 13, 2025
97c5757
Make formatter happy
Opt-Mucca Aug 13, 2025
376ad64
Merge branch 'latest' into flow-cover-cuts
Opt-Mucca Aug 13, 2025
61d5de2
Fix valgrind
Opt-Mucca Aug 13, 2025
abb145b
Assume integral support / coeffs are false for flow cover
Opt-Mucca Aug 13, 2025
00d6c59
Return min-eff-diff to 10 * feastol
Opt-Mucca Aug 15, 2025
84573f8
Priortise vbs more. Fix some comments
Opt-Mucca Aug 20, 2025
ee6b8cd
Allow vlb / vub to be complemented
Opt-Mucca Aug 22, 2025
e64f692
Fix some cases on incorrect compl.
Opt-Mucca Aug 22, 2025
a5dc18a
Fix error with complementation
Opt-Mucca Aug 22, 2025
3888612
Fix vb validity check
Opt-Mucca Aug 22, 2025
6f4ee6b
Fix error in aggrconstant
Opt-Mucca Aug 23, 2025
ec6d597
Change back way validity of cb was checked
Opt-Mucca Aug 25, 2025
e2069d7
Remove unused contsolval
Opt-Mucca Aug 25, 2025
1b97c0c
Minor performance improvements. More comments
Opt-Mucca Aug 26, 2025
ee761dd
More minor code improvements
Opt-Mucca Aug 26, 2025
3102326
Only run when vb has been used
Opt-Mucca Aug 26, 2025
44f3fae
Remove unusedvb flag. Try fcc for tableau
Opt-Mucca Aug 26, 2025
69f9016
Skip scaling if already scaled. Add comments
Opt-Mucca Aug 27, 2025
abfd94b
Formatting
Opt-Mucca Aug 27, 2025
99a0d65
Reenable scaling at all times
Opt-Mucca Aug 27, 2025
b840f88
Fix tests. Check if already scaled. Add epsilon to knapsack"
Opt-Mucca Aug 28, 2025
4412a3d
Skip lifting if viol does not increase
Opt-Mucca Aug 28, 2025
27c6c2a
undo relaxed lifting. Set binsolval to be fractional for simple case
Opt-Mucca Aug 28, 2025
8b8a3f7
Only generate cuts when pathlen=1
Opt-Mucca Aug 29, 2025
803860d
No longer restrict cut size given lower limits
Opt-Mucca Aug 30, 2025
0283068
Handle cases where global bounds tightened
Opt-Mucca Sep 1, 2025
391cdfa
Make new epsilon. Create lambda function
Opt-Mucca Oct 14, 2025
6d152b0
Merge branch 'latest' into flow-cover-cuts
Opt-Mucca Oct 14, 2025
bf3c9bb
Maintain old solution path
Opt-Mucca Oct 14, 2025
3e0df3c
Add option to enable flow cover cuts
Opt-Mucca Oct 15, 2025
7ca70f0
Add relative min eff. Stricter row size lims
Opt-Mucca Oct 20, 2025
a5cbd8d
Add missing assert. Re-enable cuts for all aggrs
Opt-Mucca Oct 20, 2025
5e2251c
Merge branch 'latest' into flow-cover-cuts
Opt-Mucca Nov 19, 2025
ffdb2a4
Generate flow cover cut only if cmir was successful
Opt-Mucca Nov 19, 2025
c9ee426
Remove two redundant checks / assignments
Opt-Mucca Nov 19, 2025
7e3fbc5
Change eff requirement. Simply logic
Opt-Mucca Nov 25, 2025
af6d8a1
Minimise double operations
Opt-Mucca Jan 30, 2026
c3179d0
Enable flow cover for tableau sepa
Opt-Mucca Jan 30, 2026
8fcffa3
Rework when flow cover is generated
Opt-Mucca Jan 30, 2026
76895dd
Merge latest into branch
Opt-Mucca Jan 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion check/TestCallbacks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ TEST_CASE("highs-callback-mip-interrupt", "[highs_callback]") {
HighsStatus status = highs.run();
REQUIRE(status == HighsStatus::kWarning);
REQUIRE(highs.getModelStatus() == HighsModelStatus::kInterrupt);
REQUIRE(highs.getInfo().objective_function_value > egout_optimal_objective);
REQUIRE(highs.getInfo().objective_function_value >= egout_optimal_objective);

highs.resetGlobalScheduler(true);
}
Expand Down
2 changes: 1 addition & 1 deletion check/TestMipSolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -609,7 +609,7 @@ TEST_CASE("MIP-get-saved-solutions", "[highs_test_mip_solver]") {

TEST_CASE("MIP-objective-target", "[highs_test_mip_solver]") {
const double egout_optimal_objective = 568.1007;
const double egout_objective_target = 610;
const double egout_objective_target = 680;
std::string filename = std::string(HIGHS_DIR) + "/check/instances/egout.mps";
Highs highs;
highs.setOptionValue("output_flag", dev_run);
Expand Down
7 changes: 7 additions & 0 deletions highs/lp_data/HighsOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,7 @@ struct HighsOptionsStruct {
bool mip_heuristic_run_root_reduced_cost;
bool mip_heuristic_run_zi_round;
bool mip_heuristic_run_shifting;
bool mip_cut_flow_cover;
double mip_min_logging_interval;
std::string mip_lp_solver;
std::string mip_ipm_solver;
Expand Down Expand Up @@ -638,6 +639,7 @@ struct HighsOptionsStruct {
mip_heuristic_run_root_reduced_cost(false),
mip_heuristic_run_zi_round(false),
mip_heuristic_run_shifting(false),
mip_cut_flow_cover(false),
mip_min_logging_interval(0.0),
mip_lp_solver(""),
mip_ipm_solver(""),
Expand Down Expand Up @@ -1217,6 +1219,11 @@ class HighsOptions : public HighsOptionsStruct {
&mip_heuristic_run_shifting, false);
records.push_back(record_bool);

record_bool =
new OptionRecordBool("mip_cut_flow_cover", "Enable flow cover cuts",
advanced, &mip_cut_flow_cover, true);
records.push_back(record_bool);

record_bool = new OptionRecordBool(
"mip_allow_cut_separation_at_nodes",
"Whether cut separation at nodes is permitted", advanced,
Expand Down
Loading
Loading