Example #1
0
bool Node::hasNeighbor(int n, int *loc) const {
	bool found = false;
	if (loc)
		*loc = -1;
	for (int i = 0; i < nTotal(); i++) {
		if (edgeDest(i) == n) {
			found = true;
			if (loc)
				*loc = i;
			break;
		}
	}
	return found;
}
Example #2
0
const char * Node::s() const {
	String &w = Debug::str();
	w << "Node "
	;
	{
		for (int i = 0; i < nTotal(); i++) {
			if (i > 0)
				w << " ";
			int n = edgeDest(i);
			int data = edgeData(i);

			w << n;
			if (data >= 0)
				w << "(" << data << ")";
		}
	}
	return w.chars();
}
Example #3
0
int main(int argc, char * argv[])
{
	int i;
	parameters ap;

	long seed1=0,seed2=0; 

	simplmat <long> nTotal;
	simplmat <long> NTotal;
	simplmat <long> nOcupado;
	simplmat <long> NOcupado;
	bool priPro=false;
	
   	if( argc==2 )
   	{
        if( readParms(argv[1],ap) )
        {
        	cerr << "bad parms file " << argv[1] << endl;
        	exit(1);
        }
		seed1 = ap.rndSeed;
		if(seed1==-1)
			seed1=time(0);
		seed2 = (seed1+1);

		setall(seed1,seed2);

		nTotal.resize(ap.tFinal+1);
		nTotal.fill(0);
		NTotal.resize(ap.tFinal+1);
		NTotal.fill(0);
		NOcupado.resize(ap.tFinal+1);
		NOcupado.fill(0);
		nOcupado.resize(ap.tFinal+1);
		nOcupado.fill(0);
		double timeOcupa;
		
		if( ap.pomac )
		{
			ifstream pomacIn;
			while( ReadPomacParms(pomacIn,ap) )
					timeOcupa = DeterministicInvasion(ap,nTotal,NTotal,nOcupado,NOcupado);
		}
		else
		{
			if( ap.fullStoch )
				timeOcupa = StochasticInvasion(ap,nTotal,NTotal,nOcupado,NOcupado);
			else
				timeOcupa = DeterministicInvasion(ap,nTotal,NTotal,nOcupado,NOcupado);
		}	
		
		if(!ap.pomac)
		{
			ostringstream fname;
			fname << ap.fName << ".out"<< ends;

            
			fstream datafile;
			datafile.open(fname.str().c_str(),ios::in);
			if(!datafile )
				priPro=true;
			datafile.close();
			datafile.clear();
			datafile.open(fname.str().c_str(), ios::out | ios::app);
			if( !datafile )
				{
					cerr << "Cannot open file: " << ap.fName << endl;
					return 0;
				}
				if( priPro )
				{
					datafile << "DimX\tDimY\ttFinal\tg\tdj0\tdj1\talfa\tb\tda\tdensIni\tTime\tJuv\tAd\tJuvOcupa\tAdOcupa" << endl;				
					priPro = false;
				}

			for(i=0; i<ap.tFinal+1; i++)
			{
//				if(nOcupado(i)==0 && NOcupado(i)==0)
//					break;
				datafile << ap.DimX << "\t"
					<< ap.DimY << "\t"
					<< ap.tFinal << "\t"
					<< ap.g << "\t"
					<< ap.dj0 << "\t"
					<< ap.dj1 << "\t"
					<< ap.alfa << "\t"
					<< ap.b << "\t"
					<< ap.da << "\t"
					<< ap.densIni << "\t"
					<< i << "\t"
					<< nTotal(i) << "\t"
					<< NTotal(i) << "\t"
					<< nOcupado(i) << "\t"
					<< NOcupado(i) << endl;
			}	

			datafile << ap.DimX << "\t"
					<< ap.DimY << "\t"
					<< ap.tFinal << "\t"
					<< ap.g << "\t"
					<< ap.dj0 << "\t"
					<< ap.dj1 << "\t"
					<< ap.alfa << "\t"
					<< ap.b << "\t"
					<< ap.da << "\t"
					<< ap.densIni << "\t"
					<< "Time50%\t" 
					<< timeOcupa << endl;

		}

		return(0);

	}
	else
	{
        cerr << "Syntaxis: inva parms.dat" << endl;
    	exit(1);
    }
        
	return 0;
}