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; }
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(); }
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; }