00001
00025 #ifndef __KITANO_H__
00026 #define __KITANO_H__
00027
00028 #include <magic/mtable.h>
00029 #include <annalee/anngenes.h>
00030
00031
00032 class ANNetwork;
00033
00034
00036
00037
00038
00039
00040
00041
00042
00044
00048 class KitanoEncoding : public ANNEncoding {
00049 decl_dynamic (KitanoEncoding);
00050 public:
00051
00052 KitanoEncoding () {FORBIDDEN}
00053
00062 KitanoEncoding (const GeneticID& name,
00063 const StringMap& params);
00064 KitanoEncoding (const KitanoEncoding& orig);
00065
00066
00067
00069 virtual Genstruct* replicate () const {return new KitanoEncoding (*this);}
00071 virtual void copy (const Genstruct& other);
00073 virtual bool execute (const GeneticMsg& msg) const;
00075 virtual void addPrivateGenes (Gentainer& g, const StringMap& params);
00077 virtual void check () const;
00078
00079 private:
00080 int mIters;
00081 int mNonTerminals;
00082 int mRules;
00083
00085 enum strangevalues {VOIDAREA=-1, FINALZERO=-2, FINALONE=-3, UNRESOLVED=-4};
00086
00087 static Gentainer* makeGenes ();
00088
00094 PackTable<int>* decodeMatrix (const PackTable<int>& string,
00095 const PackTable<int>& rules,
00096 int l) const;
00097
00100 ANNetwork* makeNet (const PackTable<int>& connmat) const;
00101 };
00102
00103 #endif
00104