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 "absl/types/optional.h"
30#include "ortools/linear_solver/linear_solver.pb.h"
101 constexpr double kInfinity = std::numeric_limits<double>::infinity();
106 Eigen::VectorXd::Constant(num_constraints, -
kInfinity);
108 Eigen::VectorXd::Constant(num_constraints,
kInfinity);
110 Eigen::VectorXd::Constant(num_variables, -
kInfinity);
171 const MPModelProto&
proto,
bool relax_integer_variables,
172 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)
absl::Status CanFitInMpModelProto(const QuadraticProgram &qp)
constexpr double kInfinity
void SetEigenMatrixFromTriplets(std::vector< Eigen::Triplet< double, int64_t > > triplets, Eigen::SparseMatrix< double, Eigen::ColMajor, int64_t > &matrix)
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
absl::optional< std::vector< std::string > > constraint_names
absl::optional< std::vector< std::string > > variable_names
QuadraticProgram(QuadraticProgram &&other) noexcept
QuadraticProgram(const QuadraticProgram &other)=default
Eigen::VectorXd constraint_lower_bounds
QuadraticProgram & operator=(const QuadraticProgram &other)=default
absl::optional< std::string > problem_name
QuadraticProgram(int64_t num_variables, int64_t num_constraints)
QuadraticProgram & operator=(QuadraticProgram &&other)
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
Eigen::VectorXd objective_vector