From 4bd4de1f0f0df98d880aba5dd99fbb059e77afb0 Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Mon, 19 Dec 2022 10:09:12 +0100 Subject: [PATCH] math_opt: Add update_result --- ortools/math_opt/cpp/BUILD.bazel | 7 +++++ ortools/math_opt/cpp/update_result.h | 41 ++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 ortools/math_opt/cpp/update_result.h diff --git a/ortools/math_opt/cpp/BUILD.bazel b/ortools/math_opt/cpp/BUILD.bazel index 4e4b887731..3e1efb6058 100644 --- a/ortools/math_opt/cpp/BUILD.bazel +++ b/ortools/math_opt/cpp/BUILD.bazel @@ -336,6 +336,7 @@ cc_library( ":solve_arguments", ":solve_result", ":solver_init_arguments", + ":update_result", "//ortools/base", "//ortools/base:status_macros", "//ortools/math_opt:callback_cc_proto", @@ -409,3 +410,9 @@ cc_library( hdrs = ["formatters.h"], deps = ["//ortools/util:fp_roundtrip_conv"], ) + +cc_library( + name = "update_result", + hdrs = ["update_result.h"], + deps = ["//ortools/math_opt:model_update_cc_proto"], +) diff --git a/ortools/math_opt/cpp/update_result.h b/ortools/math_opt/cpp/update_result.h new file mode 100644 index 0000000000..7f845f32fa --- /dev/null +++ b/ortools/math_opt/cpp/update_result.h @@ -0,0 +1,41 @@ +// Copyright 2010-2022 Google LLC +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef OR_TOOLS_MATH_OPT_CPP_UPDATE_RESULT_H_ +#define OR_TOOLS_MATH_OPT_CPP_UPDATE_RESULT_H_ + +#include +#include + +#include "ortools/math_opt/model_update.pb.h" + +namespace operations_research::math_opt { + +// Result of the Update() on an incremental solver. +struct UpdateResult { + UpdateResult(const bool did_update, std::optional update) + : did_update(did_update), update(std::move(update)) {} + + // True if the solver has been successfully updated or if no update was + // necessary (in which case `update` will be nullopt). False if the solver + // had to be recreated. + bool did_update; + + // The update that was attempted on the solver. Can be nullopt when no + // update was needed (the model was not changed). + std::optional update; +}; + +} // namespace operations_research::math_opt + +#endif // OR_TOOLS_MATH_OPT_CPP_UPDATE_RESULT_H_