9#include <Eigen/SparseCore>
11#include "sleipnir/optimization/solver/util/sparse_inf_norms.hpp"
20template <
typename Scalar>
60 constexpr Scalar g_max(100);
62 f = std::min(Scalar(1), g_max / g.template lpNorm<Eigen::Infinity>());
79 constexpr Scalar g_max(100);
81 f = std::min(Scalar(1), g_max / g.template lpNorm<Eigen::Infinity>());
82 c_e = (g_max / sparse_inf_norms(A_e).array()).min(Scalar(1)).matrix();
102 constexpr Scalar g_max(100);
104 f = std::min(Scalar(1), g_max / g.template lpNorm<Eigen::Infinity>());
105 c_e = (g_max / sparse_inf_norms(A_e).array()).min(Scalar(1)).matrix();
106 c_i = (g_max / sparse_inf_norms(A_i).array()).min(Scalar(1)).matrix();
113 return f == Scalar(1) &&
c_e.size() == 0 &&
c_i.size() == 0;
Definition problem_scaling.hpp:21
ProblemScaling(const DenseVector &g, const SparseMatrix &A_e, const SparseMatrix &A_i)
Definition problem_scaling.hpp:100
ProblemScaling()=default
Constructs identity problem scaling.
Scalar f
Cost scaling factor d_f.
Definition problem_scaling.hpp:30
bool is_identity() const
Definition problem_scaling.hpp:112
Eigen::VectorX< Scalar > DenseVector
Type alias for dense vector.
Definition problem_scaling.hpp:23
DenseVector c_i
Inequality constraint scaling factors d_cᵢ.
Definition problem_scaling.hpp:36
DenseVector c_e
Equality constraint scaling factors d_cₑ.
Definition problem_scaling.hpp:33
ProblemScaling(Scalar f, DenseVector c_e, DenseVector c_i)
Definition problem_scaling.hpp:46
ProblemScaling(const DenseVector &g, const SparseMatrix &A_e)
Definition problem_scaling.hpp:78
Eigen::SparseMatrix< Scalar > SparseMatrix
Type alias for sparse matrix.
Definition problem_scaling.hpp:25
ProblemScaling(const DenseVector &g)
Definition problem_scaling.hpp:59
Eigen::SparseVector< Scalar > SparseVector
Type alias for sparse vector.
Definition problem_scaling.hpp:27