src/ell/SamplingAbortionCriterion.cc
Go to the documentation of this file.00001 #include "ell/SamplingAbortionCriterion.hh" 00002 00003 namespace ell 00004 { 00005 00007 SamplingAbortionCriterion::~SamplingAbortionCriterion() 00009 { 00010 } 00011 00012 } // namespace ell 00013 00014 namespace ell 00015 { 00016 00018 SAC_MaxIterations:: 00019 SAC_MaxIterations( const size_t maxIterations ) 00020 : MAX_ITERATIONS(maxIterations) 00021 , doneIterations(0) 00023 { 00024 } 00025 00027 SAC_MaxIterations::~SAC_MaxIterations() 00029 { 00030 } 00031 00032 00034 bool 00035 SAC_MaxIterations:: 00036 abortSampling( const LandscapeTopology* const lt 00037 , const bool ltChanged ) 00039 { 00040 doneIterations++; 00041 return doneIterations > MAX_ITERATIONS; 00042 } 00043 00044 00046 void 00047 SAC_MaxIterations:: 00048 reset( void ) 00050 { 00051 doneIterations = 0; 00052 } 00053 00054 } // namespace ell 00055 00056 00057 00058 namespace ell 00059 { 00060 00062 SAC_MaxNoChange:: 00063 SAC_MaxNoChange( const size_t maxNoChangeIterations ) 00064 : MAX_NO_CHANGE_ITERATIONS(maxNoChangeIterations) 00065 , iterationsWithoutChange(0) 00067 { 00068 } 00069 00071 SAC_MaxNoChange::~SAC_MaxNoChange() 00073 { 00074 } 00075 00076 00078 bool 00079 SAC_MaxNoChange:: 00080 abortSampling( const LandscapeTopology* const lt 00081 , const bool ltChanged ) 00083 { 00084 // check if lt was changed 00085 if ( ltChanged ) { 00086 iterationsWithoutChange = 0; 00087 } else { 00088 iterationsWithoutChange++; 00089 } 00090 return iterationsWithoutChange >= MAX_NO_CHANGE_ITERATIONS; 00091 } 00092 00093 00095 void 00096 SAC_MaxNoChange:: 00097 reset( void ) 00099 { 00100 iterationsWithoutChange = 0; 00101 } 00102 00103 } // namespace ell 00104 00105 namespace ell 00106 { 00107 00109 SAC_NoMinimaChange:: 00110 SAC_NoMinimaChange( const size_t maxNoChangeIterations ) 00111 : MAX_NO_CHANGE_ITERATIONS(maxNoChangeIterations) 00112 , iterationsWithoutChange(0) 00113 , lastNumOfMinima(0) 00115 { 00116 } 00117 00119 SAC_NoMinimaChange::~SAC_NoMinimaChange() 00121 { 00122 } 00123 00124 00126 bool 00127 SAC_NoMinimaChange:: 00128 abortSampling( const LandscapeTopology* const lt 00129 , const bool ltChanged ) 00131 { 00132 // check if minima number has changed 00133 if (!ltChanged || lt->getMinCount() == lastNumOfMinima) { 00134 iterationsWithoutChange++; 00135 } else { 00136 // minima number has changed --> update counter 00137 iterationsWithoutChange = 0; 00138 lastNumOfMinima = lt->getMinCount(); 00139 } 00140 return iterationsWithoutChange >= MAX_NO_CHANGE_ITERATIONS; 00141 } 00142 00143 00145 void 00146 SAC_NoMinimaChange:: 00147 reset( void ) 00149 { 00150 iterationsWithoutChange = 0; 00151 lastNumOfMinima = 0; 00152 } 00153 00154 } // namespace ell 00155 00156