BIE |
/home/weinberg/src/BIE/include/PFSimulation.h00001 // This is really -*- C++ -*- 00002 00003 #ifndef PFSimulation_h 00004 #define PFSimulation_h 00005 00006 #include "RunSimulation.h" 00007 #include "Distribution.h" 00008 #include "EnsembleStat.h" 00009 #include "Tile.h" 00010 #include "Model.h" 00011 #include "Integration.h" 00012 #include "PostMixturePrior.h" 00013 #include "InitialMixturePrior.h" 00014 #include "DataTree.h" 00015 #include "CountConverge.h" 00016 #include "SubsampleConverge.h" 00017 #include "MappedGrid.h" 00018 #include "KdTessellation.h" 00019 #include "QuadGrid.h" 00020 #include "CountConverge.h" 00021 #include "SubsampleConverge.h" 00022 #include "LikelihoodComputation.h" 00023 00024 #include "BIEmpi.h" 00025 #include "TemperedSimulation.h" 00026 #include "ReversibleJump.h" 00027 #include "MetropolisHastings.h" 00028 #include "gvariable.h" 00029 00030 #include "Serializable.h" 00031 00032 00033 namespace BIE { 00034 00035 //+ CLICLASS PFSimulation SUPER RunSimulation 00055 class PFSimulation : public RunSimulation 00056 { 00057 public: 00058 00060 static double ESSprob; 00061 00063 static int maxTries; 00064 00065 //+ CLICONSTR int int Simulation* Ensemble* 00067 PFSimulation(int nsteps, int npart, Simulation *sim, Ensemble *factory); 00068 00070 ~PFSimulation(); 00071 00072 //+ CLIMETHOD void Run 00074 void Run(); 00075 00076 //+ CLIMETHOD void Resume 00078 void Resume(); 00079 00080 //+ CLIMETHOD void ResumeLog 00082 void ResumeLog() { resumelog = true; } 00083 00084 //+ CLIMETHOD void Nsample int 00086 void Nsample(int n) { nMCMC = n; } 00087 00088 //+ CLIMETHOD void Restart 00090 void Restart() { restart = true; } 00091 00092 //+ CLIMETHOD void SetTessTool TessToolSender* 00094 void SetTessTool(TessToolSender *tt); 00095 00096 //+ CLIMETHOD void SampleNext 00098 void SampleNext(); 00099 00100 //+ CLIMETHOD void SwitchOnCLI 00102 void SwitchOnCLI(); 00103 00104 //+ CLIMETHOD void SuspendSimulation 00106 virtual void SuspendSimulation(); 00107 00108 //+ CLIMETHOD void ResumeSimulation 00110 virtual void ResumeSimulation(); 00111 00112 //+ CLIMETHOD void SetAutoTessTool int 00114 virtual void SetAutoTessTool(int freq); 00115 00116 private: 00117 00118 vector<Chain*> particles; 00119 Frontier * frontier; 00120 vector<int> dataSoFar; 00121 00122 Simulation * sim; 00123 00124 double curESS; 00125 00126 int ttfreq; 00127 00128 string prefixed_initfile; 00129 string prefixed_metfile; 00130 00131 int nsteps; // Total number of steps 00132 unsigned npart; // Number of particles 00133 00134 int nmix; // Two component mixture 00135 double alpha; // Dirichlet shape 00136 int ndim; // Two model parameters 00137 00138 int Mcur; // Current number in mixture 00139 // (fixed to nmix for now) 00140 00141 int nMCMC; // Number of MCMC steps per resample 00142 00143 int swapstat[2]; // For swap statistics 00144 00146 void MCMCStep(void); 00147 00149 void UpdateStep(void); 00150 00152 bool Resample(void); 00153 00155 void AccumulateStats(void); 00156 00158 Ensemble * sstat, * factory; 00159 00161 int curLevel; 00162 00168 void ExchangeParticles(void); 00169 00171 void WeightNormalize(void); 00172 00174 void IncreaseResolution(void); 00175 00177 void PrintParticles(string filename); 00178 00180 void WeightedStats(); 00181 00185 bool resumelog; 00186 void resumeLog(void); 00187 00189 Uniform * unit; 00190 00191 // AUTO GENERATED BY ../persistence/autopersist.py 00192 protected: 00193 PFSimulation() {} 00194 private: 00195 friend class boost::serialization::access; 00196 template<class Archive> 00197 void serialize(Archive & ar, const unsigned int version) { 00198 this->pre_serialize(ar, version); 00199 try { 00200 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(RunSimulation); 00201 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00202 } 00203 try { 00204 ar & BOOST_SERIALIZATION_NVP(ESSprob); 00205 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00206 } 00207 try { 00208 ar & BOOST_SERIALIZATION_NVP(maxTries); 00209 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00210 } 00211 try { 00212 ar & BOOST_SERIALIZATION_NVP(particles); 00213 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00214 } 00215 try { 00216 ar & BOOST_SERIALIZATION_NVP(frontier); 00217 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00218 } 00219 try { 00220 ar & BOOST_SERIALIZATION_NVP(dataSoFar); 00221 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00222 } 00223 try { 00224 ar & BOOST_SERIALIZATION_NVP(sim); 00225 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00226 } 00227 try { 00228 ar & BOOST_SERIALIZATION_NVP(curESS); 00229 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00230 } 00231 try { 00232 ar & BOOST_SERIALIZATION_NVP(ttfreq); 00233 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00234 } 00235 try { 00236 ar & BOOST_SERIALIZATION_NVP(prefixed_initfile); 00237 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00238 } 00239 try { 00240 ar & BOOST_SERIALIZATION_NVP(prefixed_metfile); 00241 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00242 } 00243 try { 00244 ar & BOOST_SERIALIZATION_NVP(nsteps); 00245 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00246 } 00247 try { 00248 ar & BOOST_SERIALIZATION_NVP(npart); 00249 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00250 } 00251 try { 00252 ar & BOOST_SERIALIZATION_NVP(nmix); 00253 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00254 } 00255 try { 00256 ar & BOOST_SERIALIZATION_NVP(alpha); 00257 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00258 } 00259 try { 00260 ar & BOOST_SERIALIZATION_NVP(ndim); 00261 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00262 } 00263 try { 00264 ar & BOOST_SERIALIZATION_NVP(Mcur); 00265 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00266 } 00267 try { 00268 ar & BOOST_SERIALIZATION_NVP(nMCMC); 00269 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00270 } 00271 try { 00272 ar & BOOST_SERIALIZATION_NVP(swapstat); 00273 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00274 } 00275 try { 00276 ar & BOOST_SERIALIZATION_NVP(sstat); 00277 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00278 } 00279 try { 00280 ar & BOOST_SERIALIZATION_NVP(factory); 00281 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00282 } 00283 try { 00284 ar & BOOST_SERIALIZATION_NVP(curLevel); 00285 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00286 } 00287 try { 00288 ar & BOOST_SERIALIZATION_NVP(resumelog); 00289 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00290 } 00291 try { 00292 ar & BOOST_SERIALIZATION_NVP(unit); 00293 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00294 } 00295 this->post_serialize(ar, version); 00296 } 00297 00298 }; 00299 00300 } 00301 00302 BIE_CLASS_TYPE_INFO(BIE::PFSimulation) 00303 BIE_CLASS_EXPORT_KEY(BIE::PFSimulation) 00304 #endif 00305 Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:10 2010 by
|