33#include "absl/status/status.h"
45int main(
int argc,
char** argv) {
58 const std::string model_str = model.SerializeAsString();
59 const void* model_bin = model_str.data();
60 const size_t model_bin_size = model_str.size();
63 const int solver_type =
67 void* result_bin =
nullptr;
68 size_t result_bin_size = 0;
69 char* status_msg =
nullptr;
72 const int status_code =
MathOptSolve(model_bin, model_bin_size, solver_type,
74 &result_bin_size, &status_msg);
77 if (status_code != 0) {
78 std::cerr << absl::Status(static_cast<absl::StatusCode>(status_code),
88 if (!result.ParseFromArray(result_bin,
static_cast<int>(result_bin_size))) {
89 std::cout <<
"failed to parse SolveResultProto" << std::endl;
94 std::cout <<
"Termination is optimal: "
98 std::cout <<
"Objective value: "
void MathOptFree(void *ptr)
int MathOptSolve(const void *model, const size_t model_size, const int solver_type, MathOptInterrupter *const interrupter, void **solve_result, size_t *solve_result_size, char **status_msg)
::operations_research::math_opt::VariablesProto *PROTOBUF_NONNULL mutable_variables()
::operations_research::math_opt::ObjectiveProto *PROTOBUF_NONNULL mutable_objective()
double primal_bound() const
::operations_research::math_opt::SparseDoubleVectorProto *PROTOBUF_NONNULL mutable_linear_coefficients()
void set_maximize(bool value)
const ::operations_research::math_opt::TerminationProto & termination() const
void add_ids(::int64_t value)
void add_values(double value)
const ::operations_research::math_opt::ObjectiveBoundsProto & objective_bounds() const
::std::string *PROTOBUF_NONNULL add_names()
void add_lower_bounds(double value)
void add_upper_bounds(double value)
void add_ids(::int64_t value)
void add_integers(bool value)
int main(int argc, char **argv)
void InitGoogle(absl::string_view usage, int *argc, char ***argv, bool deprecated)
@ TERMINATION_REASON_OPTIMAL