15template <
typename Scalar>
struct history_callback :
base_callback<Scalar> {
16 history_callback(
bool store_pd_vars =
true,
bool store_values =
true,
17 bool store_residuals =
true)
18 : store_primal_dual_vars_(store_pd_vars), store_values_(store_values),
19 store_residuals_(store_residuals) {}
24 std::vector<VectorXs> xs;
25 std::vector<VectorXs> lams;
26 std::vector<VectorOfRef> lams_view;
27 std::vector<Scalar> values;
28 std::vector<Scalar> prim_infeas;
29 std::vector<Scalar> dual_infeas;
30 std::vector<VectorXs> ls_alphas;
31 std::vector<VectorXs> ls_values;
34 std::vector<Scalar> dmerit_dir;
39 if (store_primal_dual_vars_) {
40 storage.xs.push_back(results.x_opt);
41 storage.lams.push_back(results.data_lams_opt);
42 storage.lams_view.push_back(results.lams_opt);
45 storage.values.push_back(results.value);
46 if (store_residuals_) {
50 const std::size_t asize = workspace.ls_alphas.size();
51 storage.ls_alphas.emplace_back(
52 Eigen::Map<const VectorXs>(&workspace.ls_alphas[0], asize));
53 storage.ls_values.emplace_back(
54 Eigen::Map<const VectorXs>(&workspace.ls_values[0], asize));
55 storage.alphas.push_back(workspace.
alpha_opt);
56 storage.dmerit_dir.push_back(workspace.
dmerit_dir);
60 const bool store_primal_dual_vars_;
61 const bool store_values_;
62 const bool store_residuals_;
std::vector< Scalar > alphas
Linesearch step-lengths.