16 : constraints_(&constraints), mu_(&mu),
17 scalingMatrix_(constraints.dims()) {
18 scalingMatrix_.
matrix().setOnes();
21 std::size_t
size()
const {
return constraints_->size(); }
24 scalingMatrix_[j].array() = w;
28 template <
typename D>
void setWeights(
const Eigen::MatrixBase<D> &weights) {
29 EIGEN_STATIC_ASSERT_VECTOR_ONLY(D)
30 for (
size_t i = 0; i < constraints_->size(); i++) {
31 scalingMatrix_[i].array() = weights[long(i)];
36 template <
typename D>
auto apply(
const Eigen::MatrixBase<D> &m)
const {
40 template <
typename D>
auto applyInverse(
const Eigen::MatrixBase<D> &m)
const {
46 EIGEN_STATIC_ASSERT_VECTOR_ONLY(D)
47 return m.dot(
apply(m));
51 return mu() * scalingMatrix_.
matrix().asDiagonal();
55 using BlkVec =
BlkMatrix<VectorXs, -1, 1>;
56 Scalar mu()
const {
return *mu_; }
61 BlkVec scalingMatrix_;
Block matrix class, with a fixed-size number of row and column blocks.
Weighting strategy for the constraints in a stack.
void setWeight(const Scalar w, std::size_t j)
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
Scalar weightedNorm(const Eigen::MatrixBase< D > &m) const
auto apply(const Eigen::MatrixBase< D > &m) const
Apply weighted penalty matrix.
void setWeights(const Eigen::MatrixBase< D > &weights)
Set all weights at once.
ConstraintProximalScalerTpl(const ConstraintStack &constraints, const Scalar &mu)
ConstraintStackTpl< Scalar > ConstraintStack
auto applyInverse(const Eigen::MatrixBase< D > &m) const