11#include < iostream>
22#include " proxsuite/proxqp/sparse/sparse.hpp" // get the sparse backend of ProxQP
33#include " proxsuite/proxqp/dense/dense.hpp" // get the dense backend of ProxQP
4- #include < proxsuite/proxqp/utils/random_qp_problems.hpp> // used for generating a random convex qp
4+ #include " proxsuite/proxqp/utils/random_qp_problems.hpp" // used for generating a random convex qp
55
66using namespace proxsuite ::proxqp;
77using T = double ;
8+ using Mat = dense::Mat<T>;
9+ using Vec = dense::Vec<T>;
810
911int
1012main ()
@@ -15,13 +17,17 @@ main()
1517 T p = 0.15 ; // level of sparsity
1618 T conditioning = 10.0 ; // conditioning level for H
1719 auto H = utils::rand::sparse_positive_definite_rand (n, conditioning, p);
18- auto g = utils::rand::vector_rand<T>(n);
20+ Mat H_dense = Mat (H);
21+ Vec g = utils::rand::vector_rand<T>(n);
1922 auto A = utils::rand::sparse_matrix_rand<T>(n_eq, n, p);
23+ Mat A_dense = Mat (A);
2024 auto C = utils::rand::sparse_matrix_rand<T>(n_in, n, p);
21- auto x_sol = utils::rand::vector_rand<T>(n);
22- auto b = (A * x_sol).eval ();
23- auto l = (C * x_sol).eval ();
24- auto u = (l.array () + 10 ).matrix ().eval ();
25+ Mat C_dense = Mat (C);
26+ Vec x_sol = utils::rand::vector_rand<T>(n);
27+ Vec b = A * x_sol;
28+ Vec l = C * x_sol;
29+ Vec u = (l.array () + 10 ).matrix ();
30+
2531 // Solve the problem using the sparse backend
2632 Results<T> results_sparse_solver =
2733 sparse::solve<T, isize>(H, g, A, b, C, l, u);
3238 std::cout << " optimal z from sparse solver: " << results_sparse_solver.z
3339 << std::endl;
3440 // Solve the problem using the dense backend
35- Results<T> results_dense_solver = dense::solve<T>(
36- dense::Mat<T>(H), g, dense::Mat<T>(A), b, dense::Mat<T>(C), u, l);
41+ Results<T> results_dense_solver =
42+ dense::solve<T>(H_dense, g, A_dense, b, C_dense, l, u);
43+
3744 // print an optimal solution x,y and z
3845 std::cout << " optimal x from dense solver: " << results_dense_solver.x
3946 << std::endl;
0 commit comments