use optional field in proto3

This commit is contained in:
Laurent Perron
2021-03-01 11:44:53 +01:00
parent 4e47a4b46c
commit b80974ede1
4 changed files with 43 additions and 31 deletions

View File

@@ -331,7 +331,7 @@ ortools/util/optional_boolean.proto: ;
$(GEN_DIR)/ortools/util/optional_boolean.pb.cc: \
$(SRC_DIR)/ortools/util/optional_boolean.proto | $(GEN_DIR)/ortools/util
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/util/optional_boolean.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/util/optional_boolean.proto
$(GEN_DIR)/ortools/util/optional_boolean.pb.h: \
$(GEN_DIR)/ortools/util/optional_boolean.pb.cc
@@ -393,7 +393,7 @@ ortools/data/jobshop_scheduling.proto: ;
$(GEN_DIR)/ortools/data/jobshop_scheduling.pb.cc: \
$(SRC_DIR)/ortools/data/jobshop_scheduling.proto | $(GEN_DIR)/ortools/data
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/data/jobshop_scheduling.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/data/jobshop_scheduling.proto
$(GEN_DIR)/ortools/data/jobshop_scheduling.pb.h: \
$(GEN_DIR)/ortools/data/jobshop_scheduling.pb.cc
@@ -407,7 +407,7 @@ ortools/data/rcpsp.proto: ;
$(GEN_DIR)/ortools/data/rcpsp.pb.cc: \
$(SRC_DIR)/ortools/data/rcpsp.proto | $(GEN_DIR)/ortools/data
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/data/rcpsp.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/data/rcpsp.proto
$(GEN_DIR)/ortools/data/rcpsp.pb.h: \
$(GEN_DIR)/ortools/data/rcpsp.pb.cc
@@ -988,7 +988,7 @@ ortools/glop/parameters.proto: ;
$(GEN_DIR)/ortools/glop/parameters.pb.cc: \
$(SRC_DIR)/ortools/glop/parameters.proto | $(GEN_DIR)/ortools/glop
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/glop/parameters.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/glop/parameters.proto
$(GEN_DIR)/ortools/glop/parameters.pb.h: \
$(GEN_DIR)/ortools/glop/parameters.pb.cc
@@ -1159,7 +1159,7 @@ ortools/graph/flow_problem.proto: ;
$(GEN_DIR)/ortools/graph/flow_problem.pb.cc: \
$(SRC_DIR)/ortools/graph/flow_problem.proto | $(GEN_DIR)/ortools/graph
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/graph/flow_problem.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/graph/flow_problem.proto
$(GEN_DIR)/ortools/graph/flow_problem.pb.h: \
$(GEN_DIR)/ortools/graph/flow_problem.pb.cc
@@ -2843,7 +2843,7 @@ ortools/sat/boolean_problem.proto: ;
$(GEN_DIR)/ortools/sat/boolean_problem.pb.cc: \
$(SRC_DIR)/ortools/sat/boolean_problem.proto | $(GEN_DIR)/ortools/sat
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/sat/boolean_problem.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/sat/boolean_problem.proto
$(GEN_DIR)/ortools/sat/boolean_problem.pb.h: \
$(GEN_DIR)/ortools/sat/boolean_problem.pb.cc
@@ -2857,7 +2857,7 @@ ortools/sat/cp_model.proto: ;
$(GEN_DIR)/ortools/sat/cp_model.pb.cc: \
$(SRC_DIR)/ortools/sat/cp_model.proto | $(GEN_DIR)/ortools/sat
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/sat/cp_model.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/sat/cp_model.proto
$(GEN_DIR)/ortools/sat/cp_model.pb.h: \
$(GEN_DIR)/ortools/sat/cp_model.pb.cc
@@ -2871,7 +2871,7 @@ ortools/sat/sat_parameters.proto: ;
$(GEN_DIR)/ortools/sat/sat_parameters.pb.cc: \
$(SRC_DIR)/ortools/sat/sat_parameters.proto | $(GEN_DIR)/ortools/sat
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/sat/sat_parameters.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/sat/sat_parameters.proto
$(GEN_DIR)/ortools/sat/sat_parameters.pb.h: \
$(GEN_DIR)/ortools/sat/sat_parameters.pb.cc
@@ -3249,7 +3249,7 @@ ortools/bop/bop_parameters.proto: ;
$(GEN_DIR)/ortools/bop/bop_parameters.pb.cc: \
$(SRC_DIR)/ortools/bop/bop_parameters.proto | $(GEN_DIR)/ortools/bop
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/bop/bop_parameters.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/bop/bop_parameters.proto
$(GEN_DIR)/ortools/bop/bop_parameters.pb.h: \
$(GEN_DIR)/ortools/bop/bop_parameters.pb.cc
@@ -3718,7 +3718,7 @@ ortools/linear_solver/linear_solver.proto: ;
$(GEN_DIR)/ortools/linear_solver/linear_solver.pb.cc: \
$(SRC_DIR)/ortools/linear_solver/linear_solver.proto \
$(GEN_DIR)/ortools/util/optional_boolean.pb.cc | $(GEN_DIR)/ortools/linear_solver
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/linear_solver/linear_solver.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/linear_solver/linear_solver.proto
$(GEN_DIR)/ortools/linear_solver/linear_solver.pb.h: \
$(GEN_DIR)/ortools/linear_solver/linear_solver.pb.cc
@@ -4808,7 +4808,7 @@ ortools/constraint_solver/assignment.proto: ;
$(GEN_DIR)/ortools/constraint_solver/assignment.pb.cc: \
$(SRC_DIR)/ortools/constraint_solver/assignment.proto | $(GEN_DIR)/ortools/constraint_solver
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/assignment.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/assignment.proto
$(GEN_DIR)/ortools/constraint_solver/assignment.pb.h: \
$(GEN_DIR)/ortools/constraint_solver/assignment.pb.cc
@@ -4822,7 +4822,7 @@ ortools/constraint_solver/demon_profiler.proto: ;
$(GEN_DIR)/ortools/constraint_solver/demon_profiler.pb.cc: \
$(SRC_DIR)/ortools/constraint_solver/demon_profiler.proto | $(GEN_DIR)/ortools/constraint_solver
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/demon_profiler.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/demon_profiler.proto
$(GEN_DIR)/ortools/constraint_solver/demon_profiler.pb.h: \
$(GEN_DIR)/ortools/constraint_solver/demon_profiler.pb.cc
@@ -4836,7 +4836,7 @@ ortools/constraint_solver/routing_enums.proto: ;
$(GEN_DIR)/ortools/constraint_solver/routing_enums.pb.cc: \
$(SRC_DIR)/ortools/constraint_solver/routing_enums.proto | $(GEN_DIR)/ortools/constraint_solver
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/routing_enums.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/routing_enums.proto
$(GEN_DIR)/ortools/constraint_solver/routing_enums.pb.h: \
$(GEN_DIR)/ortools/constraint_solver/routing_enums.pb.cc
@@ -4853,7 +4853,7 @@ $(GEN_DIR)/ortools/constraint_solver/routing_parameters.pb.cc: \
$(GEN_DIR)/ortools/constraint_solver/routing_enums.pb.cc \
$(GEN_DIR)/ortools/constraint_solver/solver_parameters.pb.cc \
$(GEN_DIR)/ortools/util/optional_boolean.pb.cc | $(GEN_DIR)/ortools/constraint_solver
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/routing_parameters.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/routing_parameters.proto
$(GEN_DIR)/ortools/constraint_solver/routing_parameters.pb.h: \
$(GEN_DIR)/ortools/constraint_solver/routing_parameters.pb.cc
@@ -4867,7 +4867,7 @@ ortools/constraint_solver/search_limit.proto: ;
$(GEN_DIR)/ortools/constraint_solver/search_limit.pb.cc: \
$(SRC_DIR)/ortools/constraint_solver/search_limit.proto | $(GEN_DIR)/ortools/constraint_solver
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/search_limit.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/search_limit.proto
$(GEN_DIR)/ortools/constraint_solver/search_limit.pb.h: \
$(GEN_DIR)/ortools/constraint_solver/search_limit.pb.cc
@@ -4881,7 +4881,7 @@ ortools/constraint_solver/search_stats.proto: ;
$(GEN_DIR)/ortools/constraint_solver/search_stats.pb.cc: \
$(SRC_DIR)/ortools/constraint_solver/search_stats.proto | $(GEN_DIR)/ortools/constraint_solver
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/search_stats.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/search_stats.proto
$(GEN_DIR)/ortools/constraint_solver/search_stats.pb.h: \
$(GEN_DIR)/ortools/constraint_solver/search_stats.pb.cc
@@ -4895,7 +4895,7 @@ ortools/constraint_solver/solver_parameters.proto: ;
$(GEN_DIR)/ortools/constraint_solver/solver_parameters.pb.cc: \
$(SRC_DIR)/ortools/constraint_solver/solver_parameters.proto | $(GEN_DIR)/ortools/constraint_solver
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/solver_parameters.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/constraint_solver/solver_parameters.proto
$(GEN_DIR)/ortools/constraint_solver/solver_parameters.pb.h: \
$(GEN_DIR)/ortools/constraint_solver/solver_parameters.pb.cc
@@ -4958,7 +4958,7 @@ ortools/gscip/gscip.proto: ;
$(GEN_DIR)/ortools/gscip/gscip.pb.cc: \
$(SRC_DIR)/ortools/gscip/gscip.proto | $(GEN_DIR)/ortools/gscip
$(PROTOC) --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/gscip/gscip.proto
$(PROTOC) --experimental_allow_proto3_optional --proto_path=$(INC_DIR) $(PROTOBUF_PROTOC_INC) --cpp_out=$(GEN_PATH) $(SRC_DIR)/ortools/gscip/gscip.proto
$(GEN_DIR)/ortools/gscip/gscip.pb.h: \
$(GEN_DIR)/ortools/gscip/gscip.pb.cc

