コード例 #1
0
ファイル: randomNetUtils.cpp プロジェクト: pront/nemo-mpi
nemo::Network* constructWattsStrogatz(unsigned k, unsigned p, unsigned ncount, unsigned dmax, bool stdp) {
	rng_t rng;
	/* Neuron parameters and weights are partially randomised */
	urng_t randomParameter(rng, boost::uniform_real<double>(0, 1));
	uirng_t randomDelay(rng, boost::uniform_int<>(1, dmax));

	std::vector<std::vector<unsigned> > matrix(ncount, std::vector<unsigned>(ncount));
	networkWattsStrogatz(matrix, ncount, k, p);

	nemo::Network* net = new nemo::Network();

	for ( unsigned nidx = 0; nidx < ncount; ++nidx ) {
		if ( nidx < (ncount * 4) / 5 ) { // excitatory
			addExcitatoryNeuron(net, nidx, randomParameter);
			for ( unsigned j = 0; j < ncount; ++j ) {
				if ( matrix[nidx][j] == 1 )
					net->addSynapse(nidx, j, randomDelay(), 0.5f * float(randomParameter()), stdp);
			}
		}
		else { // inhibitory
			addInhibitoryNeuron(net, nidx, randomParameter);
			for ( unsigned j = 0; j < ncount; ++j ) {
				if ( matrix[nidx][j] == 1 )
					net->addSynapse(nidx, j, 1U, float(-randomParameter()), 0);
			}
		}
	}
	return net;
}
コード例 #2
0
ファイル: random.cpp プロジェクト: MogeiWang/nemosim
nemo::Network*
construct(unsigned ncount, unsigned scount, unsigned dmax, bool stdp)
{
	rng_t rng;
	/* Neuron parameters and weights are partially randomised */
	urng_t randomParameter(rng, boost::uniform_real<double>(0, 1));
	uirng_t randomTarget(rng, boost::uniform_int<>(0, ncount-1));
	uirng_t randomDelay(rng, boost::uniform_int<>(1, dmax));

	nemo::Network* net = new nemo::Network();

	for(unsigned nidx=0; nidx < ncount; ++nidx) {
		if(nidx < (ncount * 4) / 5) { // excitatory
			addExcitatoryNeuron(net, nidx, randomParameter);
			for(unsigned s = 0; s < scount; ++s) {
				net->addSynapse(nidx, randomTarget(), randomDelay(), 0.5f * float(randomParameter()), stdp);
			}
		} else { // inhibitory
			addInhibitoryNeuron(net, nidx, randomParameter);
			for(unsigned s = 0; s < scount; ++s) {
				net->addSynapse(nidx, randomTarget(), 1U, float(-randomParameter()), 0);
			}
		}
	}
	return net;
}
コード例 #3
0
ファイル: firefly.c プロジェクト: rookie/Serenity
void fly_reset(Firefly* fly){
  if(fly == 0) return;
  if(fly->pin == 0) return;
  
  fly->songIndex = randomSong();
  //Serial.println(fly->songIndex+'a', BYTE);
  fly->currentNote = 0;
  fly->delay = randomDelay();
}
コード例 #4
0
int main(void) {
  char byte;
  uint16_t timerValue;

  // -------- Inits --------- //

  initUSART();
  initTimer1();
  LED_DDR = 0xff;                               /* all LEDs for output */
  BUTTON_PORT |= (1 << BUTTON);             /* enable internal pull-up */

  printString("\r\nReaction Timer:\r\n");
  printString("---------------\r\n");
  printString("Press any key to start.\r\n");

  // ------ Event loop ------ //
  while (1) {

    byte = receiveByte();                             /* press any key */
    printString("\r\nGet ready...");
    randomDelay();

    printString("\r\nGo!\r\n");
    LED_PORT = 0xff;                                     /* light LEDs */
    TCNT1 = 0;                                        /* reset counter */

    if (bit_is_clear(BUTTON_PIN, BUTTON)) {
            /* Button pressed _exactly_ as LEDs light up.  Suspicious. */
      printString("You're only cheating yourself.\r\n");
    }
    else {
      // Wait until button pressed, save timer value.
      loop_until_bit_is_clear(BUTTON_PIN, BUTTON);
      timerValue = TCNT1 >> 4;
      /* each tick is approx 1/16 milliseconds, so we bit-shift divide */

      printMilliseconds(timerValue);
      printComments(timerValue);
    }

    // Clear LEDs and start again.
    LED_PORT = 0x00;
    printString("Press any key to try again.\r\n");

  }                                                  /* End event loop */
  return (0);                            /* This line is never reached */
}
コード例 #5
0
ファイル: analyzer.C プロジェクト: johnbulava/HYpHMC
int main(int argc,char **argv) {
  LogLevel = 3;
  iniMPI(argc, argv);
  fftw_init_threads();
  fftw_plan_with_nthreads(1);  

  loadCommandLineParameters(argc,argv);
  loadDataFromAnalyzerToDoList();

  iniTools(537*Parameter_Job_ID);
  startTimer();
  if (Parameter_Job_ID>0) randomDelay(1000);
  
  SDReader = new StateDescriptorReader(Parameter_SD_FileName); 
  int threadCountPerNode = 1;
  int ParaOpMode = 0;
  char* fftPlanDescriptor = NULL;
  bool usexFFT = false;
  readOptimalFermionVectorEmbeddingAndFFTPlanFromTuningDB(SDReader->getL0(), SDReader->getL1(), SDReader->getL2(), SDReader->getL3(), threadCountPerNode, ParaOpMode, usexFFT, SDReader->getUseP(), SDReader->getUseQ(), SDReader->getUseR(), SDReader->getUseQHM(), fftPlanDescriptor);
  delete[] fftPlanDescriptor;

  char* fileNameExtension = SDReader->getFileNameExtension();
  ioControl = new AnalyzerIOControl(fileNameExtension, Parameter_Job_ID);
  delete[] fileNameExtension;
  fermiOps = new FermionMatrixOperations(SDReader->getL0(), SDReader->getL1(), SDReader->getL2(), SDReader->getL3(), SDReader->getRho(), SDReader->getR(), SDReader->getYN());  
  fermiOps->setMassSplitRatio(SDReader->getMassSplit());
  fermiOps->setAntiPeriodicBoundaryConditionsInTime(SDReader->useAntiPeriodicBoundaryConditionsInTimeDirection());

  iniAnalyzerObs();
  iniAuxVecs();
  createFolders();
  ioControl->removeDeprecatedInProgressFiles(48.0);

  if (LogLevel>2) printf("\nEntering main Analyzer-Loop.\n");
  int confID = -1;
  while (((confID=getNextConfIDforAnalysis())>=0) && (timePassed()<3600*Parameter_MaxRunTime)) {
    ioControl->markAsInProgress(confID);
    bool keepMarked = false;
    char* confFileName = ioControl->getPhiConfFileName(confID);
    AnalyzerPhiFieldConfiguration* phiFieldConf = new AnalyzerPhiFieldConfiguration(confFileName, fermiOps); 
    delete[] confFileName;

    if (phiFieldConf->getErrorState() == 0) {
      for (int I=0; I<analyzerObsCount; I++) {
        bool activeObs = false;
        for (int I2=0; I2<Parameter_tagCount; I2++) {
          if (analyzerObs[I]->isNick(Parameter_tags[I2])) activeObs = true;
        }
        if (activeObs) {
          if ((!analyzerObs[I]->isConfAnalyzed(confID)) && (analyzerObs[I]->shallConfBeAnalyzed(confID))) {
	    if (LogLevel>2) printf("Analyzing Observable %s...\n",analyzerObs[I]->getObsName());
            bool b = analyzerObs[I]->analyze(phiFieldConf, auxVecs);
  	    phiFieldConf->clearPhiFieldCopies();
            if (b) {
	      analyzerObs[I]->saveAnalyzerResults(confID);
	    } else {
	      keepMarked = true;
	      if (LogLevel>1) {
	        printf(" *** Could not analyze observable %s on configuration %d. Continue with next configuration.\n",analyzerObs[I]->getObsName(),confID);
	      }
	    }
 	  }
        }
      } 
    } else {
      keepMarked = true;
      if (LogLevel>1) {
        printf(" *** Could not load configuration file %d --> Skipping configuration file\n",confID);
      }
    }
  
    delete phiFieldConf;  
    if (!keepMarked) ioControl->unmarkAsInProgress(confID);
    if (Parameter_Job_ID>0) randomDelay(2);
  }
  if (LogLevel>2) printf("\nLeaving main Analyzer-Loop.\n\n");

  desini();
  desiniTools();
  fftw_cleanup_threads();
  if (LogLevel>1) printf("Analyzer terminated correctly.\n");
}
コード例 #6
0
ファイル: randomNetUtils.cpp プロジェクト: pront/nemo-mpi
/* Used to demonstrate the optimal network for MPI simulations */
nemo::Network* constructSemiRandom(unsigned ncount, unsigned scount, unsigned dmax, bool stdp, unsigned workers, float ratio) {
	rng_t rng;
	/* Neuron parameters and weights are partially randomised */
	urng_t randomParameter(rng, boost::uniform_real<double>(0, 1));
	uirng_t randomDelay(rng, boost::uniform_int<>(1, dmax));

	nemo::Network* net = new nemo::Network();

	/* Firstly, add ncount neurons to the network.
	 * Properties: 80% excitatory, 20% inhibitory.
	 */
	for ( unsigned nidx = 0; nidx < ncount; ++nidx ) {
		if ( nidx < (ncount * 4) / 5 ) { // excitatory
			addExcitatoryNeuron(net, nidx, randomParameter);
		}
		else { // inhibitory
			addInhibitoryNeuron(net, nidx, randomParameter);
		}
	}

	/* Initialize partition counters */
	float avgNeurons = ceil(((float) ncount) / ((float) workers));
	std::vector<unsigned> counters(workers, avgNeurons);
	counters.back() = ncount - (workers - 1) * avgNeurons;

	std::vector<std::pair<nidx_t, nidx_t> > ranges;

	/* Make index ranges for each partition */
	for ( unsigned r = 0; r < workers; r++ ) {
		unsigned start = r * avgNeurons;
		std::pair<unsigned, unsigned> range(start, start + counters[r] - 1);
		ranges.push_back(range);
	}

	for ( unsigned i = 0; i < workers; i++ ) {
		uirng_t randomLocalNeuron(rng, boost::uniform_int<>(ranges[i].first, ranges[i].second));
		unsigned partitionSynapses = counters[i] * scount;
		unsigned globalSynapses = ratio * partitionSynapses;
		unsigned localSynapses = partitionSynapses - globalSynapses;

//		std::cout << "partitionSynapses: " << partitionSynapses << std::endl;
//		std::cout << "localSynapses: " << localSynapses << std::endl;
//		std::cout << "globalSynapses: " << globalSynapses << std::endl;
//		std::cout << std::endl;

		for ( unsigned j = 0; j < localSynapses; j++ ) {
			unsigned source;
			unsigned target;
			while (true) {
				source = randomLocalNeuron();
				target = randomLocalNeuron();
				if ( source != target )
					break;
			}

			if ( randomLocalNeuron() < (ncount * 4) / 5 )
				net->addSynapse(source, target, randomDelay(), 0.5f * float(randomParameter()), stdp);
			else
				net->addSynapse(source, target, 1U, float(-randomParameter()), stdp);
		}

		for ( unsigned j = 0; j < globalSynapses; j++ ) {

			uirng_t randomWorker(rng, boost::uniform_int<>(0, workers - 1));
			unsigned randomNeighbour;
			while (true) {
				randomNeighbour = randomWorker();
				if ( randomNeighbour != i )
					break;
			}

			uirng_t randomGlobalNeuron(rng,
					boost::uniform_int<>(ranges[randomNeighbour].first, ranges[randomNeighbour].second));

			if ( randomLocalNeuron() < (ncount * 4) / 5 )
				net->addSynapse(randomLocalNeuron(), randomGlobalNeuron(), randomDelay(), 0.5f * float(randomParameter()), stdp);
			else
				net->addSynapse(randomLocalNeuron(), randomGlobalNeuron(), 1U, float(-randomParameter()), stdp);

		}
	}

//	std::cout << "net->neuronCount: " << net->neuronCount() << std::endl;
//	std::cout << "net->synapseCount: " << net->synapseCount() << std::endl;
	return net;
}
コード例 #7
0
ファイル: randomNetUtils.cpp プロジェクト: pront/nemo-mpi
/* Used for debugging */
nemo::Network* simpleNet(unsigned ncount, unsigned dmax, bool stdp) {
	rng_t rng;
	/* Neuron parameters and weights are partially randomised */
	urng_t randomParameter(rng, boost::uniform_real<double>(0, 1));
	uirng_t randomDelay(rng, boost::uniform_int<>(1, dmax));
	nemo::Network* net = new nemo::Network();
	for ( unsigned nidx = 0; nidx < ncount; ++nidx ) {
		if ( nidx < (ncount * 4) / 5 ) { // excitatory
			nemo::random::addExcitatoryNeuron(net, nidx, randomParameter);
			if ( nidx == 0 ) {
				net->addSynapse(nidx, 1, randomDelay(), 0.5f * float(randomParameter()), stdp);
				net->addSynapse(nidx, 6, randomDelay(), 0.5f * float(randomParameter()), stdp);
				net->addSynapse(nidx, 11, randomDelay(), 0.5f * float(randomParameter()), stdp);
				net->addSynapse(2, nidx, randomDelay(), 0.5f * float(randomParameter()), stdp);
				net->addSynapse(3, nidx, randomDelay(), 0.5f * float(randomParameter()), stdp);
				net->addSynapse(4, nidx, randomDelay(), 0.5f * float(randomParameter()), stdp);
			}
			if ( nidx == 8 ) {
				net->addSynapse(nidx, 2, randomDelay(), 0.5f * float(randomParameter()), stdp);
				net->addSynapse(nidx, 7, randomDelay(), 0.5f * float(randomParameter()), stdp);
				net->addSynapse(nidx, 14, randomDelay(), 0.5f * float(randomParameter()), stdp);
			}
		}
		else { // inhibitory
			nemo::random::addInhibitoryNeuron(net, nidx, randomParameter);
			if ( nidx == 13 ) {
				net->addSynapse(nidx, 3, randomDelay(), -0.5f * float(randomParameter()), stdp);
				net->addSynapse(nidx, 8, randomDelay(), -0.5f * float(randomParameter()), stdp);
				net->addSynapse(nidx, 14, randomDelay(), -0.5f * float(randomParameter()), stdp);
			}
		}
	}
	return net;
}