00001
00025 #ifndef __NEURALENV__
00026 #define __NEURALENV__
00027
00028 #include <nhp/gaenvrnmt.h>
00029 #include <inanna/patternset.h>
00030
00031
00032 class PatternSet;
00033 template<class K, class V> class Map;
00034
00035
00045 class LearningEAEnv : public EAEnvironment {
00046 decl_dynamic (LearningEAEnv);
00047 public:
00048
00049 LearningEAEnv ();
00050 LearningEAEnv (const PatternSet& trainset,
00051 const PatternSet& evaluationset,
00052 const PatternSet& reportset,
00053 StringMap& params);
00054
00063 void setProblemType (int pt) {mProblemType=pt;}
00064
00072 enum problemtypes {CLASSIFICATION=0, CLASSIFICATION2, APPROXIMATION};
00073
00074
00075
00076 virtual void addFeaturesTo (Genome& genome) const;
00077
00079 virtual void cycle_report (OStream& log, OStream& out);
00080
00082 virtual double evaluateg (const Individual& genome);
00083
00085 virtual DataOStream& operator>> (DataOStream& out) const;
00086
00088 virtual void check () const;
00089
00090 protected:
00091
00095 void permutate ();
00096
00098 void splitTrainData ();
00099 Trainer* createTrainer () const;
00100
00101 private:
00102 PatternSet mTrainData;
00103 PatternSet mTrainSet;
00104 PatternSet mEvaluationSet;
00105 const PatternSource& mReportSet;
00106 StringMap& mParams;
00107 int mProblemType;
00108 double mEvalPart;
00109 double mTermPart;
00110 int mMaxTrainCycles;
00111 int mReportCycles;
00112 int mValidInterval;
00113 String mTermMethod;
00114 bool mPermutate;
00115 };
00116
00117 #endif
00118