View File

@@ -164,20 +164,29 @@ const GScipConstraintOptions& DefaultGScipConstraintOptions() {
absl::Status GScip::SetParams(const GScipParameters& params,
const std::string& legacy_params) {
SCIPsetMessagehdlrQuiet(scip_, params.silence_output());
if (params.has_silence_output()) {
SCIPsetMessagehdlrQuiet(scip_, params.silence_output());
}
if (!params.search_logs_filename().empty()) {
SCIPsetMessagehdlrLogfile(scip_, params.search_logs_filename().c_str());
}
const SCIP_Bool set_param_quiet =
static_cast<SCIP_Bool>(!params.silence_output());
RETURN_IF_SCIP_ERROR(SCIPsetEmphasis(
scip_, ConvertEmphasis(params.emphasis()), set_param_quiet));
RETURN_IF_SCIP_ERROR(SCIPsetHeuristics(
scip_, ConvertMetaParamValue(params.heuristics()), set_param_quiet));
RETURN_IF_SCIP_ERROR(SCIPsetPresolving(
scip_, ConvertMetaParamValue(params.presolve()), set_param_quiet));
RETURN_IF_SCIP_ERROR(SCIPsetSeparating(
scip_, ConvertMetaParamValue(params.separating()), set_param_quiet));
if (params.has_heuristics()) {
RETURN_IF_SCIP_ERROR(SCIPsetHeuristics(
scip_, ConvertMetaParamValue(params.heuristics()), set_param_quiet));
}
if (params.has_presolve()) {
RETURN_IF_SCIP_ERROR(SCIPsetPresolving(
scip_, ConvertMetaParamValue(params.presolve()), set_param_quiet));
}
if (params.has_separating()) {
RETURN_IF_SCIP_ERROR(SCIPsetSeparating(
scip_, ConvertMetaParamValue(params.separating()), set_param_quiet));
}
for (const auto& bool_param : params.bool_params()) {
RETURN_IF_SCIP_ERROR(
(SCIPsetBoolParam(scip_, bool_param.first.c_str(), bool_param.second)));

View File

@@ -21,6 +21,9 @@ package operations_research;
// 2. Meta parameters (heuristics, presolve, separating)
// 3. Individual SCIP parameters (e.g. an entry in bool_params)
// Note that 1. and 2. both apply a combination of parameters from 3.
//
// For parameters that are marked as optional, the underlying solver default
// is used if they are not specified.
message GScipParameters {
// See SCIP documentation for details:
// https://scip.zib.de/doc/html/type__paramset_8h.php#a2e51a867a8ea3ea16f15e7cc935c3f32
@@ -50,15 +53,15 @@ message GScipParameters {
// See SCIPsetHeuristics() for details:
// https://scip.zib.de/doc/html/group__ParameterMethods.php#gaeccb7859066cadd01d0df7aca98e2c7d
MetaParamValue heuristics = 2;
optional MetaParamValue heuristics = 2;
// See SCIPsetPresolving() for details:
// https://scip.zib.de/doc/html/group__ParameterMethods.php#ga8365de8ab5ec5961c005e2d77965b182
MetaParamValue presolve = 3;
optional MetaParamValue presolve = 3;
// See SCIPsetSeparating() for details:
// https://scip.zib.de/doc/html/group__ParameterMethods.php#gad0c64e3e9b8def72fd8a7d3d9dce7729
MetaParamValue separating = 4;
optional MetaParamValue separating = 4;
// See https://scip.zib.de/doc/html/PARAMETERS.php for a list of all SCIP
// parameters.
@@ -76,7 +79,7 @@ message GScipParameters {
// Disable all terminal output (override all logging parameters). To control
// only the search logs, see also the SCIP parameter display/verblevel and
// from gscip_parameters.h, SetLogLevel() and SetOutputEnabled().
bool silence_output = 11;
optional bool silence_output = 11;
// Log solver metrics to terminal when finished solving (unless silenced).
bool print_detailed_solving_stats = 12;
@@ -107,7 +110,7 @@ message GScipParameters {
// How many solutions to retrieve from the solution pool (if this many exist).
// At least one solution will always be returned, even if num_solutions < 1.
int32 num_solutions = 17;
optional int32 num_solutions = 17;
}
// TODO(user): this should be machine generated by script and contain all of

View File

@@ -105,7 +105,7 @@ do
print_paths "${all_deps[@]/.proto/.pb.cc}"
fi
echo -e " | \$(GEN_DIR)/ortools/${main_dir}"
echo -e "\t\$(PROTOC) --proto_path=\$(INC_DIR) \$(PROTOBUF_PROTOC_INC) --cpp_out=\$(GEN_PATH) \$(SRC_DIR)/ortools/${main_dir}/${name}.proto"
echo -e "\t\$(PROTOC) --experimental_allow_proto3_optional --proto_path=\$(INC_DIR) \$(PROTOBUF_PROTOC_INC) --cpp_out=\$(GEN_PATH) \$(SRC_DIR)/ortools/${main_dir}/${name}.proto"
echo
# Print makefile command for .pb.h.
echo -e "\$(GEN_DIR)/ortools/${main_dir}/${name}.pb.h: \\"