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_NEURON_H 00025 #define VERVE_NEURON_H 00026 00027 #include "Globals.h" 00028 00029 namespace verve 00030 { 00031 class Connection; 00032 00038 class Neuron 00039 { 00040 public: 00041 VERVE_DECL Neuron(unsigned int id); 00042 00047 VERVE_DECL virtual ~Neuron(); 00048 00050 VERVE_DECL virtual void VERVE_CALL resetShortTermMemory(); 00051 00054 VERVE_DECL virtual void VERVE_CALL setFiringRate(real value); 00055 00057 VERVE_DECL virtual real VERVE_CALL getFiringRate()const; 00058 00060 VERVE_DECL virtual void VERVE_CALL addToSynapticInputSum(real delta); 00061 00066 VERVE_DECL virtual void VERVE_CALL updateFiringRateLinear(); 00067 00071 VERVE_DECL virtual void VERVE_CALL 00072 updateFiringRateLinearBoundedNegOneToOne(); 00073 00077 VERVE_DECL virtual void VERVE_CALL 00078 updateFiringRateLinearBoundedZeroToOne(); 00079 00084 VERVE_DECL virtual void VERVE_CALL updateFiringRateSigmoid(); 00085 00087 VERVE_DECL virtual void VERVE_CALL addDendrite(Connection* c); 00088 00090 VERVE_DECL virtual unsigned int VERVE_CALL getNumDendrites()const; 00091 00093 VERVE_DECL virtual Connection* VERVE_CALL getDendrite(unsigned int i); 00094 00096 VERVE_DECL virtual void VERVE_CALL addAxon(Connection* c); 00097 00099 VERVE_DECL virtual unsigned int VERVE_CALL getNumAxons()const; 00100 00102 VERVE_DECL virtual Connection* VERVE_CALL getAxon(unsigned int i); 00103 00106 VERVE_DECL virtual int VERVE_CALL getID()const; 00107 00111 VERVE_DECL virtual void VERVE_CALL normalizeInputWeights(); 00112 00113 protected: 00116 unsigned int mID; 00117 00119 real mFiringRate; 00120 00122 real mSynapticInputSum; 00123 00125 std::vector<Connection*> mDendrites; 00126 00128 std::vector<Connection*> mAxons; 00129 }; 00130 } 00131 00132 #endif