3#ifndef pRC_ALGORITHMS_OPTIMIZER_LINE_SEARCH_BRACKETING_H
4#define pRC_ALGORITHMS_OPTIMIZER_LINE_SEARCH_BRACKETING_H
19 static constexpr Bool defaultStrongWolfeConditions()
24 static constexpr Float<> defaultDecreasingStepScale()
29 static constexpr Float<> defaultIncreasingStepScale()
34 static constexpr Size defaultMaxIterations()
39 static constexpr Float<> defaultC1()
44 static constexpr Float<> defaultC2()
67 return mStrongWolfeConditions;
70 template<
class T = Float<>>
73 return cast<T>(mDecreasingStepScale);
76 template<
class T = Float<>>
79 return cast<T>(mIncreasingStepScale);
84 return mMaxIterations;
87 template<
class T = Float<>>
88 constexpr decltype(
auto)
c1()
const
93 template<
class T = Float<>>
94 constexpr decltype(
auto)
c2()
const
99 template<
class X, If<IsTensor<X>> = 0,
100 class T =
typename X::Type::Value, If<IsFloat<T>> = 0,
class F,
101 If<IsInvocable<F, X const &, X &>> = 0,
102 If<IsFloat<ResultOf<F, X const &, X &>>> = 0,
class FC,
103 If<IsInvocable<FC, X const &>> = 0,
104 If<IsConvertible<ResultOf<FC, X const &>, X>> = 0>
126 "LS-Bracketing: Minimum alpha > Maximum alpha.");
159 "First Wolfe condition not satisfied, trying again");
168 "Second Wolfe condition not satisfied, trying again");
178 "Strong Wolfe condition not satisfied, trying "
190 template<
class X, If<IsTensor<X>> = 0,
191 class T =
typename X::Type::Value, If<IsFloat<T>> = 0,
class F,
192 If<IsInvocable<F, X const &, X &>> = 0,
193 If<IsFloat<ResultOf<F, X const &, X &>>> = 0>
201 [](
auto &&
x) ->
decltype(
auto)
209 Bool const mStrongWolfeConditions;
210 Float<> const mDecreasingStepScale;
211 Float<> const mIncreasingStepScale;
212 Size const mMaxIterations;
static void info(Xs &&...args)
Definition log.hpp:27
static void debug(Xs &&...args)
Definition log.hpp:33
static void error(Xs &&...args)
Definition log.hpp:14
Definition bracketing.hpp:15
bool Bool
Definition type_traits.hpp:18
static constexpr X min(X &&a)
Definition min.hpp:13
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
Size Index
Definition type_traits.hpp:21
std::size_t Size
Definition type_traits.hpp:20
std::invoke_result_t< F, Args... > ResultOf
Definition type_traits.hpp:140
static constexpr auto abs(Complex< T > const &a)
Definition abs.hpp:12
constexpr auto cDebugLevel
Definition config.hpp:46
static constexpr auto scalarProduct(Complex< TA > const &a, Complex< TB > const &b)
Definition scalar_product.hpp:13
Definition bracketing.hpp:17
constexpr decltype(auto) decreasingStepScale() const
Definition bracketing.hpp:71
constexpr auto strongWolfeConditions() const
Definition bracketing.hpp:65
constexpr decltype(auto) c2() const
Definition bracketing.hpp:94
constexpr decltype(auto) increasingStepScale() const
Definition bracketing.hpp:77
constexpr auto operator()(X &x, ResultOf< F, X const &, X & > &f, X &g, typename ResultOf< ScalarProduct, X, X >::Type &d, F &&function, X const &p, T alpha=identity< T >(), T const alphaMin=zero< T >(), T const alphaMax=identity< T >(NumericLimits< T >::max())) const
Definition bracketing.hpp:194
constexpr auto operator()(X &x, ResultOf< F, X const &, X & > &f, X &g, typename ResultOf< ScalarProduct, X, X >::Type &d, F &&function, FC &&constraint, X const &p, T alpha=identity< T >(), T const alphaMin=zero< T >(), T const alphaMax=identity< T >(NumericLimits< T >::max())) const
Definition bracketing.hpp:105
constexpr Bracketing(Bool const strongWolfeConditions=defaultStrongWolfeConditions(), Float<> const decreasingStepScale=defaultDecreasingStepScale(), Float<> const increasingStepScale=defaultIncreasingStepScale(), Size const maxIterations=defaultMaxIterations(), Float<> const c1=defaultC1(), Float<> const c2=defaultC2())
Definition bracketing.hpp:50
constexpr auto maxIterations() const
Definition bracketing.hpp:82
constexpr decltype(auto) c1() const
Definition bracketing.hpp:88