10#include <proxsuite-nlp/modelling/constraints.hpp>
14using proxsuite::nlp::ConstraintSetProductTpl;
17template <
typename Scalar>
19 std::vector<ConstraintSetBase<Scalar> *> components;
20 for (
size_t i = 0; i < constraints.size(); i++) {
21 components.push_back(constraints[i].set.get());
23 return ConstraintSetProductTpl<Scalar>{components, constraints.dims()};
33 using Base = WorkspaceBaseTpl<Scalar>;
34 using VecBool = Eigen::Matrix<bool, Eigen::Dynamic, 1>;
49 std::vector<VectorXs>
Lxs;
50 std::vector<VectorXs>
Lus;
51 std::vector<VectorXs>
Lvs;
52 std::vector<VectorXs>
Lds;
84 std::vector<VectorXs>
dxs;
85 std::vector<VectorXs>
dus;
86 std::vector<VectorXs>
dvs;
122 template <
typename T>
124 const WorkspaceTpl<T> &self);
126 template <
typename F>
128 const Scalar &mu, F &&strat) {
131 for (std::size_t t = 0; t <
nsteps; t++) {
132 const StageModel &stage = *problem.stages_[t];
137 const ConstraintStackTpl<Scalar> &term_stack = problem.term_cstrs_;
138 if (!term_stack.empty()) {
146template <
typename Scalar>
147struct fmt::formatter<
aligator::WorkspaceTpl<Scalar>> : fmt::ostream_formatter {
150#include "./workspace.hxx"
152#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
153#include "./workspace.txx"
Block matrix class, with a fixed-size number of row and column blocks.
auto getConstraintProductSet(const ConstraintStackTpl< Scalar > &constraints)
Base workspace struct for the algorithms.
std::size_t nsteps
Number of steps in the problem.
std::vector< VectorXs > trial_us
TrajOptDataTpl< Scalar > problem_data
Problem data.
std::vector< VectorXs > dyn_slacks
Dynamical infeasibility gaps.
std::vector< VectorXs > trial_xs
Workspace for solver SolverProxDDP.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
WorkspaceTpl(const WorkspaceTpl &)=delete
VectorXs state_dual_infeas
Dual infeasibility in the states for each stage of the problem.
gar::LQRProblemTpl< Scalar > lqr_problem
std::vector< VectorXs > dlams
std::vector< VectorXs > dvs
std::size_t nsteps
Number of steps in the problem.
ConstraintSetProductTpl< Scalar > ConstraintSetProduct
std::vector< CstrProxScaler > cstr_scalers
std::vector< VectorXs > trial_lams
std::vector< VectorXs > vs_plus
std::vector< VecBool > active_constraints
Masks for active constraint sets.
friend std::ostream & operator<<(std::ostream &oss, const WorkspaceTpl< T > &self)
std::vector< VectorXs > dxs
std::vector< VectorXs > lams_plus
std::vector< VectorXs > Lus
std::vector< VectorXs > shifted_constraints
Shifted constraints the projection operators should be applied to.
std::vector< VectorXs > prev_lams
std::vector< VectorXs > Lxs
WorkspaceTpl(const TrajOptProblemTpl< Scalar > &problem)
std::vector< VectorXs > Lvs
std::vector< VectorXs > lams_pdal
Eigen::Matrix< bool, Eigen::Dynamic, 1 > VecBool
VectorXs stage_cstr_violations
Constraint violation measures for each stage and constraint.
std::vector< BlkJacobianType > cstr_proj_jacs
Projected path constraint Jacobians (used to symmetrize the LQ subproblem)
std::vector< VectorXs > vs_pdal
std::vector< VectorXs > prev_vs
std::vector< VectorXs > prev_us
std::vector< VectorXs > dus
VectorXs stage_inner_crits
Subproblem termination criterion for each stage.
std::vector< VectorXs > stage_infeasibilities
Stagewise infeasibilities.
WorkspaceTpl & operator=(const WorkspaceTpl &)=delete
WorkspaceTpl & operator=(WorkspaceTpl &&)=default
std::vector< ConstraintSetProduct > cstr_product_sets
Cartesian products of the constraint sets of each stage.
BlkMatrix< MatrixXs, -1, 2 > BlkJacobianType
std::vector< VectorXs > cstr_lu_corr
Scalar inner_criterion
Overall subproblem termination criterion.
std::vector< VectorXs > prev_xs
std::vector< VectorXs > cstr_lx_corr
WorkspaceTpl(WorkspaceTpl &&)=default
ConstraintProximalScalerTpl< Scalar > CstrProxScaler
VectorXs control_dual_infeas
Dual infeasibility in the controls for each stage of the problem.
std::vector< VectorXs > trial_vs
std::vector< VectorXs > Lds
void configureScalers(const TrajOptProblemTpl< Scalar > &problem, const Scalar &mu, F &&strat)
Struct describing a stage of a constrained LQ problem.