BIE |
/home/weinberg/src/BIE/include/TemperedSimulation.h00001 // This is really -*- C++ -*- 00002 00003 00004 #ifndef TemperedSimulation_h 00005 #define TemperedSimulation_h 00006 00007 #include "Serializable.h" 00008 00009 00010 #include "LikelihoodComputation.h" 00011 #include "MHWidth.h" 00012 #include "MHWidthOne.h" 00013 #include "Simulation.h" 00014 00015 namespace BIE { 00016 00017 class MixturePrior; 00018 00019 //+ CLICLASS TemperedSimulation SUPER Simulation 00024 class TemperedSimulation : public Simulation { 00025 00026 public: 00027 00030 00031 static int Ninter; 00032 00034 static bool use_tempering; 00035 00037 static double tpow; 00038 00040 static int minmc; 00041 00043 static int ITMAX; 00045 00047 00048 //+ CLICONSTR int int int double MHWidth* BaseDataTree* Model* Integration* Converge* MixturePrior* LikelihoodComputation* MCAlgorithm* 00050 TemperedSimulation(int max, int ndim, int minmc_p, double maxT, 00051 MHWidth* width, 00052 BaseDataTree* d, 00053 Model* m, 00054 Integration* i, 00055 Converge* c, 00056 MixturePrior* mp, 00057 LikelihoodComputation* l, 00058 MCAlgorithm* mca); 00059 00060 //+ CLICONSTR int int int double MHWidth* BaseDataTree* Model* Integration* Converge* MixturePrior* LikelihoodComputation* MCAlgorithm* Simulation* 00062 TemperedSimulation(int max, int ndim, int minmc_p, double maxT, 00063 MHWidth* width, 00064 BaseDataTree* d, 00065 Model* m, 00066 Integration* i, 00067 Converge* c, 00068 MixturePrior* mp, 00069 LikelihoodComputation* l, 00070 MCAlgorithm* mca, 00071 Simulation *last); 00073 TemperedSimulation() {} 00075 00077 virtual ~TemperedSimulation(); 00078 00080 virtual void Reinitialize(MHWidth* width, MixturePrior *mp); 00081 00082 //+ CLIMETHOD void SetNinter int 00084 void SetNinter(int N) { Ninter = N; } 00085 00088 00091 virtual void PrintStepDiagnostic(); 00092 00094 int GetAcceptance(void) { return accnum; } 00095 00097 int GetSwap(void) { return swapnum; } 00098 00100 void GetLastCycle(double& u, double& d) { u=up; d=down; } 00101 00104 virtual void PrintStateDiagnostic(); 00105 00108 vector<double> GetMixstat(void); 00109 00111 00112 protected: 00113 00115 virtual void MCMethod(); 00116 00118 void compute_proposal_state(int k); 00119 00121 00122 double MaxT; 00123 MHWidth* width; 00125 00127 00128 vector<double> beta, factor; 00129 vector<int> mstat0, mstat1; 00130 int Ntot; 00132 00134 00135 int accnum, swapnum; 00136 double up, down; 00137 double upM, downM; 00138 int updownNum; 00140 00142 Uniform * unit; 00143 00144 private: 00145 00146 // Save the RNG 00147 // 00148 template<class Archive> 00149 void post_save(Archive &ar, const unsigned int file_version) const { 00150 vector<Serializable*> s; 00151 s.push_back(BIEgen); 00152 ar << BOOST_SERIALIZATION_NVP(s); 00153 } 00154 // Restore the RNG 00155 // 00156 template<class Archive> 00157 void post_load(Archive &ar, const unsigned int file_version) { 00158 vector<Serializable *>s; 00159 ar >> BOOST_SERIALIZATION_NVP(s); 00160 BIEgen = dynamic_cast<BIEACG*>(s[0]); 00161 } 00162 00163 // AUTO GENERATED BY ../persistence/autopersist.py 00164 private: 00165 friend class boost::serialization::access; 00166 BOOST_SERIALIZATION_SPLIT_MEMBER(); 00167 00168 template<class Archive> 00169 void save(Archive & ar, const unsigned int version) const { 00170 this->pre_save(ar, version); 00171 try { 00172 ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(Simulation); 00173 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00174 } 00175 try { 00176 ar << BOOST_SERIALIZATION_NVP(Ninter); 00177 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00178 } 00179 try { 00180 ar << BOOST_SERIALIZATION_NVP(use_tempering); 00181 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00182 } 00183 try { 00184 ar << BOOST_SERIALIZATION_NVP(tpow); 00185 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00186 } 00187 try { 00188 ar << BOOST_SERIALIZATION_NVP(minmc); 00189 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00190 } 00191 try { 00192 ar << BOOST_SERIALIZATION_NVP(ITMAX); 00193 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00194 } 00195 try { 00196 ar << BOOST_SERIALIZATION_NVP(MaxT); 00197 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00198 } 00199 try { 00200 ar << BOOST_SERIALIZATION_NVP(width); 00201 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00202 } 00203 try { 00204 ar << BOOST_SERIALIZATION_NVP(beta); 00205 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00206 } 00207 try { 00208 ar << BOOST_SERIALIZATION_NVP(factor); 00209 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00210 } 00211 try { 00212 ar << BOOST_SERIALIZATION_NVP(mstat0); 00213 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00214 } 00215 try { 00216 ar << BOOST_SERIALIZATION_NVP(mstat1); 00217 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00218 } 00219 try { 00220 ar << BOOST_SERIALIZATION_NVP(Ntot); 00221 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00222 } 00223 try { 00224 ar << BOOST_SERIALIZATION_NVP(accnum); 00225 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00226 } 00227 try { 00228 ar << BOOST_SERIALIZATION_NVP(swapnum); 00229 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00230 } 00231 try { 00232 ar << BOOST_SERIALIZATION_NVP(up); 00233 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00234 } 00235 try { 00236 ar << BOOST_SERIALIZATION_NVP(down); 00237 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00238 } 00239 try { 00240 ar << BOOST_SERIALIZATION_NVP(upM); 00241 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00242 } 00243 try { 00244 ar << BOOST_SERIALIZATION_NVP(downM); 00245 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00246 } 00247 try { 00248 ar << BOOST_SERIALIZATION_NVP(updownNum); 00249 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00250 } 00251 try { 00252 ar << BOOST_SERIALIZATION_NVP(unit); 00253 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00254 } 00255 this->post_save(ar, version); 00256 } 00257 00258 template<class Archive> 00259 void load(Archive & ar, const unsigned int version) { 00260 this->pre_load(ar, version); 00261 try { 00262 ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(Simulation); 00263 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00264 } 00265 try { 00266 ar >> BOOST_SERIALIZATION_NVP(Ninter); 00267 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00268 } 00269 try { 00270 ar >> BOOST_SERIALIZATION_NVP(use_tempering); 00271 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00272 } 00273 try { 00274 ar >> BOOST_SERIALIZATION_NVP(tpow); 00275 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00276 } 00277 try { 00278 ar >> BOOST_SERIALIZATION_NVP(minmc); 00279 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00280 } 00281 try { 00282 ar >> BOOST_SERIALIZATION_NVP(ITMAX); 00283 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00284 } 00285 try { 00286 ar >> BOOST_SERIALIZATION_NVP(MaxT); 00287 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00288 } 00289 try { 00290 ar >> BOOST_SERIALIZATION_NVP(width); 00291 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00292 } 00293 try { 00294 ar >> BOOST_SERIALIZATION_NVP(beta); 00295 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00296 } 00297 try { 00298 ar >> BOOST_SERIALIZATION_NVP(factor); 00299 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00300 } 00301 try { 00302 ar >> BOOST_SERIALIZATION_NVP(mstat0); 00303 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00304 } 00305 try { 00306 ar >> BOOST_SERIALIZATION_NVP(mstat1); 00307 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00308 } 00309 try { 00310 ar >> BOOST_SERIALIZATION_NVP(Ntot); 00311 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00312 } 00313 try { 00314 ar >> BOOST_SERIALIZATION_NVP(accnum); 00315 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00316 } 00317 try { 00318 ar >> BOOST_SERIALIZATION_NVP(swapnum); 00319 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00320 } 00321 try { 00322 ar >> BOOST_SERIALIZATION_NVP(up); 00323 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00324 } 00325 try { 00326 ar >> BOOST_SERIALIZATION_NVP(down); 00327 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00328 } 00329 try { 00330 ar >> BOOST_SERIALIZATION_NVP(upM); 00331 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00332 } 00333 try { 00334 ar >> BOOST_SERIALIZATION_NVP(downM); 00335 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00336 } 00337 try { 00338 ar >> BOOST_SERIALIZATION_NVP(updownNum); 00339 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00340 } 00341 try { 00342 ar >> BOOST_SERIALIZATION_NVP(unit); 00343 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00344 } 00345 this->post_load(ar, version); 00346 } 00347 00348 00349 }; 00350 } 00351 BIE_CLASS_TYPE_INFO(BIE::TemperedSimulation) 00352 BIE_CLASS_EXPORT_KEY(BIE::TemperedSimulation) 00353 #endif Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:11 2010 by
|