Frobby 0.9.5
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
28 public:
32 virtual ~StatisticsStrategy();
33
34 virtual void run(const Ideal& ideal);
35
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:
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
84
88 };
89
90 StatTracker _internalTracker;
91 StatTracker _leafTracker;
92};
93
94#endif
void nameFactoryRegister(NameFactory< AbstractProduct > &factory)
Registers the string returned by ConcreteProduct::getStaticName() to a function that default-construc...
Represents a monomial ideal with int exponents.
Definition Ideal.h:27
This class describes the interface of a strategy object for the Slice Algorithm.
This class represents a slice, which is the central data structure of the Slice Algorithm.
Definition Slice.h:77
A wrapper for a SliceStrategy that collects statistics on what is going on, while delegating everythi...
virtual void setUseSimplification(bool use)
This method should only be called before calling run().
virtual void run(const Ideal &ideal)
Run the Slice algorithm.
virtual bool processSlice(TaskEngine &tasks, auto_ptr< Slice > slice)
Process the parameter slice.
virtual bool getUseSimplification() const
virtual void freeSlice(auto_ptr< Slice > slice)
It is allowed to delete returned slices directly, but it is better to use freeSlice.
virtual void setUseIndependence(bool use)
This method should only be called before calling run().
SliceStrategy * _strategy
TaskEngine handles a list of tasks that are to be carried out.
Definition TaskEngine.h:40
Tracks statistics on slices.
void printReport(FILE *out) const
Print a report on statistics of the recorded slices to the file out.
const mpz_class & getNodeCount() const
void commitRecord()
Commit the most recent argument to preliminaryTrack permanently to the record.
map< size_t, mpz_class > _nodesByGenCount
_nodesByGenCount[l] records how many slices have been recorded whose ideal has approximately 2^l gene...
void preliminaryRecord(const Slice &slice)
Record information about slice, but store it only until this method is next called on this object.