[mlpack] Range search with periodic boundary conditions
董理
dongli at lasg.iap.ac.cn
Wed May 13 11:45:17 EDT 2015
You guess is correct! Thanks for saving me~
Li
> On 2015年5月13日, at 下午11:34, Ryan Curtin <ryan at ratml.org> wrote:
>
> On Wed, May 13, 2015 at 11:14:58PM +0800, 董理 wrote:
>> Dear Ryan,
>>
>> I have encountered the following error when compiling my search codes with CoverTree:
>>
>> /opt/packman/mlpack/1.0.12/0/include/mlpack/methods/range_search/range_search_impl.hpp:245:63: error: implicit instantiation of undefined template
>> 'mlpack::tree::CoverTree<geomtk::DomainMetric<geomtk::SphereDomain>, mlpack::tree::FirstPointIsRoot,
>> mlpack::tree::EmptyStatistic>::SingleTreeTraverser<mlpack::range::RangeSearchRules<geomtk::DomainMetric<geomtk::SphereDomain>,
>> mlpack::tree::CoverTree<geomtk::DomainMetric<geomtk::SphereDomain>, mlpack::tree::FirstPointIsRoot, mlpack::tree::EmptyStatistic> > >'
>> typename TreeType::template SingleTreeTraverser<RuleType> traverser(rules);
>> ^
>> /Users/dongli/Works/lasm/src/AdvectionManager.cpp:206:12: note: in instantiation of member function
>> 'mlpack::range::RangeSearch<geomtk::DomainMetric<geomtk::SphereDomain>, mlpack::tree::CoverTree<geomtk::DomainMetric<geomtk::SphereDomain>,
>> mlpack::tree::FirstPointIsRoot, mlpack::tree::EmptyStatistic> >::Search' requested here
>> search.Search(r, neighbors, distances);
>> ^
>> …
>> /opt/packman/mlpack/1.0.12/0/include/mlpack/core/tree/cover_tree/cover_tree.hpp:212:9: note: template is declared here
>> class SingleTreeTraverser;
>> ^
>> 1 error generated.
>>
>>
>> The metric class is defined in my codes as:
>>
>> template <class DomainType>
>> class DomainMetric {
>> public:
>> static const DomainType *domain;
>>
>> DomainMetric() {}
>>
>> template <typename VecType1, typename VecType2>
>> static double
>> Evaluate(const VecType1 &x, const VecType2 &y) {
>> return domain->calcDistance(x, y);
>> }
>>
>> string
>> ToString() const {
>> return "Implement me!”;
>> }
>> }; // DomainMetric
>>
>> template <class DomainType>
>> const DomainType* DomainMetric<DomainType>::domain = NULL;
>>
>> And I define the RangeSearch template as
>>
>> typedef geomtk::DomainMetric<typename Mesh::DomainType> MetricType;
>> typedef mlpack::tree::CoverTree<MetricType> TreeType;
>> typedef mlpack::range::RangeSearch<MetricType, TreeType> SearchType;
>>
>> Any idea? Thanks in advance!
>
> My first guess is that you're including
> src/mlpack/core/tree/cover_tree/cover_tree.hpp, when really you should
> include src/mlpack/core/tree/cover_tree.hpp, which then includes
> everything else associated with the cover tree.
>
> Probably the right thing to do on the mlpack side is to make sure that
> cover_tree.hpp includes everything that it needs...
>
> --
> Ryan Curtin | "What? Facts?"
> ryan at ratml.org | - Joe Cairo
More information about the mlpack
mailing list