23     template<
typename F, 
typename... Args>
 
   25       { std::invoke(f, args...) } -> std::convertible_to<double>;
 
   29     template <
size_t param_index, 
size_t grid_size, 
typename EvalResult, 
typename Tuple, 
typename... TupleTypes>
 
   35     template <
size_t grid_size, 
typename EvalResult, 
typename Tuple, 
typename... TupleTypes>
 
   36     struct Looper<grid_size, grid_size, EvalResult, Tuple, TupleTypes...>
 
   38       template <
typename Functor>
 
   39         requires 
Evaluator<Functor, TupleTypes...>
 
   40       constexpr 
auto operator()(
const Tuple&, Functor functor, EvalResult , std::array<size_t, grid_size>& )
 const 
   42         return std::invoke(functor);
 
   47     template <
size_t param_index, 
size_t grid_size, 
typename EvalResult, 
typename Tuple, 
typename FirstTupleType, 
typename... TupleTypes>
 
   48     struct Looper<param_index, grid_size, EvalResult, Tuple, FirstTupleType, TupleTypes...>
 
   50       template <
typename Functor>
 
   51         requires 
Evaluator<Functor, FirstTupleType, TupleTypes...>
 
   52       constexpr 
auto operator()(
const Tuple& grid, Functor functor, EvalResult bestValue, std::array<size_t, grid_size>& bestIndices)
 const 
   54         const auto& current_vector = std::get<param_index>(grid);
 
   56         for (
size_t index = 0; index < current_vector.size(); ++index) {
 
   57           const auto& value = current_vector[index];
 
   58           auto currVal = 
Looper<param_index + 1, grid_size, EvalResult, Tuple, TupleTypes...>{}
 
   61                   [&value, &functor](TupleTypes... rest){ 
 
   62                     return std::invoke(functor, value, rest...);
 
   68           if (currVal > bestValue) {
 
   70             bestIndices[param_index] = index;
 
   78   template <
typename... TupleTypes>
 
   82     explicit GridSearch(std::vector<TupleTypes>... gridValues)
 
   83         : 
grid_(std::make_tuple<std::vector<TupleTypes>...>(std::move(gridValues)...))
 
   87     template <
typename Functor>
 
   91         std::invoke_result_t<Functor, TupleTypes...> startValue,
 
   92         std::array<
size_t, std::tuple_size_v<std::tuple<std::vector<TupleTypes>...>>>& resultIndices)
 const 
   96           std::tuple_size_v<std::tuple<std::vector<TupleTypes>...>>,
 
   97           std::invoke_result_t<Functor, TupleTypes...>,
 
   98           std::tuple<std::vector<TupleTypes>...>,
 
   99           TupleTypes...>{}(
grid_, evaluator, startValue, resultIndices);
 
  103     template <
typename EvalResult>
 
  104       requires std::convertible_to<EvalResult, double>
 
  106         EvalResult (*evaluator)(TupleTypes...),
 
  107         EvalResult startValue,
 
  108         std::array<
size_t, std::tuple_size_v<std::tuple<std::vector<TupleTypes>...>>>& resultIndices)
 const 
  112           std::tuple_size_v<std::tuple<std::vector<TupleTypes>...>>,
 
  114           std::tuple<std::vector<TupleTypes>...>,
 
  115           TupleTypes...>{}(
grid_, evaluator, startValue, resultIndices);
 
  127     std::tuple<std::vector<TupleTypes>...> 
grid_;
 
  131     template<std::
size_t I = 0>
 
  134       if constexpr (I == 
sizeof...(TupleTypes)) {
 
  139         return calculateCombos<I + 1>();
 
Definition: GridSearch.h:80
 
requires constexpr std::convertible_to< EvalResult, double > auto evaluate(EvalResult(*evaluator)(TupleTypes...), EvalResult startValue, std::array< size_t, std::tuple_size_v< std::tuple< std::vector< TupleTypes >... >>> &resultIndices) const
Definition: GridSearch.h:105
 
std::tuple< std::vector< TupleTypes >... > grid_
Definition: GridSearch.h:127
 
constexpr unsigned int calculateCombos() const
Definition: GridSearch.h:132
 
requires constexpr Internal::Evaluator< Functor, TupleTypes... > auto evaluate(Functor evaluator, std::invoke_result_t< Functor, TupleTypes... > startValue, std::array< size_t, std::tuple_size_v< std::tuple< std::vector< TupleTypes >... >>> &resultIndices) const
Definition: GridSearch.h:89
 
unsigned int combos_
Definition: GridSearch.h:128
 
bool combos_ready_
Definition: GridSearch.h:129
 
constexpr auto getNrCombos() const -> unsigned int
Definition: GridSearch.h:118
 
GridSearch(std::vector< TupleTypes >... gridValues)
Definition: GridSearch.h:82
 
const double F
Definition: Constants.h:157
 
concept Evaluator
Definition: GridSearch.h:24
 
custom arguments to allow for looping calls
Definition: WizardHelper.h:47
 
Definition: GridSearch.h:31
 
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
 
requires constexpr Evaluator< Functor, TupleTypes... > auto operator()(const Tuple &, Functor functor, EvalResult, std::array< size_t, grid_size > &) const
Definition: GridSearch.h:40
 
requires constexpr Evaluator< Functor, FirstTupleType, TupleTypes... > auto operator()(const Tuple &grid, Functor functor, EvalResult bestValue, std::array< size_t, grid_size > &bestIndices) const
Definition: GridSearch.h:52