From 821a4e71d446ba2193dea6b544a759945c7432bd Mon Sep 17 00:00:00 2001 From: Florian Fontan Date: Fri, 17 Apr 2026 23:55:13 +0200 Subject: [PATCH 1/2] Update build.yml --- .github/workflows/build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba4088f..8073412 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,12 @@ name: Build -on: [push] +on: + push: + branches: + - main + pull_request: + branches: + - main jobs: From 738b9e259248561dfc04168f792b286d27e613ef Mon Sep 17 00:00:00 2001 From: Florian Fontan Date: Fri, 17 Apr 2026 23:55:36 +0200 Subject: [PATCH 2/2] Update mathoptsolverscmake dependency --- extern/CMakeLists.txt | 2 +- .../algorithms/milp.hpp | 2 +- src/algorithms/CMakeLists.txt | 2 +- src/algorithms/milp.cpp | 18 ++++++++++++++---- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 47467e4..56316da 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -43,7 +43,7 @@ endif() FetchContent_Declare( mathoptsolverscmake GIT_REPOSITORY https://github.com/fontanf/mathoptsolverscmake.git - GIT_TAG 7a2b2078fe6dba5f26b6ea46e525e3fe817b429a + GIT_TAG c312e55d551edd57e98edfd24d4e2330abdcbbd2 #SOURCE_DIR "${PROJECT_SOURCE_DIR}/../mathoptsolverscmake/" EXCLUDE_FROM_ALL) FetchContent_MakeAvailable(mathoptsolverscmake) diff --git a/include/multiplechoiceknapsacksolver/algorithms/milp.hpp b/include/multiplechoiceknapsacksolver/algorithms/milp.hpp index 22fa513..6ad4163 100644 --- a/include/multiplechoiceknapsacksolver/algorithms/milp.hpp +++ b/include/multiplechoiceknapsacksolver/algorithms/milp.hpp @@ -2,7 +2,7 @@ #include "multiplechoiceknapsacksolver/solution.hpp" -#include "mathoptsolverscmake/milp.hpp" +#include "mathoptsolverscmake/mathopt.hpp" namespace multiplechoiceknapsacksolver { diff --git a/src/algorithms/CMakeLists.txt b/src/algorithms/CMakeLists.txt index cbbb72c..cfba46f 100644 --- a/src/algorithms/CMakeLists.txt +++ b/src/algorithms/CMakeLists.txt @@ -5,7 +5,7 @@ target_include_directories(MultipleChoiceKnapsackSolver_milp PUBLIC ${PROJECT_SOURCE_DIR}/include) target_link_libraries(MultipleChoiceKnapsackSolver_milp PUBLIC MultipleChoiceKnapsackSolver - MathOptSolversCMake::milp) + MathOptSolversCMake::mathopt) add_library(MultipleChoiceKnapsackSolver::milp ALIAS MultipleChoiceKnapsackSolver_milp) add_library(MultipleChoiceKnapsackSolver_dyer_zemel) diff --git a/src/algorithms/milp.cpp b/src/algorithms/milp.cpp index 7d283db..4b796e0 100644 --- a/src/algorithms/milp.cpp +++ b/src/algorithms/milp.cpp @@ -2,19 +2,29 @@ #include "multiplechoiceknapsacksolver/algorithm_formatter.hpp" +#ifdef CBC_FOUND +#include "mathoptsolverscmake/mathopt_cbc.hpp" +#endif +#ifdef HIGHS_FOUND +#include "mathoptsolverscmake/mathopt_highs.hpp" +#endif +#ifdef XPRESS_FOUND +#include "mathoptsolverscmake/mathopt_xpress.hpp" +#endif + using namespace multiplechoiceknapsacksolver; namespace { -mathoptsolverscmake::MilpModel create_milp_model( +mathoptsolverscmake::MathOptModel create_milp_model( const Instance& instance) { int number_of_variables = instance.number_of_items(); int number_of_constraints = 1 + instance.number_of_groups(); int number_of_elements = 3 * instance.number_of_items(); - mathoptsolverscmake::MilpModel model( + mathoptsolverscmake::MathOptModel model( number_of_variables, number_of_constraints, number_of_elements); @@ -92,7 +102,7 @@ MilpOutput multiplechoiceknapsacksolver::milp( algorithm_formatter.print_header(); - mathoptsolverscmake::MilpModel milp_model = create_milp_model(instance); + mathoptsolverscmake::MathOptModel milp_model = create_milp_model(instance); std::vector milp_solution; double milp_bound = std::numeric_limits::infinity(); @@ -171,7 +181,7 @@ MilpLinearRelaxationOutput multiplechoiceknapsacksolver::milp_linear_relaxation( algorithm_formatter.print_header(); - mathoptsolverscmake::MilpModel milp_model = create_milp_model(instance); + mathoptsolverscmake::MathOptModel milp_model = create_milp_model(instance); for (int variable_id = 0; variable_id < milp_model.number_of_variables(); ++variable_id) {