00001 /************************************************************************ 00002 * Verve * 00003 * Copyright (C) 2004-2006 * 00004 * Tyler Streeter tylerstreeter@gmail.com * 00005 * All rights reserved. * 00006 * Web: http://verve-agents.sourceforge.net * 00007 * * 00008 * This library is free software; you can redistribute it and/or * 00009 * modify it under the terms of EITHER: * 00010 * (1) The GNU Lesser General Public License as published by the Free * 00011 * Software Foundation; either version 2.1 of the License, or (at * 00012 * your option) any later version. The text of the GNU Lesser * 00013 * General Public License is included with this library in the * 00014 * file license-LGPL.txt. * 00015 * (2) The BSD-style license that is included with this library in * 00016 * the file license-BSD.txt. * 00017 * * 00018 * This library is distributed in the hope that it will be useful, * 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * 00021 * license-LGPL.txt and license-BSD.txt for more details. * 00022 ************************************************************************/ 00023 00024 #ifndef VERVE_RBF_POPULATION_H 00025 #define VERVE_RBF_POPULATION_H 00026 00027 #include "Population.h" 00028 00029 namespace verve 00030 { 00031 class Projection; 00032 struct RBFInputData; 00033 00039 class RBFPopulation : public Population 00040 { 00041 public: 00042 VERVE_DECL RBFPopulation(); 00043 00044 VERVE_DECL virtual ~RBFPopulation(); 00045 00047 VERVE_DECL virtual void VERVE_CALL init( 00048 const RBFInputData& inputData, bool isDynamic); 00049 00052 VERVE_DECL virtual void VERVE_CALL resetShortTermMemory(); 00053 00057 VERVE_DECL virtual void VERVE_CALL updateFiringRatesRBF( 00058 const RBFInputData& inputData, bool allowDynamicRBFCreation); 00059 00061 VERVE_DECL virtual unsigned int VERVE_CALL 00062 getNumActiveNeurons()const; 00063 00066 VERVE_DECL virtual Neuron* VERVE_CALL getActiveNeuron( 00067 unsigned int i); 00068 00073 VERVE_DECL virtual real VERVE_CALL computeMaxActivationSum()const; 00074 00075 protected: 00077 virtual void clear(); 00078 00080 virtual void createNeuron(unsigned int id); 00081 00084 void makeNewRBF(const RBFInputData& inputData); 00085 00087 void connectNewRBFToTargets(Neuron* n); 00088 00090 unsigned int mContinuousResolution; 00091 00093 unsigned int mNumDiscreteDimensions; 00094 00096 unsigned int mNumContinuousDimensions; 00097 00101 bool mIsDynamic; 00102 00105 bool mSingleState; 00106 00109 real mStdDevWidth; 00110 00114 std::vector<Neuron*> mActiveNeurons; 00115 }; 00116 } 00117 00118 #endif