22#include "Eigen/SparseCore"
23#include "gmock/gmock.h"
28using ::testing::ElementsAre;
30constexpr double kInfinity = std::numeric_limits<double>::infinity();
38 std::vector<Eigen::Triplet<double, int64_t>> triplets = {
39 {0, 0, 2}, {0, 1, 1}, {0, 2, 1}, {0, 3, 2}, {1, 0, 1},
40 {1, 2, 1}, {2, 0, 4}, {3, 2, 1.5}, {3, 3, -1}};
49 const double objective_sign = maximize ? -1 : 1;
52 ElementsAre(5.5, -2, -1, 1));
63 {{2, 1, 1, 2}, {1, 0, 1, 0}, {4, 0, 0, 0}, {0, 0, 1.5, -1}}));
130Eigen::DiagonalMatrix<double, Eigen::Dynamic> ConstructDiagonal(
131 const std::vector<double>& vec) {
132 Eigen::DiagonalMatrix<double, Eigen::Dynamic> diag;
133 diag.resize(vec.size());
134 for (
int i = 0; i < vec.size(); ++i) {
135 diag.diagonal()[i] = vec[i];
150 std::vector<Eigen::Triplet<double, int64_t>> constraint_triplets = {
151 {0, 0, 1}, {0, 1, 1}};
153 constraint_triplets.end());
166 std::vector<Eigen::Triplet<double, int64_t>> constraint_triplets = {
167 {0, 0, 1}, {0, 1, -1}};
169 constraint_triplets.end());
182 std::vector<Eigen::Triplet<double, int64_t>> constraint_triplets = {
183 {0, 0, 1}, {0, 2, -1}, {1, 0, 2}};
185 constraint_triplets.end());
270 const double objective_sign = maximize ? -1 : 1;
276 EigenArrayEq<double>({4, 1}));
285 const Eigen::SparseMatrix<double, Eigen::ColMajor, int64_t>& sparse_mat) {
286 return ::Eigen::ArrayXXd(::Eigen::MatrixXd(sparse_mat));
QuadraticProgram SmallDualInfeasibleLp()
QuadraticProgram TestDiagonalQp2()
::Eigen::ArrayXXd ToDense(const Eigen::SparseMatrix< double, Eigen::ColMajor, int64_t > &sparse_mat)
void VerifyTestQp(const QuadraticProgram &qp, bool maximize)
QuadraticProgram CorrelationClusteringStarLp()
QuadraticProgram TestDiagonalQp3()
constexpr double kInfinity
QuadraticProgram TinyLp()
void VerifyTestLp(const QuadraticProgram &qp, bool maximize)
QuadraticProgram LpWithoutConstraints()
QuadraticProgram SmallInvalidProblemLp()
QuadraticProgram SmallPrimalDualInfeasibleLp()
QuadraticProgram TestLp()
QuadraticProgram SmallInitializationLp()
QuadraticProgram SmallPrimalInfeasibleLp()
QuadraticProgram SmallInconsistentVariableBoundsLp()
QuadraticProgram TestDiagonalQp1()
QuadraticProgram CorrelationClusteringLp()
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