25#include "Eigen/SparseCore"
26#include "absl/base/casts.h"
27#include "absl/container/flat_hash_map.h"
28#include "absl/status/status.h"
29#include "absl/status/statusor.h"
30#include "absl/strings/match.h"
31#include "absl/types/optional.h"
37#include "ortools/linear_solver/linear_solver.pb.h"
48using ::operations_research::glop::MPSReader;
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 MPModelProto lp_proto;
70 LOG(
INFO) <<
"Reading " << lp_file;
74 <<
"No variables in LP. Error reading file? " << lp_file;
78 return *std::move(result);
82 const std::string& mpmodel_proto_file,
bool include_names) {
83 MPModelProto lp_proto;
88 return *std::move(result);
92 const std::string& mps_file) {
94 return absl::InvalidArgumentError(
95 "'linear_program' has a quadratic objective");
108 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)
void ParseFile(const std::string &filename, bool presolve)
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)