Skip to content

Commit be6b19e

Browse files
committed
Add Highs support as LP solver
1 parent 3dffb2f commit be6b19e

File tree

14 files changed

+26
-20
lines changed

14 files changed

+26
-20
lines changed

extern/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,11 @@ FetchContent_MakeAvailable(treesearchsolver)
5757

5858
# Fetch fontanf/columngenerationsolver.
5959
set(COLUMNGENERATIONSOLVER_USE_CLP ON)
60+
set(COLUMNGENERATIONSOLVER_USE_HIGHS ON)
6061
FetchContent_Declare(
6162
columngenerationsolver
6263
GIT_REPOSITORY https://github.com/fontanf/columngenerationsolver.git
63-
GIT_TAG 0a57d7ea85f5e06a4b911a37f3c4e939b0d616d9
64+
GIT_TAG 6f449498593dfe846f6bbb72364394a4a0388b86
6465
#SOURCE_DIR "${PROJECT_SOURCE_DIR}/../columngenerationsolver/"
6566
EXCLUDE_FROM_ALL)
6667
FetchContent_MakeAvailable(columngenerationsolver)

include/packingsolver/boxstacks/optimize.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "packingsolver/boxstacks/solution.hpp"
44

5-
#include "columngenerationsolver/linear_programming_solver.hpp"
5+
#include "columngenerationsolver/commons.hpp"
66

77
namespace packingsolver
88
{
@@ -84,7 +84,7 @@ struct OptimizeParameters: packingsolver::Parameters<Instance, Solution>
8484
OptimizationMode optimization_mode = OptimizationMode::Anytime;
8585

8686
/** Linear programming solver. */
87-
columngenerationsolver::SolverName solver_name
87+
columngenerationsolver::SolverName linear_programming_solver_name
8888
= columngenerationsolver::SolverName::CLP;
8989

9090
/** Use tree search algorithm. */

include/packingsolver/irregular/optimize.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "packingsolver/irregular/solution.hpp"
44

5-
#include "columngenerationsolver/linear_programming_solver.hpp"
5+
#include "columngenerationsolver/commons.hpp"
66

77
namespace packingsolver
88
{
@@ -21,7 +21,7 @@ struct OptimizeParameters: packingsolver::Parameters<Instance, Solution>
2121
OptimizationMode optimization_mode = OptimizationMode::Anytime;
2222

2323
/** Linear programming solver. */
24-
columngenerationsolver::SolverName solver_name
24+
columngenerationsolver::SolverName linear_programming_solver_name
2525
= columngenerationsolver::SolverName::CLP;
2626

2727
/** Use tree search algorithm. */

include/packingsolver/onedimensional/optimize.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "packingsolver/onedimensional/solution.hpp"
44

5-
#include "columngenerationsolver/linear_programming_solver.hpp"
5+
#include "columngenerationsolver/commons.hpp"
66

77
namespace packingsolver
88
{
@@ -21,7 +21,7 @@ struct OptimizeParameters: packingsolver::Parameters<Instance, Solution>
2121
OptimizationMode optimization_mode = OptimizationMode::Anytime;
2222

2323
/** Linear programming solver. */
24-
columngenerationsolver::SolverName solver_name
24+
columngenerationsolver::SolverName linear_programming_solver_name
2525
= columngenerationsolver::SolverName::CLP;
2626

2727
/** Use tree search algorithm. */

include/packingsolver/rectangle/optimize.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "packingsolver/rectangle/solution.hpp"
44

5-
#include "columngenerationsolver/linear_programming_solver.hpp"
5+
#include "columngenerationsolver/commons.hpp"
66

77
namespace packingsolver
88
{
@@ -24,7 +24,7 @@ struct OptimizeParameters: packingsolver::Parameters<Instance, Solution>
2424
Solution* fixed_items = nullptr;
2525

2626
/** Linear programming solver. */
27-
columngenerationsolver::SolverName solver_name
27+
columngenerationsolver::SolverName linear_programming_solver_name
2828
= columngenerationsolver::SolverName::CLP;
2929

3030
/** Use tree search algorithm. */

include/packingsolver/rectangleguillotine/optimize.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "packingsolver/rectangleguillotine/solution.hpp"
44

5-
#include "columngenerationsolver/linear_programming_solver.hpp"
5+
#include "columngenerationsolver/commons.hpp"
66

77
namespace packingsolver
88
{
@@ -21,7 +21,7 @@ struct OptimizeParameters: packingsolver::Parameters<Instance, Solution>
2121
OptimizationMode optimization_mode = OptimizationMode::Anytime;
2222

2323
/** Linear programming solver. */
24-
columngenerationsolver::SolverName solver_name
24+
columngenerationsolver::SolverName linear_programming_solver_name
2525
= columngenerationsolver::SolverName::CLP;
2626

2727
/** Use tree search algorithm. */

src/boxstacks/optimize.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ packingsolver::boxstacks::Output packingsolver::boxstacks::optimize(
3232
sor_parameters.verbosity_level = 0;
3333
sor_parameters.timer = parameters.timer;
3434
sor_parameters.logger = logger;
35-
sor_parameters.onedimensional_parameters.solver_name = parameters.solver_name;
35+
sor_parameters.onedimensional_parameters.linear_programming_solver_name = parameters.linear_programming_solver_name;
3636
//sor_parameters.info.set_verbosity_level(2);
3737
sor_parameters.new_solution_callback = [
3838
&algorithm_formatter](
@@ -236,7 +236,7 @@ packingsolver::boxstacks::Output packingsolver::boxstacks::optimize(
236236
= (parameters.optimization_mode == OptimizationMode::NotAnytimeSequential)?
237237
OptimizationMode::NotAnytimeSequential:
238238
OptimizationMode::NotAnytime;
239-
kp_parameters.solver_name = parameters.solver_name;
239+
kp_parameters.linear_programming_solver_name = parameters.linear_programming_solver_name;
240240
kp_parameters.not_anytime_tree_search_queue_size
241241
= parameters.sequential_value_correction_subproblem_queue_size;
242242
//kp_parameters.sequential_onedimensional_rectangle_parameters.rectangle_queue_size = parameters.sequential_value_correction_queue_size;

src/irregular/optimize.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ void optimize_column_generation(
433433
}
434434
};
435435
cgslds_parameters.column_generation_parameters.solver_name
436-
= parameters.solver_name;
436+
= parameters.linear_programming_solver_name;
437437
columngenerationsolver::limited_discrepancy_search(cgs_model, cgslds_parameters);
438438
}
439439

src/onedimensional/optimize.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ void optimize_column_generation(
419419
}
420420
};
421421
cgslds_parameters.column_generation_parameters.solver_name
422-
= parameters.solver_name;
422+
= parameters.linear_programming_solver_name;
423423
columngenerationsolver::limited_discrepancy_search(cgs_model, cgslds_parameters);
424424
}
425425

src/rectangle/optimize.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ void optimize_column_generation(
362362
}
363363
};
364364
cgslds_parameters.column_generation_parameters.solver_name
365-
= parameters.solver_name;
365+
= parameters.linear_programming_solver_name;
366366
columngenerationsolver::limited_discrepancy_search(cgs_model, cgslds_parameters);
367367
}
368368

src/rectangleguillotine/column_generation_2.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1532,7 +1532,7 @@ void column_generation_2_vertical(
15321532
}
15331533
};
15341534
cgslds_parameters.column_generation_parameters.solver_name
1535-
= parameters.solver_name;
1535+
= parameters.linear_programming_solver_name;
15361536
columngenerationsolver::limited_discrepancy_search(cgs_model, cgslds_parameters);
15371537
}
15381538

