Skip to content

Commit fdd6c64

Browse files
committed
Update knapsacksolver dependency
1 parent 21b120f commit fdd6c64

File tree

7 files changed

+39
-28
lines changed

7 files changed

+39
-28
lines changed

extern/CMakeLists.txt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,22 @@ set(KNAPSACKSOLVER_BUILD_TEST OFF)
6767
FetchContent_Declare(
6868
knapsacksolver
6969
GIT_REPOSITORY https://github.com/fontanf/knapsacksolver.git
70-
GIT_TAG 5aee5d72a09fb228033d695fe22dc90dba65ec05
70+
GIT_TAG 1d7a689f88e953c099087a31f174cb6646002f9f
7171
#SOURCE_DIR "${PROJECT_SOURCE_DIR}/../knapsacksolver/"
7272
EXCLUDE_FROM_ALL)
7373
FetchContent_MakeAvailable(knapsacksolver)
7474

75+
# Fetch fontanf/multiplechoicesubsetsumsolver.
76+
set(MULTIPLECHOICESUBSETSUMSOLVER_BUILD_MAIN OFF)
77+
set(MULTIPLECHOICESUBSETSUMSOLVER_BUILD_TEST OFF)
78+
FetchContent_Declare(
79+
multiplechoicesubsetsumsolver
80+
GIT_REPOSITORY https://github.com/fontanf/multiplechoicesubsetsumsolver.git
81+
GIT_TAG 83406f59044425aef1391030db0b29333c208d7f
82+
#SOURCE_DIR "${PROJECT_SOURCE_DIR}/../multiplechoicesubsetsumsolver/"
83+
EXCLUDE_FROM_ALL)
84+
FetchContent_MakeAvailable(multiplechoicesubsetsumsolver)
85+
7586
# Fetch fontanf/treesearchsolver.
7687
set(TREESEARCHSOLVER_BUILD_TEST OFF)
7788
set(TREESEARCHSOLVER_BUILD_EXAMPLES OFF)

src/algorithms/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ target_include_directories(PackingSolver_algorithms INTERFACE
1313
target_link_libraries(PackingSolver_algorithms INTERFACE
1414
PackingSolver_common
1515
ColumnGenerationSolver::columngenerationsolver
16-
KnapsackSolver::knapsack::dynamic_programming_primal_dual)
16+
KnapsackSolver::dynamic_programming_primal_dual)
1717
add_library(PackingSolver::algorithms ALIAS PackingSolver_algorithms)

src/algorithms/dichotomic_search.hpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717

1818
#include "packingsolver/algorithms/common.hpp"
1919

20-
#include "knapsacksolver/knapsack/instance_builder.hpp"
21-
#include "knapsacksolver/knapsack/algorithms/dynamic_programming_primal_dual.hpp"
20+
#include "knapsacksolver/instance_builder.hpp"
21+
#include "knapsacksolver/algorithms/dynamic_programming_primal_dual.hpp"
2222

