aligator  0.16.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
linesearch-base.hpp
Go to the documentation of this file.
1
4#pragma once
5
6#include <fmt/format.h>
7#include <ostream>
8
9namespace aligator {
12
13template <typename T> struct LinesearchOptions {
15 : armijo_c1(1e-4)
16 , wolfe_c2(0.9)
17 , dphi_thresh(1e-13)
18 , alpha_min(1e-6)
19 , max_num_steps(20)
21 , contraction_min(0.5)
22 , contraction_max(0.8) {}
27 std::size_t max_num_steps;
31 friend std::ostream &operator<<(std::ostream &oss,
32 const LinesearchOptions &self) {
33 oss << "{";
34 oss << fmt::format("armijo_c1 = {:.3e}", self.armijo_c1);
35 oss << ", "
36 << fmt::format("contraction_min = {:.3e}", self.contraction_min);
37 oss << ", "
38 << fmt::format("contraction_max = {:.3e}", self.contraction_max);
39 oss << "}";
40 return oss;
41 }
42};
43
46template <typename T> class Linesearch {
47public:
49 explicit Linesearch(const Linesearch::Options &options) noexcept
50 : options_(options) {}
51 ~Linesearch() = default;
52
55 T phi;
57 bool valid;
59 : alpha(0.)
60 , phi(0.)
61 , dphi(0.)
62 , valid(false) {}
64 : alpha(a)
65 , phi(v)
66 , dphi(0.)
67 , valid(true) {}
68 FunctionSample(T a, T v, T g)
69 : alpha(a)
70 , phi(v)
71 , dphi(g)
72 , valid(true) {}
73 };
74
75 void setOptions(const Linesearch::Options &options) { options_ = options; }
76
77 void reset() {}
78
80};
81} // namespace aligator
LinesearchOptions< Scalar > Options
void setOptions(const Linesearch::Options &options)
Linesearch(const Linesearch::Options &options) noexcept
Linesearch::Options options_
Main package namespace.
friend std::ostream & operator<<(std::ostream &oss, const LinesearchOptions &self)