14 #ifndef PDLP_QUADRATIC_PROGRAM_H_
15 #define PDLP_QUADRATIC_PROGRAM_H_
25 #include "Eigen/SparseCore"
26 #include "absl/status/status.h"
27 #include "absl/status/statusor.h"
28 #include "ortools/linear_solver/linear_solver.pb.h"
100 constexpr
double kInfinity = std::numeric_limits<double>::infinity();
105 Eigen::VectorXd::Constant(num_constraints, -
kInfinity);
107 Eigen::VectorXd::Constant(num_constraints,
kInfinity);
109 Eigen::VectorXd::Constant(num_variables, -
kInfinity);
170 const MPModelProto&
proto,
bool relax_integer_variables,
171 bool include_names =
false);
195 std::vector<Eigen::Triplet<double, int64_t>> triplets,
196 Eigen::SparseMatrix<double, Eigen::ColMajor, int64_t>& matrix);
205 int64_t largest_ok_size);
212 std::vector<Eigen::Triplet<double, int64_t>>& triplets);
void CombineRepeatedTripletsInPlace(std::vector< Eigen::Triplet< double, int64_t >> &triplets)
absl::Status TestableCanFitInMpModelProto(const QuadraticProgram &qp, const int64_t largest_ok_size)
absl::StatusOr< QuadraticProgram > QpFromMpModelProto(const MPModelProto &proto, bool relax_integer_variables, bool include_names)
absl::Status ValidateQuadraticProgramDimensions(const QuadraticProgram &qp)
void SetEigenMatrixFromTriplets(std::vector< Eigen::Triplet< double, int64_t >> triplets, Eigen::SparseMatrix< double, Eigen::ColMajor, int64_t > &matrix)
absl::Status CanFitInMpModelProto(const QuadraticProgram &qp)
constexpr double kInfinity
bool HasValidBounds(const QuadraticProgram &qp)
absl::StatusOr< MPModelProto > QpToMpModelProto(const QuadraticProgram &qp)
bool IsLinearProgram(const QuadraticProgram &qp)
Eigen::VectorXd variable_upper_bounds
Eigen::VectorXd variable_lower_bounds
double objective_scaling_factor
double ApplyObjectiveScalingAndOffset(double objective) const
QuadraticProgram(QuadraticProgram &&other) noexcept
std::optional< std::vector< std::string > > constraint_names
QuadraticProgram(const QuadraticProgram &other)=default
Eigen::VectorXd constraint_lower_bounds
QuadraticProgram(int64_t num_variables, int64_t num_constraints)
std::optional< std::string > problem_name
QuadraticProgram & operator=(const QuadraticProgram &other)=default
std::optional< std::vector< std::string > > variable_names
void ResizeAndInitialize(int64_t num_variables, int64_t num_constraints)
Eigen::SparseMatrix< double, Eigen::ColMajor, int64_t > constraint_matrix
std::optional< Eigen::DiagonalMatrix< double, Eigen::Dynamic > > objective_matrix
Eigen::VectorXd constraint_upper_bounds
QuadraticProgram & operator=(QuadraticProgram &&other)
Eigen::VectorXd objective_vector