Beispiel #1
0
int main(int argc, char **argv)
{
	printf("r\n");
	timeDelay(5);
	printf("a\n");
	timeDelay(1);
	return 0;
}
	void escapeNoiseNeuron::excite ( baseType c )
	{
		//				baseType phase = 1.0 + pcoBase::exactTime - this->x[0];
		if ( ( pcoBase::nextFiring() - this->time >= timeDelay() ) && ( this->time - lastFiring >t_ref() -timeDelay() ) ) // nicht mehr refraktär und noch nicht feuernd
		{
			pot = pot + c;


			baseType newKey = this->time + timeDelay() +gslNoise::getExponential ( exp ( - escapeNoise_a() * pot+ escapeNoise_b() ) );
			//					pcoBase::decreaseKey();
			eventHandler::updateKey ( _fire_, newKey );


		}
	}
			void pulseCoupledExcitatoryNeuron::setInitialCondition ( vector<double> &r )
			{
				baseType value = r[0];
				if ( value < 0 )   // refrakt�r
				{
					refractory = true;
					registerCallBack(_fire_, numeric_limits<baseType>::max());
					lastFiring = dynNode::time;
				}
				else if (value >= 1.0)   // feurend
				{
					refractory = false;
					registerCallBack(_fire_, dynNode::time + timeDelay());
									}
				else if (value == 0.0) // membranpotential null 
				{
					refractory = false;
					lastFiring = - numeric_limits<baseType>::max();
					registerCallBack(_fire_, numeric_limits<baseType>::max());

				}
				else   // membranpotential zwischen 0 und 1
				{
					refractory = false;
					lastFiring = dynNode::time + 1 / leakage() * log ( value );
					registerCallBack(_fire_, numeric_limits<baseType>::max());
				}

			}
			void pulseCoupledExcitatoryNeuron::excite ( baseType c )           // gibt zurück, ob das Neuron sofort feuert.
			{
//				numberOfExcitations++;
				if ( nextFiring() != numeric_limits<baseType>::max() )
					return;
				if (!refractory)
				{

					baseType phase = dynNode::time - lastFiring;
					baseType pot = exp ( -  leakage() * phase );
					if ( pot + c > 1 )
						eventHandler::decreaseKey(_fire_, dynNode::time + timeDelay());

					else
						lastFiring = dynNode::time + 1.0/ leakage() * log (pot  + c );
				}
				if ( refractory && dynNode::time - lastFiring > t_ref())
				{
					refractory = false;
					lastFiring = dynNode::time +  1.0 / leakage() * log ( c );
				}
			}
	void pcoDelay::sendExcitations ()
	{
		registerOneTimeCallBack ( _distributeExcitations_, dynNode::time + timeDelay() );
//		eventHandler::increaseKey ( _fire_, time + numeric_limits<baseType>::epsilon() * 1000.0 );
	}