source: vis_dev/sharpSAT/src/shared/Interface/AnalyzerData.h @ 104

Last change on this file since 104 was 29, checked in by cecile, 13 years ago

shared missing for sharpSAT

File size: 6.3 KB
Line 
1// Class automatically generated by Dev-C++ New Class wizard
2
3#ifndef ANALYZERDATA_H
4#define ANALYZERDATA_H
5
6#include <RealNumberTypes.h>
7
8//#include <Interface/Assignment.h>
9#include "../src_sharpSAT/Basics.h"
10
11#include <vector>
12
13#include <iostream>
14#include <fstream>
15#include <cstring>
16
17using namespace std;
18
19enum DATA_IDX
20{
21
22 AVG_DEC_LEV  = 0,  // average decision Level
23 AVG_CONFLICT_LEV, // average conflict Level
24 AVG_SOLUTION_LEV, // average solution Level
25         
26 LONGEST_CCL_lastUIP, // longest conflict clause by last UIP scheme
27 AVG_CCL_lastUIP, // avg conflict clause length by last UIP scheme
28 LONGEST_CCL_1stUIP, // longest conflict clause by 1st UIP scheme
29 AVG_CCL_1stUIP,  // avg conflict clause length by 1st UIP scheme
30 
31 FCACHE_MAXMEM,  // Formula Cache Memoery Bound
32 FCACHE_MEMUSE,  // Formula Cache memory usage
33 FCACHE_USEDBUCKETS, // number of hashbuckets used
34 FCACHE_CACHEDCOMPS,
35 FCACHE_RETRIEVALS, // number of retrieved components
36 FCACHE_INCLUDETRIES, // number of times it was tried to put a component into the cache
37 XX_MAX_IDX
38};
39
40/// strings describing the data identified by DATA_IDX
41static const char * doubleDataDesc[] = 
42{
43  "avg dec dl","avg conflict dl","avg solution dl","longest ccl lastUIP","avg ccl lastUIP","longest ccl firstUIP","avg ccl firstUIP",
44  "cacher memory bound", "cache mem-usage","cache used buckets","cache cached components","cache retrievals", "cache include tries","NOTHING"
45};
46
47
48enum INT_DATA_ID
49{
50 NVARS =  0,  // num Of Vars
51 NUSED_VARS,
52 NORIGINAL_CLAUSES,
53 NREMOVED_CLAUSES,
54 NADDED_CLAUSES,
55 NRECEIVED_ASS,  // int nReceivedSatAssignments;
56 NCONFLICTS, // int nConflicts;
57 NIMPLICATIONS, // int nImplications;
58 NIBCPIMPLS,
59 NPROCESSED_COMPS, // int nProcessedComponents;
60 MAX_DL, // int maxDecLevel;
61 MAX_SOL_DL, // int maxSolutionLevel;
62 NDECISIONS, // int nDecisions;         
63 INT_MAX_ID
64};
65
66/// strings describing the data identified by INT_DATA_ID
67static const char * intDataDesc[] = 
68{
69  "variables","used vars","original clauses","removed clauses","added clauses",
70  "received sat assignments", "conflicts","implications","ibcpimplications","processed components",
71  "max dl","max solution dl","decisions","NOTHING"
72};
73
74
75enum ID_DATA
76{
77 DECISION, 
78 CONFLICT, 
79 SOLUTION, 
80 IMPLICATION,
81 IBCPIMPL,
82 CCL_lastUIP, // conflict clause by last UIP scheme
83 CCL_1stUIP //  conflict clause by 1st UIP scheme
84 
85 
86 //XX_MAX_IDX = 7
87};
88 
89 
90 
91class AnalyzerData
92{
93  public:   
94        double elapsedTime;
95       
96        SOLVER_StateT theExitState; 
97        /// Zahl der Variablen der Instanz       
98        int nVars;   
99       
100        /// Zahl der Variablen, die tatsï¿œhlich in Klauseln vorkommen
101        int nUsedVars;
102       
103        /// Klauselzahl
104        int nOriginalClauses; 
105       
106        int nRemovedClauses; 
107       
108        int nAddedClauses;               
109       
110        // Zahl der erfllenden Belegungen, die bergeben wurden
111        // sollte Kleiner sein, als die Zahl der eigentlichen Lï¿œungen
112        int nReceivedSatAssignments;
113       
114        /// Anzahl aller getroffenen Entscheidungen
115        int nDecisions;         
116       
117        /// Zahl aller gefundenen Implikationen
118        int nImplications; 
119       
120        int nImplicitImplications; 
121       
122        /// Zahl aller wï¿œrend der Suche aufgetretenen Konflikte
123        int nConflicts; 
124       
125       
126        /// insgesamt bearbeitete Komponenten
127        int nProcessedComponents; 
128       
129        /// maximaler Decision level
130        int maxDecLevel;
131        int maxSolutionLevel;
132       
133        vector<double> evalData;
134        /// Wahrscheinlichkeit der Erfuellbarkeit der Instanz       
135        CRealNum rnProbOfSat;   
136       
137        // class constructor
138        AnalyzerData();
139        // class destructor
140        ~AnalyzerData();
141
142        /// setzt alle Werte auf Null zurck (nur intern wichtig).
143        void init();
144       
145        CRealNum getAllAssignments() const
146        {
147         CRealNum res;
148         pow2(res,nVars);
149         return res;
150        }       
151       
152        CRealNum getNumSatAssignments() const
153        {
154          return rnProbOfSat * getAllAssignments();
155        }
156       
157        void printNumSatAss_whole() const
158        {
159        #ifdef GMP_BIGNUM
160          CRealNum res;
161          res.set_prec(nVars);
162          pow2(res,nVars);
163          res *= rnProbOfSat;
164          char buf[nVars+2];
165          mp_exp_t exp;
166          memset(buf,0,nVars+2);
167          mpf_get_str(buf,&exp,10,nVars+2,res.get_mpf_t());
168         
169          //cout <<"e"<<(exp>0?"+":"-")<<exp;
170          for(int i=exp-1; i>=0;i--) if(buf[i] == 0) buf[i] = '0';
171          //gmp_printf("%F",res.get_mpf_t());
172          printf(buf);
173          #endif
174        }
175       
176        char*  printNumSatAss_vis() const
177        {
178         char* buf=(char*)calloc(nVars+2,sizeof(char));
179         #ifdef GMP_BIGNUM
180       
181          CRealNum res;
182          res.set_prec(nVars);
183          pow2(res,nVars);
184          res *= rnProbOfSat;
185          mp_exp_t exp;
186          memset(buf,0,nVars+2);
187          mpf_get_str(buf,&exp,10,nVars+2,res.get_mpf_t());
188         
189          //cout <<"e"<<(exp>0?"+":"-")<<exp;
190          for(int i=exp-1; i>=0;i--) if(buf[i] == 0) buf[i] = '0';
191          //gmp_printf("%F",res.get_mpf_t());
192         #endif
193         return buf;
194 
195        }
196
197        double get(DATA_IDX dataID) const
198        {
199         return evalData[dataID];
200        }
201       
202        unsigned int getI(INT_DATA_ID idataID) const;
203       
204        bool setI(INT_DATA_ID idataID, int val);
205       
206        void set(DATA_IDX dataID, double val)
207        {
208         evalData[dataID] = val;
209        }
210       
211       
212        void finishcountSATAnalysis();
213       
214        void writeToFile(const char *lpcstrFileName) const;
215        void loadFromFile(const char *lpcstrFileName);
216};
217/*@}*/
218
219/** \addtogroup RunAnalyze Laufanalyse
220 * \ingroup Interna
221 */
222/*@{*/
223class CRunAnalyzer
224{
225        AnalyzerData theData;   
226
227        bool first;
228   
229  protected:
230       
231        //bool includeInPrBackBone(CAssignment &s,double nSols);
232               
233   
234  public:       
235       
236        // class constructor
237        CRunAnalyzer();
238        // class destructor
239        ~CRunAnalyzer();
240               
241        const AnalyzerData &getData() const;
242       
243        AnalyzerData &changeableData(){return theData;}
244       
245        void init(int nVars, int nClauses);       
246       
247        //void setUsedVars(const set<int> &rUsedVars); 
248       
249        void setUsedVars(unsigned int nUsedVars);
250       
251        void setRemovedClauses(int rClauses)
252        {
253          theData.nRemovedClauses = rClauses;
254        }
255       
256        void addValue(ID_DATA dataID, int actDecLevel = 0, double someData = 0.0);
257       
258        void setValue(DATA_IDX dataIDX, double someData);       
259       
260        void addClause();       
261       
262        void setSatCount(const CRealNum  &rnCodedSols);
263       
264        void setSatProb(const CRealNum  &rnProb)
265        {
266          theData.rnProbOfSat = rnProb;
267        }
268       
269       
270       
271        void setExitState(SOLVER_StateT st)
272        {
273          theData.theExitState = st;
274        }
275        void setElapsedTime(double timeV)
276        {
277         theData.elapsedTime = timeV;
278        }
279
280        // No description
281        void finishcountSATAnalysis();
282};
283#endif // CANALYZERDATA_H
284
Note: See TracBrowser for help on using the repository browser.