switch flags setters and getters to the absl format
This commit is contained in:
@@ -37,19 +37,19 @@ static const int kVolumeMin = 1156;
|
||||
static const int kVolumeMax = 1600;
|
||||
|
||||
// Data for a single bin problem
|
||||
static const int kItemsWeights[] = {1008, 2087, 5522, 5250, 5720,
|
||||
4998, 275, 3145, 12580, 382};
|
||||
static const int kItemsVolumes[] = {281, 307, 206, 111, 275,
|
||||
79, 23, 65, 261, 40};
|
||||
static const int kItemsWeights[] = { 1008, 2087, 5522, 5250, 5720, 4998, 275,
|
||||
3145, 12580, 382 };
|
||||
static const int kItemsVolumes[] = { 281, 307, 206, 111, 275, 79, 23, 65, 261,
|
||||
40 };
|
||||
static const int kNumItems = 10;
|
||||
|
||||
void MultiKnapsackSat(int scaling, const std::string& params) {
|
||||
void MultiKnapsackSat(int scaling, const std::string ¶ms) {
|
||||
CpModelBuilder builder;
|
||||
|
||||
const int num_items = scaling * kNumItems;
|
||||
const int num_bins = scaling;
|
||||
|
||||
std::vector<std::vector<BoolVar>> items_in_bins(num_bins);
|
||||
std::vector<std::vector<BoolVar> > items_in_bins(num_bins);
|
||||
for (int b = 0; b < num_bins; ++b) {
|
||||
for (int i = 0; i < num_items; ++i) {
|
||||
items_in_bins[b].push_back(builder.NewBoolVar());
|
||||
@@ -74,13 +74,16 @@ void MultiKnapsackSat(int scaling, const std::string& params) {
|
||||
// Constraints per bins.
|
||||
std::vector<IntVar> bin_weights;
|
||||
for (int b = 0; b < num_bins; ++b) {
|
||||
IntVar bin_weight = builder.NewIntVar({kWeightMin, kWeightMax});
|
||||
IntVar bin_weight = builder.NewIntVar({
|
||||
kWeightMin, kWeightMax
|
||||
});
|
||||
bin_weights.push_back(bin_weight);
|
||||
builder.AddEquality(LinearExpr::BooleanScalProd(items_in_bins[b], weights),
|
||||
bin_weight);
|
||||
builder.AddLinearConstraint(
|
||||
LinearExpr::BooleanScalProd(items_in_bins[b], volumes),
|
||||
{kVolumeMin, kVolumeMax});
|
||||
LinearExpr::BooleanScalProd(items_in_bins[b], volumes), {
|
||||
kVolumeMin, kVolumeMax
|
||||
});
|
||||
}
|
||||
|
||||
// Each item is selected at most one time.
|
||||
@@ -102,12 +105,13 @@ void MultiKnapsackSat(int scaling, const std::string& params) {
|
||||
LOG(INFO) << CpSolverResponseStats(response);
|
||||
}
|
||||
|
||||
} // namespace sat
|
||||
} // namespace operations_research
|
||||
} // namespace sat
|
||||
} // namespace operations_research
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
absl::SetFlag(&FLAGS_logtostderr, true);
|
||||
int main(int argc, char **argv) {
|
||||
absl::SetFlag(&absl::GetFlag(FLAGS_logtostderr), true);
|
||||
gflags::ParseCommandLineFlags(&argc, &argv, true);
|
||||
operations_research::sat::MultiKnapsackSat(FLAGS_size, FLAGS_params);
|
||||
operations_research::sat::MultiKnapsackSat(absl::GetFlag(FLAGS_size),
|
||||
absl::GetFlag(FLAGS_params));
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user