#include "grid_search.h" #include #include template < typename Scalar, typename DerivedX, typename DerivedLB, typename DerivedUB, typename DerivedI> IGL_INLINE Scalar igl::grid_search( const std::function< Scalar (DerivedX &) > f, const Eigen::MatrixBase & LB, const Eigen::MatrixBase & UB, const Eigen::MatrixBase & I, DerivedX & X) { Scalar fval = std::numeric_limits::max(); const int dim = LB.size(); assert(UB.size() == dim && "UB should match LB size"); assert(I.size() == dim && "I should match LB size"); X.resize(dim); // Working X value DerivedX Xrun(dim); std::function looper; int calls = 0; looper = [&]( const int d, DerivedX & Xrun) { assert(d < dim); Eigen::Matrix vals = Eigen::Matrix::LinSpaced(I(d),LB(d),UB(d)); for(int c = 0;c, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(std::function&)>, Eigen::MatrixBase > const&, Eigen::MatrixBase > const&, Eigen::MatrixBase > const&, Eigen::Matrix&); template float igl::grid_search, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(std::function&)>, Eigen::MatrixBase > const&, Eigen::MatrixBase > const&, Eigen::MatrixBase > const&, Eigen::Matrix&); #endif