aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
workspace.hpp
Go to the documentation of this file.
1
4#pragma once
5
9
11
12namespace aligator {
13
14template <typename Scalar>
16 std::vector<xyz::polymorphic<ConstraintSetTpl<Scalar>>> components;
17 for (size_t i = 0; i < constraints.size(); i++) {
18 components.push_back(constraints.sets[i]);
19 }
20 return ConstraintSetProductTpl<Scalar>{components, constraints.dims()};
21}
22
27template <typename Scalar> struct WorkspaceTpl : WorkspaceBaseTpl<Scalar> {
31 using VecBool = Eigen::Matrix<bool, Eigen::Dynamic, 1>;
34 using BlkJacobianType = BlkMatrix<MatrixXs, -1, 2>; // jacobians
36
37 using Base::dyn_slacks;
38 using Base::nsteps;
40
41 LqrProblemType lqr_problem; //< Linear-quadratic subproblem
42
45 std::vector<VectorXs> Lxs; //< State gradients
46 std::vector<VectorXs> Lus; //< Control gradients
47 std::vector<VectorXs> Lvs; //< Path multiplier gradients
48 std::vector<VectorXs> Lds; //< Costate gradients
50
53 using Base::trial_us;
54 using Base::trial_xs;
55 std::vector<VectorXs> trial_vs;
56 std::vector<VectorXs> trial_lams;
58
61 std::vector<VectorXs> lams_plus;
62 std::vector<VectorXs> lams_pdal;
63 std::vector<VectorXs> vs_plus;
64 std::vector<VectorXs> vs_pdal;
66
68 std::vector<VectorXs> shifted_constraints;
69 std::vector<VectorXs> cstr_lx_corr;
70 std::vector<VectorXs> cstr_lu_corr;
72 std::vector<BlkJacobianType> cstr_proj_jacs;
74 std::vector<VecBool> active_constraints;
76 std::vector<ConstraintSetProduct> cstr_product_sets;
77
80 std::vector<VectorXs> dxs;
81 std::vector<VectorXs> dus;
82 std::vector<VectorXs> dvs;
83 std::vector<VectorXs> dlams;
85
88 std::vector<VectorXs> prev_xs;
89 std::vector<VectorXs> prev_us;
90 std::vector<VectorXs> prev_vs;
91 std::vector<VectorXs> prev_lams;
93
99 std::vector<VectorXs> stage_infeasibilities;
105 Scalar inner_criterion = 0.;
106
108 : Base() {}
110
111 WorkspaceTpl(const WorkspaceTpl &) = delete;
113
116
118 shared_ptr<StageDataTpl<Scalar>> data);
119
120 template <typename T>
121 friend std::ostream &operator<<(std::ostream &oss,
122 const WorkspaceTpl<T> &self);
123};
124
125template <typename Scalar>
126std::ostream &operator<<(std::ostream &oss, const WorkspaceTpl<Scalar> &self) {
127 return oss << fmt::format("{}", self);
128}
129
130} // namespace aligator
131
132template <typename Scalar>
133struct fmt::formatter<aligator::WorkspaceTpl<Scalar>> {
134 constexpr auto parse(format_parse_context &ctx) const
135 -> decltype(ctx.begin()) {
136 return ctx.end();
137 }
138
139 auto format(const aligator::WorkspaceTpl<Scalar> &ws,
140 format_context &ctx) const -> decltype(ctx.out()) {
141 return fmt::format_to(ctx.out(),
142 "Workspace {{"
143 "\n nsteps: \t{:d}"
144 "\n n_multipliers:\t{:d}"
145 "\n}}",
146 ws.nsteps, ws.lams_plus.size());
147 }
148};
149
150#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
151#include "./workspace.txx"
152#endif
Block matrix class, with a fixed-size number of row and column blocks.
Main package namespace.
std::ostream & operator<<(std::ostream &oss, const ExplicitDynamicsDataTpl< S > &self)
auto getConstraintProductSet(const ConstraintStackTpl< Scalar > &constraints)
Definition workspace.hpp:15
Cartesian product of multiple constraint sets. This class makes computing multipliers and Jacobian ma...
Convenience class to manage a stack of constraints.
const std::vector< long > & dims() const
Get the set of dimensions for each constraint in the stack.
std::size_t size() const
std::vector< PolySet > sets
Data struct for stage models StageModelTpl.
A stage in the control problem.
Trajectory optimization problem.
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.
Definition workspace.hpp:27
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
gar::LqrProblemTpl< Scalar > LqrProblemType
Definition workspace.hpp:35
WorkspaceTpl(const WorkspaceTpl &)=delete
VectorXs state_dual_infeas
Dual infeasibility in the states for each stage of the problem.
std::vector< VectorXs > dlams
Definition workspace.hpp:83
std::vector< VectorXs > dvs
Definition workspace.hpp:82
ConstraintSetProductTpl< Scalar > ConstraintSetProduct
Definition workspace.hpp:33
LqrProblemType lqr_problem
Definition workspace.hpp:41
std::vector< VectorXs > trial_lams
Definition workspace.hpp:56
std::vector< VectorXs > vs_plus
Definition workspace.hpp:63
std::vector< VecBool > active_constraints
Masks for active constraint sets.
Definition workspace.hpp:74
friend std::ostream & operator<<(std::ostream &oss, const WorkspaceTpl< T > &self)
std::vector< VectorXs > dxs
Definition workspace.hpp:80
std::vector< VectorXs > lams_plus
Definition workspace.hpp:61
std::vector< VectorXs > Lus
Definition workspace.hpp:46
std::vector< VectorXs > shifted_constraints
Shifted constraints the projection operators should be applied to.
Definition workspace.hpp:68
std::vector< VectorXs > prev_lams
Definition workspace.hpp:91
std::vector< VectorXs > Lxs
Definition workspace.hpp:45
WorkspaceTpl(const TrajOptProblemTpl< Scalar > &problem)
std::vector< VectorXs > Lvs
Definition workspace.hpp:47
std::vector< VectorXs > lams_pdal
Definition workspace.hpp:62
Eigen::Matrix< bool, Eigen::Dynamic, 1 > VecBool
Definition workspace.hpp:31
VectorXs stage_cstr_violations
Constraint violation measures for each stage and constraint.
Definition workspace.hpp:97
std::vector< BlkJacobianType > cstr_proj_jacs
Projected path constraint Jacobians (used to symmetrize the LQ subproblem)
Definition workspace.hpp:72
std::vector< VectorXs > vs_pdal
Definition workspace.hpp:64
std::vector< VectorXs > prev_vs
Definition workspace.hpp:90
std::vector< VectorXs > prev_us
Definition workspace.hpp:89
std::vector< VectorXs > dus
Definition workspace.hpp:81
VectorXs stage_inner_crits
Subproblem termination criterion for each stage.
Definition workspace.hpp:95
StageModelTpl< Scalar > StageModel
Definition workspace.hpp:29
std::vector< VectorXs > stage_infeasibilities
Stagewise infeasibilities.
Definition workspace.hpp:99
WorkspaceTpl & operator=(const WorkspaceTpl &)=delete
WorkspaceTpl & operator=(WorkspaceTpl &&)=default
WorkspaceBaseTpl< Scalar > Base
Definition workspace.hpp:30
std::vector< ConstraintSetProduct > cstr_product_sets
Cartesian products of the constraint sets of each stage.
Definition workspace.hpp:76
BlkMatrix< MatrixXs, -1, 2 > BlkJacobianType
Definition workspace.hpp:34
gar::LqrKnotTpl< Scalar > KnotType
Definition workspace.hpp:32
std::vector< VectorXs > cstr_lu_corr
Definition workspace.hpp:70
Scalar inner_criterion
Overall subproblem termination criterion.
std::vector< VectorXs > prev_xs
Definition workspace.hpp:88
std::vector< VectorXs > cstr_lx_corr
Definition workspace.hpp:69
WorkspaceTpl(WorkspaceTpl &&)=default
void cycleAppend(const TrajOptProblemTpl< Scalar > &problem, shared_ptr< StageDataTpl< Scalar > > data)
VectorXs control_dual_infeas
Dual infeasibility in the controls for each stage of the problem.
std::vector< VectorXs > trial_vs
Definition workspace.hpp:55
std::vector< VectorXs > Lds
Definition workspace.hpp:48
Struct describing a stage of a constrained LQ problem.