25 #include "Eigen/SparseCore"
26 #include "absl/base/casts.h"
27 #include "absl/container/flat_hash_map.h"
28 #include "absl/log/check.h"
29 #include "absl/status/status.h"
30 #include "absl/status/statusor.h"
31 #include "absl/strings/match.h"
39 #include "ortools/linear_solver/linear_solver.pb.h"
52 if (absl::EndsWith(filename,
".mps") || absl::EndsWith(filename,
".mps.gz") ||
53 absl::EndsWith(filename,
".mps.bz2")) {
56 if (absl::EndsWith(filename,
".pb") ||
57 absl::EndsWith(filename,
".textproto") ||
58 absl::EndsWith(filename,
".json") ||
59 absl::EndsWith(filename,
".json.gz")) {
62 LOG(QFATAL) <<
"Invalid filename suffix in " << filename
63 <<
". Valid suffixes are .mps, .mps.gz, .pb, .textproto,"
64 <<
".json, and .json.gz";
69 absl::StatusOr<MPModelProto> lp_proto =
74 QCHECK_GT(lp_proto->variable_size(), 0)
75 <<
"No variables in LP. Error reading file? " << lp_file;
79 return *std::move(result);
83 const std::string& mpmodel_proto_file,
bool include_names) {
84 MPModelProto lp_proto;
85 QCHECK(
ReadFileToProto(mpmodel_proto_file, &lp_proto)) << mpmodel_proto_file;
89 return *std::move(result);
93 const std::string& mps_file) {
95 return absl::InvalidArgumentError(
96 "'linear_program' has a quadratic objective");
109 const std::string& mpmodel_proto_file) {
#define ASSIGN_OR_RETURN(lhs, rexpr)
#define RETURN_IF_ERROR(expr)
absl::Status WriteString(File *file, const absl::string_view &contents, int flags)
absl::Status SetBinaryProto(const absl::string_view &filename, const google::protobuf::Message &proto, int flags)
absl::Status Open(const absl::string_view &filename, const absl::string_view &mode, File **f, int flags)
absl::StatusOr< MPModelProto > MpsFileToMPModelProto(const std::string &mps_file)
absl::StatusOr< QuadraticProgram > QpFromMpModelProto(const MPModelProto &proto, bool relax_integer_variables, bool include_names)
absl::Status WriteQuadraticProgramToMPModelProto(const QuadraticProgram &quadratic_program, const std::string &mpmodel_proto_file)
absl::StatusOr< MPModelProto > QpToMpModelProto(const QuadraticProgram &qp)
bool IsLinearProgram(const QuadraticProgram &qp)
absl::Status WriteLinearProgramToMps(const QuadraticProgram &linear_program, const std::string &mps_file)
QuadraticProgram ReadMPModelProtoFileOrDie(const std::string &mpmodel_proto_file, bool include_names)
QuadraticProgram ReadQuadraticProgramOrDie(const std::string &filename, bool include_names)
QuadraticProgram ReadMpsLinearProgramOrDie(const std::string &lp_file, bool include_names)
absl::StatusOr< std::string > ExportModelAsMpsFormat(const MPModelProto &model, const MPModelExportOptions &options)
Outputs the current model (variables, constraints, objective) as a string encoded in MPS file format,...
bool ReadFileToProto(absl::string_view filename, google::protobuf::Message *proto)