Esempio n. 1
0
            Eigen::VectorXd operator()(const F& f, const Eigen::VectorXd& init, bool bounded) const
            {
                tools::par::init();
                typedef std::pair<Eigen::VectorXd, double> pair_t;
                auto body = [&](int i) {
                    // clang-format off
                    Eigen::VectorXd r_init = tools::random_vector(init.size());
                    Eigen::VectorXd v = Optimizer()(f, init, bounded);
                    double lik = opt::eval(f, v);
                    return std::make_pair(v, lik);
                    // clang-format on
                };

                auto comp = [](const pair_t& v1, const pair_t& v2) {
                    // clang-format off
                    return v1.second > v2.second;
                    // clang-format on
                };

                pair_t init_v = std::make_pair(init, -std::numeric_limits<float>::max());
                auto m = tools::par::max(init_v, Params::opt_parallelrepeater::repeats(), body, comp);

                return m.first;
            };
Esempio n. 2
0
 Eigen::VectorXd operator()(const F& f, const Eigen::VectorXd& init, bool bounded) const
 {
     return Chained<Params, Optimizers...>::operator()(f, Optimizer()(f, init, bounded), bounded);
 };
Esempio n. 3
0
 Eigen::VectorXd operator()(const F& f, const Eigen::VectorXd& init, bool bounded) const
 {
     return Optimizer()(f, init, bounded);
 };