aligator  0.6.1
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
history-callback.hpp
Go to the documentation of this file.
1
2#pragma once
3
7
8namespace aligator {
9
11template <typename Scalar> struct HistoryCallbackTpl : CallbackBaseTpl<Scalar> {
12 using Workspace = WorkspaceBaseTpl<Scalar>;
13 using Results = ResultsBaseTpl<Scalar>;
14 HistoryCallbackTpl(bool store_pd_vars = false, bool store_values = true,
15 bool store_residuals = true)
16 : store_primal_dual_vars_(store_pd_vars), store_values_(store_values),
17 store_residuals_(store_residuals) {}
18
20
21 struct {
22 std::vector<std::vector<VectorXs>> xs;
23 std::vector<std::vector<VectorXs>> us;
24 std::vector<std::vector<VectorXs>> lams;
25 std::vector<Scalar> values;
26 std::vector<Scalar> merit_values;
27 std::vector<Scalar> prim_infeas;
28 std::vector<Scalar> dual_infeas;
29 std::vector<Scalar> inner_crits;
30 std::vector<std::size_t> al_index;
31 std::vector<Scalar> prim_tols;
32 std::vector<Scalar> dual_tols;
34
35 void call(const Workspace & /*workspace*/, const Results &results) {
37 storage.xs.push_back(results.xs);
38 storage.us.push_back(results.us);
39 // storage.lams.push_back(results.lams);
40 }
41 if (store_values_) {
42 storage.values.push_back(results.traj_cost_);
43 storage.merit_values.push_back(results.merit_value_);
44 }
45 if (store_residuals_) {
46 storage.prim_infeas.push_back(results.prim_infeas);
47 storage.dual_infeas.push_back(results.dual_infeas);
48 }
49 // if (auto w = dynamic_cast<const WorkspaceTpl<Scalar> *>(&workspace)) {
50 // storage.inner_crits.push_back(w->inner_criterion);
51 // }
52 // if (auto r = dynamic_cast<const ResultsTpl<Scalar> *>(&results)) {
53 // storage.al_index.push_back(r->al_iter);
54 // }
55 }
56
60};
61
62} // namespace aligator
63
64#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
65#include "./history-callback.txx"
66#endif
Main package namespace.
Base callback class.
Store the history of results.
std::vector< Scalar > prim_tols
std::vector< Scalar > dual_tols
std::vector< Scalar > prim_infeas
std::vector< std::size_t > al_index
HistoryCallbackTpl(bool store_pd_vars=false, bool store_values=true, bool store_residuals=true)
void call(const Workspace &, const Results &results)
std::vector< std::vector< VectorXs > > xs
std::vector< Scalar > dual_infeas
std::vector< Scalar > merit_values
std::vector< std::vector< VectorXs > > us
struct aligator::HistoryCallbackTpl::@0 storage
std::vector< Scalar > inner_crits
std::vector< std::vector< VectorXs > > lams
Base workspace struct for the algorithms.