CluE  1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
comb2part_evaluationwrapper.h
Go to the documentation of this file.
1 #include "../base/partitionevaluation.h"
2 #include "../base/combinedevaluation.h"
3 #include "../base/proxygenerator.h"
4 
5 namespace CluE
6 {
7 
17 template<class T> class CombinedToPartitionEvaluationWrapper : public PartitionEvaluation<T>
18 {
19 public:
24 
28  virtual double partitioncost(std::vector<std::vector<T*> > const &partitioning) const;
32  virtual double partitioncost(PartitionProvider<T> const &partitionProvider, unsigned int solutionIndex) const;
33 
37  virtual double partitioncost(std::vector<T*> const &partition) const;
41  virtual double partitioncost(PartitionProvider<T> const &partitionProvider, unsigned int solutionIndex, unsigned int partitionIndex) const;
42 
43 private:
46 };
47 
49 {
50  //TODO NULL-Exception, ...
51 }
52 
53 template<class T> double CombinedToPartitionEvaluationWrapper<T>::partitioncost(std::vector<std::vector<T*> > const &partitioning) const
54 {
55  std::vector<T> proxies;
56  size_t n = partitioning.size();
57  for(size_t i = 0; i < n; i++)
58  {
59  proxies.push_back(generator->generate(partitioning[i]));
60  }
61  return evaluation->combinedcost(partitioning, proxies);
62 }
63 
64 template<class T> double CombinedToPartitionEvaluationWrapper<T>::partitioncost(PartitionProvider<T> const &partitionProvider, unsigned int solutionIndex) const
65 {
66  std::vector<std::vector<T*> > partitioning = partitionProvider.clustering(solutionIndex);
67 
68  std::vector<T> proxies;
69  size_t n = partitioning.size();
70  for(size_t i = 0; i < n; i++)
71  {
72  proxies.push_back(generator->generate(partitioning[i]));
73  }
74  return evaluation->combinedcost(partitioning, proxies);
75 }
76 
77 template<class T> double CombinedToPartitionEvaluationWrapper<T>::partitioncost(std::vector<T*> const &partition) const
78 {
79  return evaluation->combinedcost(partition, generator->generate(partition));
80 }
81 
82 template<class T> double CombinedToPartitionEvaluationWrapper<T>::partitioncost(PartitionProvider<T> const &partitionProvider, unsigned int solutionIndex, unsigned int partitionIndex) const
83 {
84  std::vector<T*> partition = partitionProvider.cluster(solutionIndex, partitionIndex);
85  return evaluation->combinedcost(partition, generator->generate(partition));
86 }
87 }
CombinedEvaluation< T > const *const evaluation
virtual std::vector< T * > cluster(unsigned int solutionIndex, unsigned int partitionIndex) const =0
Returns a vector of pointers to the elements of a particular cluster from the specified clustering...
Abstract class. Proxy based evaluation algorithms may be optimized by deriving from this class...
CombinedToPartitionEvaluationWrapper(CombinedEvaluation< T > const *evaluation, ProxyGenerator< T > const *generator)
Provide a CombinedEvaluation and a suitable ProxyGenerator.
Abstract base class for mechanisms that compute a proxy or representative object for a given set of o...
virtual double partitioncost(std::vector< std::vector< T * > > const &partitioning) const
See wrapped class's combinedcost() documentation.
virtual std::vector< std::vector< T * > > clustering(unsigned int solutionIndex) const =0
Returns the specified clustering as a vector of vector of pointers to the elements.
Abstract class for partition-based evaluation algorithms.
Abstract base class to access results of partition based clustering algorithms.
Wraps CombinedEvaluation into PartitionEvaluation by using a ProxGenerator instance.