22 #include "Eigen/SparseCore"
23 #include "gmock/gmock.h"
24 #include "gtest/gtest.h"
29 using ::testing::ElementsAre;
31 constexpr
double kInfinity = std::numeric_limits<double>::infinity();
39 std::vector<Eigen::Triplet<double, int64_t>> triplets = {
40 {0, 0, 2}, {0, 1, 1}, {0, 2, 1}, {0, 3, 2}, {1, 0, 1},
41 {1, 2, 1}, {2, 0, 4}, {3, 2, 1.5}, {3, 3, -1}};
50 const double objective_sign = maximize ? -1 : 1;
53 ElementsAre(5.5, -2, -1, 1));
64 {{2, 1, 1, 2}, {1, 0, 1, 0}, {4, 0, 0, 0}, {0, 0, 1.5, -1}}));
131 Eigen::DiagonalMatrix<double, Eigen::Dynamic> ConstructDiagonal(
132 const std::vector<double>& vec) {
133 Eigen::DiagonalMatrix<double, Eigen::Dynamic> diag;
134 diag.resize(vec.size());
135 for (
int i = 0; i < vec.size(); ++i) {
136 diag.diagonal()[i] = vec[i];
151 std::vector<Eigen::Triplet<double, int64_t>> constraint_triplets = {
152 {0, 0, 1}, {0, 1, 1}};
154 constraint_triplets.end());
167 std::vector<Eigen::Triplet<double, int64_t>> constraint_triplets = {
168 {0, 0, 1}, {0, 1, -1}};
170 constraint_triplets.end());
183 std::vector<Eigen::Triplet<double, int64_t>> constraint_triplets = {
184 {0, 0, 1}, {0, 2, -1}, {1, 0, 2}};
186 constraint_triplets.end());
271 const double objective_sign = maximize ? -1 : 1;
277 EigenArrayEq<double>({4, 1}));
286 const Eigen::SparseMatrix<double, Eigen::ColMajor, int64_t>& sparse_mat) {
287 return ::Eigen::ArrayXXd(::Eigen::MatrixXd(sparse_mat));
QuadraticProgram SmallDualInfeasibleLp()
QuadraticProgram TestDiagonalQp2()
::Eigen::ArrayXXd ToDense(const Eigen::SparseMatrix< double, Eigen::ColMajor, int64_t > &sparse_mat)
QuadraticProgram CorrelationClusteringStarLp()
QuadraticProgram TestDiagonalQp3()
constexpr double kInfinity
QuadraticProgram TinyLp()
void VerifyTestLp(const QuadraticProgram &qp, bool maximize)
QuadraticProgram LpWithoutConstraints()
QuadraticProgram SmallInvalidProblemLp()
void VerifyTestDiagonalQp1(const QuadraticProgram &qp, bool maximize)
QuadraticProgram SmallPrimalDualInfeasibleLp()
QuadraticProgram TestLp()
QuadraticProgram SmallInitializationLp()
QuadraticProgram SmallPrimalInfeasibleLp()
QuadraticProgram SmallInconsistentVariableBoundsLp()
QuadraticProgram TestDiagonalQp1()
QuadraticProgram CorrelationClusteringLp()
constexpr double kInfinity
Eigen::VectorXd variable_upper_bounds
Eigen::VectorXd variable_lower_bounds
double objective_scaling_factor
Eigen::VectorXd constraint_lower_bounds
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