src/rectangleguillotine/column_generation_2.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353

5454
#include "packingsolver/rectangleguillotine/solution.hpp"
5555

56-
#include "columngenerationsolver/linear_programming_solver.hpp"
56+
#include "columngenerationsolver/commons.hpp"
5757

5858
namespace packingsolver
5959
{
@@ -76,7 +76,7 @@ struct ColumnGeneration2Parameters: packingsolver::Parameters<Instance, Solution
7676
bool automatic_stop = false;
7777

7878
/** Linear programming solver. */
79-
columngenerationsolver::SolverName solver_name
79+
columngenerationsolver::SolverName linear_programming_solver_name
8080
= columngenerationsolver::SolverName::CLP;
8181
};
8282

src/rectangleguillotine/main.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ int main(int argc, char *argv[])
9494
("verbosity-level,v", po::value<int>(), "Verbosity level")
9595
("log2stderr,w", "Write log in stderr")
9696

97+
("linear-programming-solver,", po::value<columngenerationsolver::SolverName>(), "set linear programming solver")
9798
("optimization-mode,", po::value<OptimizationMode>(), "set optimization mode")
9899
("use-tree-search,", po::value<bool>(), "enable tree search algorithm")
99100
("use-column-generation-2,", po::value<bool>(), "enable column generation 2 algorithm")
@@ -218,6 +219,8 @@ int main(int argc, char *argv[])
218219

219220
OptimizeParameters parameters;
220221
read_args(parameters, vm);
222+
if (vm.count("linear-programming-solver"))
223+
parameters.linear_programming_solver_name = vm["linear-programming-solver"].as<columngenerationsolver::SolverName>();
221224
if (vm.count("optimization-mode"))
222225
parameters.optimization_mode = vm["optimization-mode"].as<OptimizationMode>();
223226

src/rectangleguillotine/optimize.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ void optimize_column_generation_2(
146146
ColumnGeneration2Parameters cg_parameters;
147147
cg_parameters.verbosity_level = 0;
148148
cg_parameters.timer = parameters.timer;
149+
cg_parameters.linear_programming_solver_name
150+
= parameters.linear_programming_solver_name;
149151
if (parameters.optimization_mode == OptimizationMode::Anytime)
150152
cg_parameters.timer.add_end_boolean(&algorithm_formatter.end_boolean());
151153
if (parameters.optimization_mode != OptimizationMode::Anytime)
@@ -374,7 +376,7 @@ void optimize_column_generation(
374376
}
375377
};
376378
cgslds_parameters.column_generation_parameters.solver_name
377-
= parameters.solver_name;
379+
= parameters.linear_programming_solver_name;
378380
columngenerationsolver::limited_discrepancy_search(cgs_model, cgslds_parameters);
379381
}
380382

0 commit comments

Comments
 (0)