Frobby  0.9.0
StatisticsStrategy.h
Go to the documentation of this file.
1 /* Frobby: Software for monomial ideal computations.
2  Copyright (C) 2007 Bjarke Hammersholt Roune (www.broune.com)
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see http://www.gnu.org/licenses/.
16 */
17 #ifndef STATISTICS_STRATEGY
18 #define STATISTICS_STRATEGY
19 
20 #include "SliceStrategy.h"
21 
22 #include <map>
23 
27 class StatisticsStrategy : public SliceStrategy {
28  public:
31  StatisticsStrategy(SliceStrategy* strategy, FILE* out);
32  virtual ~StatisticsStrategy();
33 
34  virtual void run(const Ideal& ideal);
35 
36  virtual bool processSlice(TaskEngine& tasks, auto_ptr<Slice> slice);
37 
38  virtual void setUseIndependence(bool use);
39  virtual void setUseSimplification(bool use);
40  virtual bool getUseSimplification() const;
41 
42  virtual void freeSlice(auto_ptr<Slice> slice);
43 
44  private:
46  FILE* _out;
47 
49  struct StatTracker {
53  StatTracker(const string& title);
54 
58  void preliminaryRecord(const Slice& slice);
59 
62  void commitRecord();
63 
66  void printReport(FILE* out) const;
67 
68  const mpz_class& getNodeCount() const;
69  double getAvgIdealGenCount() const;
70  double getAvgSubGenCount() const;
71  double getAvgVarCount() const;
72 
73  private:
74  string _title;
75 
79 
80  mpz_class _nodeCount;
81  mpz_class _idealGenSum;
82  mpz_class _subGenSum;
83  mpz_class _varSum;
84 
87  map<size_t, mpz_class> _nodesByGenCount;
88  };
89 
92 };
93 
94 #endif
SliceStrategy.h
SliceStrategy
This class describes the interface of a strategy object for the Slice Algorithm.
Definition: SliceStrategy.h:33
StatisticsStrategy::StatTracker::_nodesByGenCount
map< size_t, mpz_class > _nodesByGenCount
_nodesByGenCount[l] records how many slices have been recorded whose ideal has approximately 2^l gene...
Definition: StatisticsStrategy.h:87
SliceStrategy::run
virtual void run(const Ideal &ideal)=0
Run the Slice algorithm.
StatisticsStrategy::StatTracker::_varSum
mpz_class _varSum
Definition: StatisticsStrategy.h:83
StatisticsStrategy::_leafTracker
StatTracker _leafTracker
Definition: StatisticsStrategy.h:91
StatisticsStrategy::StatTracker::getAvgSubGenCount
double getAvgSubGenCount() const
Definition: StatisticsStrategy.cpp:139
StatisticsStrategy::StatTracker::_idealGenSum
mpz_class _idealGenSum
Definition: StatisticsStrategy.h:81
StatisticsStrategy::StatTracker::StatTracker
StatTracker(const string &title)
The title parameter indicates what is to be printed when calling printReport().
Definition: StatisticsStrategy.cpp:74
SliceStrategy::processSlice
virtual bool processSlice(TaskEngine &tasks, auto_ptr< Slice > slice)=0
Process the parameter slice.
StatisticsStrategy::StatTracker::_title
string _title
Definition: StatisticsStrategy.h:74
TaskEngine
TaskEngine handles a list of tasks that are to be carried out.
Definition: TaskEngine.h:40
Slice
This class represents a slice, which is the central data structure of the Slice Algorithm.
Definition: Slice.h:77
StatisticsStrategy::_internalTracker
StatTracker _internalTracker
Definition: StatisticsStrategy.h:90
SliceStrategy::setUseSimplification
virtual void setUseSimplification(bool use)=0
This method should only be called before calling run().
StatisticsStrategy::StatTracker::getAvgVarCount
double getAvgVarCount() const
Definition: StatisticsStrategy.cpp:148
StatisticsStrategy::StatTracker
Tracks statistics on slices.
Definition: StatisticsStrategy.h:49
StatisticsStrategy::StatTracker::commitRecord
void commitRecord()
Commit the most recent argument to preliminaryTrack permanently to the record.
Definition: StatisticsStrategy.cpp:84
StatisticsStrategy::StatTracker::_subGenSum
mpz_class _subGenSum
Definition: StatisticsStrategy.h:82
SliceStrategy::freeSlice
virtual void freeSlice(auto_ptr< Slice > slice)=0
It is allowed to delete returned slices directly, but it is better to use freeSlice.
StatisticsStrategy::StatTracker::_prelimSubGenCount
size_t _prelimSubGenCount
Definition: StatisticsStrategy.h:77
StatisticsStrategy::StatTracker::preliminaryRecord
void preliminaryRecord(const Slice &slice)
Record information about slice, but store it only until this method is next called on this object.
Definition: StatisticsStrategy.cpp:78
StatisticsStrategy::StatTracker::_prelimVarCount
size_t _prelimVarCount
Definition: StatisticsStrategy.h:78
SliceStrategy::getUseSimplification
virtual bool getUseSimplification() const =0
StatisticsStrategy::StatTracker::_prelimIdealGenCount
size_t _prelimIdealGenCount
Definition: StatisticsStrategy.h:76
StatisticsStrategy::StatisticsStrategy
StatisticsStrategy(SliceStrategy *strategy, FILE *out)
Statistics are written to out, and every call is delegated to strategy.
Definition: StatisticsStrategy.cpp:24
StatisticsStrategy::_out
FILE * _out
Definition: StatisticsStrategy.h:46
Ideal
Represents a monomial ideal with int exponents.
Definition: Ideal.h:27
StatisticsStrategy::StatTracker::getAvgIdealGenCount
double getAvgIdealGenCount() const
Definition: StatisticsStrategy.cpp:130
SliceStrategy::setUseIndependence
virtual void setUseIndependence(bool use)=0
This method should only be called before calling run().
StatisticsStrategy::_strategy
SliceStrategy * _strategy
Definition: StatisticsStrategy.h:45
StatisticsStrategy::StatTracker::_nodeCount
mpz_class _nodeCount
Definition: StatisticsStrategy.h:80
StatisticsStrategy::StatTracker::printReport
void printReport(FILE *out) const
Print a report on statistics of the recorded slices to the file out.
Definition: StatisticsStrategy.cpp:97
StatisticsStrategy::StatTracker::getNodeCount
const mpz_class & getNodeCount() const
Definition: StatisticsStrategy.cpp:126