cMHN 1.2
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
optimize.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_ALGORITHMS_OPTIMIZE_H
4#define pRC_ALGORITHMS_OPTIMIZE_H
5
10
11namespace pRC
12{
13 template<class Optimizer, class XX, class FF, class FC, class VT>
14 requires IsInvocable<Optimizer, XX, FF, FC, VT>
15 static inline constexpr auto optimize(Optimizer &&optimizer, XX &&x,
16 FF &&function, FC &&callback,
17 VT const &tolerance =
19 {
20 return forward<Optimizer>(optimizer)(forward<XX>(x),
21 forward<FF>(function), forward<FC>(callback), tolerance);
22 }
23
24 template<class Optimizer, class XX, class FF, class VT>
25 requires IsInvocable<Optimizer, XX, FF,
26 void(RemoveConstReference<ResultOf<Eval, XX>> const), VT>
27 static inline constexpr auto optimize(Optimizer &&optimizer, XX &&x,
28 FF &&function,
29 VT const &tolerance =
31 {
32 return optimize(
33 forward<Optimizer>(optimizer), forward<XX>(x),
34 forward<FF>(function),
35 [](auto &&)
36 {
37 },
38 tolerance);
39 }
40
41 template<class Optimizer, class XX, class FF, class FC, class VT>
42 requires IsInvocable<Optimizer, XX, FF, FC, VT>
43 static inline constexpr auto optimize(XX &&x, FF &&function, FC &&callback,
44 VT const &tolerance =
46 {
47 return optimize(Optimizer(), forward<XX>(x), forward<FF>(function),
48 forward<FC>(callback), tolerance);
49 }
50
51 template<class Optimizer, class XX, class FF, class VT>
52 requires IsInvocable<Optimizer, XX, FF,
53 void(RemoveConstReference<ResultOf<Eval, XX>> const), VT>
54 static inline constexpr auto optimize(XX &&x, FF &&function,
55 VT const &tolerance =
57 {
58 return optimize(Optimizer(), forward<XX>(x), forward<FF>(function),
59 tolerance);
60 }
61}
62#endif // pRC_ALGORITHMS_OPTIMIZE_H
int x
Definition gmock-matchers-containers_test.cc:376
Definition cholesky.hpp:10
std::remove_reference_t< T > RemoveReference
Definition basics.hpp:41
typename ValueType< T >::Type Value
Definition value.hpp:72
RemoveConst< RemoveReference< T > > RemoveConstReference
Definition basics.hpp:47
static constexpr auto optimize(Optimizer &&optimizer, XX &&x, FF &&function, FC &&callback, VT const &tolerance=NumericLimits< Value< RemoveReference< XX > > >::tolerance())
Definition optimize.hpp:15
Definition limits.hpp:13