00001
00020 #ifndef AURESERVOIR_INIT_H__
00021 #define AURESERVOIR_INIT_H__
00022
00023 #include "utilities.h"
00024
00025 namespace aureservoir
00026 {
00027
00033 enum InitAlgorithm
00034 {
00035 INIT_STD
00036 };
00037
00044 enum InitParameter
00045 {
00046 CONNECTIVITY,
00047 ALPHA,
00048 IN_CONNECTIVITY,
00049 IN_SCALE,
00050 IN_SHIFT,
00051 FB_CONNECTIVITY,
00052 FB_SCALE,
00053 FB_SHIFT,
00054 LEAKING_RATE,
00055 TIKHONOV_FACTOR,
00056 DS_USE_CROSSCORR,
00057 DS_USE_GCC,
00058 DS_MAXDELAY,
00059 IP_LEARNRATE,
00060 IP_MEAN,
00061 IP_VAR
00062 };
00063
00064 template <typename T> class ESN;
00065
00078 template <typename T>
00079 class InitBase
00080 {
00081 public:
00082
00084 InitBase(ESN<T> *esn) { esn_=esn; }
00085
00087 virtual ~InitBase() {}
00088
00090 virtual void init() throw(AUExcept) = 0;
00091
00092 protected:
00093
00095 virtual void checkInitParams() throw(AUExcept);
00096
00098 virtual void allocateWorkData();
00099
00101 ESN<T> *esn_;
00102 };
00103
00114 template <typename T>
00115 class InitStd : public InitBase<T>
00116 {
00117 using InitBase<T>::esn_;
00118
00119 public:
00120 InitStd(ESN<T> *esn) : InitBase<T>(esn) {}
00121 virtual ~InitStd() {}
00122
00124 virtual void init() throw(AUExcept);
00125 };
00126
00127 }
00128
00129 #endif // AURESERVOIR_INIT_H__