2323
namespace packingsolver
2424
{
@@ -148,15 +148,15 @@ DichotomicSearchOutput<Instance, Solution> dichotomic_search(
148148

149149
// Build knapsack instance.
150150
//std::cout << "Build Knapsack instance..." << std::endl;
151-
knapsacksolver::knapsack::InstanceFromFloatProfitsBuilder kp_instance_builder;
151+
knapsacksolver::InstanceFromFloatProfitsBuilder kp_instance_builder;
152152
// Set knapsack capacity.
153153
//std::cout << "bin_space " << bin_space << std::endl;
154154
//std::cout << "bin_min_space " << bin_min_space << std::endl;
155155
//std::cout << "item_space " << item_space << std::endl;
156-
knapsacksolver::knapsack::Weight kp_capacity = bin_space
156+
knapsacksolver::Weight kp_capacity = bin_space
157157
- bin_min_space
158158
- (item_space * (1 + output.waste_percentage));
159-
kp_capacity = std::max(kp_capacity, (knapsacksolver::knapsack::Weight)0);
159+
kp_capacity = std::max(kp_capacity, (knapsacksolver::Weight)0);
160160
kp_instance_builder.set_capacity(kp_capacity);
161161
// Add knapsack items which are PackingSolver bins.
162162
std::vector<BinTypeId> kp2ps;
@@ -171,15 +171,15 @@ DichotomicSearchOutput<Instance, Solution> dichotomic_search(
171171
kp2ps.push_back(bin_type_id);
172172
}
173173
}
174-
const knapsacksolver::knapsack::Instance kp_instance = kp_instance_builder.build();
174+
const knapsacksolver::Instance kp_instance = kp_instance_builder.build();
175175
//std::cout << "kp2ps";
176176
//for (BinTypeId i: kp2ps)
177177
// std::cout << " " << i;
178178
//std::cout << std::endl;
179179
// Solve knapsack instance.
180-
knapsacksolver::knapsack::DynamicProgrammingPrimalDualParameters kp_parameters;
180+
knapsacksolver::DynamicProgrammingPrimalDualParameters kp_parameters;
181181
kp_parameters.verbosity_level = 0;
182-
auto kp_output = knapsacksolver::knapsack::dynamic_programming_primal_dual(
182+
auto kp_output = knapsacksolver::dynamic_programming_primal_dual(
183183
kp_instance,
184184
kp_parameters);
185185

@@ -206,7 +206,7 @@ DichotomicSearchOutput<Instance, Solution> dichotomic_search(
206206
bin_type_id < instance.number_of_bin_types();
207207
++bin_type_id)
208208
bin_copies[bin_type_id] += instance.bin_type(bin_type_id).copies_min;
209-
for (knapsacksolver::knapsack::ItemId kp_item_id = 0;
209+
for (knapsacksolver::ItemId kp_item_id = 0;
210210
kp_item_id < kp_instance.number_of_items();
211211
++kp_item_id) {
212212
//std::cout << "kp_item_id " << kp_item_id << " sol " << kp_output.solution.contains(kp_item_id) << std::endl;

src/box/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ target_link_libraries(PackingSolver_box PUBLIC
1616
PackingSolver_algorithms
1717
PackingSolver_rectangle
1818
PackingSolver_onedimensional
19-
KnapsackSolver::multiple_choice_subset_sum::dynamic_programming_bellman
19+
MultipleChoiceSubsetSumSolver::dynamic_programming_bellman
2020
Threads::Threads)
2121
add_library(PackingSolver::box ALIAS PackingSolver_box)
2222

src/boxstacks/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ target_link_libraries(PackingSolver_boxstacks PUBLIC
1717
PackingSolver_algorithms
1818
PackingSolver_rectangle
1919
PackingSolver_onedimensional
20-
KnapsackSolver::multiple_choice_subset_sum::dynamic_programming_bellman
20+
MultipleChoiceSubsetSumSolver::dynamic_programming_bellman
2121
Threads::Threads)
2222
add_library(PackingSolver::boxstacks ALIAS PackingSolver_boxstacks)
2323

src/boxstacks/branching_scheme.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "boxstacks/branching_scheme.hpp"
22

3-
#include "knapsacksolver/multiple_choice_subset_sum/instance_builder.hpp"
4-
#include "knapsacksolver/multiple_choice_subset_sum/algorithms/dynamic_programming_bellman.hpp"
3+
#include "multiplechoicesubsetsumsolver/instance_builder.hpp"
4+
#include "multiplechoicesubsetsumsolver/algorithms/dynamic_programming_bellman.hpp"
55

66
#include <string>
77
#include <cmath>
@@ -276,7 +276,7 @@ BranchingScheme::BranchingScheme(
276276
// Lift length.
277277
// Build Multiple-Choice Subset Sum instance.
278278
const BinType& bin_type = instance.bin_type(0);
279-
knapsacksolver::multiple_choice_subset_sum::InstanceBuilder mcss_instance_builder;
279+
multiplechoicesubsetsumsolver::InstanceBuilder mcss_instance_builder;
280280
mcss_instance_builder.set_capacity(bin_type.box.x);
281281
ItemPos mcss_pos = 0;
282282
for (ItemTypeId item_type_id = 0;
@@ -293,11 +293,11 @@ BranchingScheme::BranchingScheme(
293293
mcss_pos++;
294294
}
295295
}
296-
knapsacksolver::multiple_choice_subset_sum::Instance mcss_instance = mcss_instance_builder.build();
296+
multiplechoicesubsetsumsolver::Instance mcss_instance = mcss_instance_builder.build();
297297
//mcss_instance.print(std::cout, 2);
298-
knapsacksolver::multiple_choice_subset_sum::Parameters mcss_parameters;
298+
multiplechoicesubsetsumsolver::Parameters mcss_parameters;
299299
mcss_parameters.verbosity_level = 0;
300-
auto mscc_output = knapsacksolver::multiple_choice_subset_sum::dynamic_programming_bellman_array(
300+
auto mscc_output = multiplechoicesubsetsumsolver::dynamic_programming_bellman_array(
301301
mcss_instance,
302302
mcss_parameters);
303303
//auto mscc_output = multiple_choice_subset_sumsolver::dynamic_programming_bellman_word_ram(mcss_instance);

src/onedimensional/optimize.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
#include "treesearchsolver/iterative_beam_search_2.hpp"
1111

12-
#include "knapsacksolver/knapsack/instance_builder.hpp"
13-
#include "knapsacksolver/knapsack/algorithms/dynamic_programming_primal_dual.hpp"
12+
#include "knapsacksolver/instance_builder.hpp"
13+
#include "knapsacksolver/algorithms/dynamic_programming_primal_dual.hpp"
1414

1515
#include <thread>
1616

@@ -31,9 +31,9 @@ void optimize_dynamic_programming(
3131
return;
3232

3333
const BinType& bin_type = instance.bin_type(0);
34-
knapsacksolver::knapsack::InstanceFromFloatProfitsBuilder kp_instance_builder;
34+
knapsacksolver::InstanceFromFloatProfitsBuilder kp_instance_builder;
3535
std::vector<std::pair<ItemTypeId, ItemPos>> kp2ps;
36-
knapsacksolver::knapsack::Weight kp_capacity = bin_type.length;
36+
knapsacksolver::Weight kp_capacity = bin_type.length;
3737
kp_instance_builder.set_capacity(kp_capacity);
3838
for (ItemTypeId item_type_id: bin_type.item_type_ids) {
3939
const ItemType& item_type = instance.item_type(item_type_id);
@@ -42,7 +42,7 @@ void optimize_dynamic_programming(
4242
while (total_copies < item_type.copies) {
4343
if (total_copies + copies > item_type.copies)
4444
copies = item_type.copies - total_copies;
45-
knapsacksolver::knapsack::Weight kp_weight = copies * (
45+
knapsacksolver::Weight kp_weight = copies * (
4646
item_type.length
4747
- (std::max)(item_type.nesting_length, (Length)0));
4848
if (kp_weight > kp_capacity)
@@ -55,17 +55,17 @@ void optimize_dynamic_programming(
5555
copies *= 2;
5656
}
5757
}
58-
knapsacksolver::knapsack::Instance kp_instance = kp_instance_builder.build();
58+
knapsacksolver::Instance kp_instance = kp_instance_builder.build();
5959

60-
knapsacksolver::knapsack::DynamicProgrammingPrimalDualParameters kp_parameters;
60+
knapsacksolver::DynamicProgrammingPrimalDualParameters kp_parameters;
6161
kp_parameters.verbosity_level = 0;
62-
auto kp_output = knapsacksolver::knapsack::dynamic_programming_primal_dual(
62+
auto kp_output = knapsacksolver::dynamic_programming_primal_dual(
6363
kp_instance,
6464
kp_parameters);
6565

6666
Solution solution(instance);
6767
solution.add_bin(0, 1);
68-
for (knapsacksolver::knapsack::ItemId kp_item_type_id = 0;
68+
for (knapsacksolver::ItemId kp_item_type_id = 0;
6969
kp_item_type_id < kp_instance.number_of_items();
7070
++kp_item_type_id) {
7171
if (kp_output.solution.contains(kp_item_type_id)) {

0 commit comments

Comments
 (0)