#ifndef NS_LAYER_HH #define NS_LAYER_HH #include <vector> #include <string> #include <functional> using std::vector; using std::string; #include "NsPattern.hh" #include "NsUnit.hh" class NsLayer { public: NsLayer(const string &id, const string &type); void makePattern(const string &patId); void setPattern(const string &patId); void setPattern(const NsPattern &pat); void clearPatterns(); const string &setRandomPattern(); void clear(); void randomize(); void computeNewActivations(); void applyNewActivations(); void adjustInhibition(); void setFrozen(bool state); void lesion(); void maintain(); uint getNumActive() const; static void printScoreHdr(); uint getNumHits(const string &targetId) const; static void printNumActiveHdr(); void printNumActive() const; void printState() const; void printGrid(const string &tag, const string &targetId) const; void saveInhibition() { savedInhibition = inhibition; } void restoreInhibition() { inhibition = savedInhibition; } string toStr(uint iLvl = 0, const string &iStr = " ") const; const string id; const string type; const uint width; const uint height; const double k; const double minInhibition; const double maxInhibition; const double initInhibition; const double inhibIncr; double inhibition; double savedInhibition; bool isClamped; bool isFrozen; bool isLesioned; vector<NsUnit *> units; bool orthogonalPatterns; uint nextPatternUnit; unordered_map<string, NsPattern> definedPatterns; vector<string> definedPatternIds; bool printPatterns; }; #endif