mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | |
| //	$(VARIANT) -nogui -dhrg embedded-graphs/facebook_combined_result -contll -iterate 99 -contll -esave > $@
 | |
| 
 | |
| namespace dhrg {
 | |
| 
 | |
| bool is(char *where, const char *what) {
 | |
|   while(*where && *what && *where == *what) where++, what++;
 | |
|   return !*what;
 | |
|   }
 | |
| 
 | |
| void ground_truth_test(string s) {
 | |
| 
 | |
|   logistic cont;
 | |
| 
 | |
|   vector<ld> logliks;
 | |
|   vector<string> reps;
 | |
| 
 | |
|   auto report = [&] (string s, ld val) {
 | |
|     logliks.push_back(val);
 | |
|     reps.push_back(s);
 | |
|     println(hlog, "REPORT ", s, " = ", val);
 | |
|     };
 | |
| 
 | |
|   if(1) {
 | |
|     FILE *f = fopen(("embout/" + s).c_str(), "rb");
 | |
|     char buf[999999];
 | |
|     int siz = fread(buf, 1, 999999, f);
 | |
|     
 | |
|     for(int i=0; i<siz; i++) if(is(buf+i, "Embedded Log-likelihood: "))
 | |
|       report("bfkl", atof(buf+i+25));
 | |
| 
 | |
|     fclose(f);
 | |
|     }
 | |
| if(1) {
 | |
|   dhrg_init(); read_graph_full("data/simg-" + s);
 | |
| 
 | |
| 
 | |
|   origcoords();
 | |
|   build_disttable();
 | |
| 
 | |
|   cont.setRT(graph_R, graph_T);
 | |
| 
 | |
|   report("gz", loglik_cont(cont));
 | |
|   fix_logistic_parameters(cont, loglik_cont, "lcont", 1e-3);
 | |
|   report("grc", loglik_cont(cont));
 | |
| 
 | |
|   cellcoords();
 | |
|   build_disttable();
 | |
| 
 | |
|   report("gco", loglikopt());
 | |
|   report("gcm", loglikopt_mono());
 | |
|   report("gcrt", loglik_logistic());
 | |
| 
 | |
|   cont.setRT(graph_R, graph_T);
 | |
|   report("gcz", loglik_cont(cont));
 | |
|   fix_logistic_parameters(cont, loglik_cont, "lcont", 1e-3);
 | |
|   report("gcrc", loglik_cont(cont));
 | |
| 
 | |
|   embedder_loop(20);
 | |
| 
 | |
|   report("geo", loglikopt());
 | |
|   report("gem", loglikopt_mono());
 | |
|   report("gert", loglik_logistic());
 | |
| 
 | |
|   cellcoords();
 | |
|   build_disttable();
 | |
| 
 | |
|   cont.setRT(graph_R, graph_T);
 | |
|   fix_logistic_parameters(cont, loglik_cont, "lcont", 1e-3);  
 | |
|   report("gerc", loglik_cont(cont));
 | |
| 
 | |
|   delete mroot;
 | |
|   mroot = NULL;
 | |
|   segmentcount = 0;
 | |
|   for(int i=0; i<MAXDIST; i++) tally[i] = 0;
 | |
|   for(int i=0; i<MAXDIST; i++) edgetally[i] = 0;
 | |
|   vertices.clear();
 | |
|   rogueviz::close();
 | |
| }
 | |
| 
 | |
|   dhrg_init(); read_graph_full("data/sime-" + s);
 | |
|   origcoords();
 | |
|   build_disttable();
 | |
|   cont.setRT(graph_R, graph_T);
 | |
|   report("ez", loglik_cont(cont));
 | |
|   fix_logistic_parameters(cont, loglik_cont, "lcont", 1e-3);
 | |
|   report("erc", loglik_cont(cont));
 | |
| 
 | |
|   report("eco", loglikopt());
 | |
|   report("ecm", loglikopt_mono());
 | |
|   report("ecrt", loglik_logistic());
 | |
| 
 | |
|   cellcoords();
 | |
|   build_disttable();
 | |
| 
 | |
|   cont.setRT(graph_R, graph_T);
 | |
|   report("ecz", loglik_cont(cont));
 | |
|   fix_logistic_parameters(cont, loglik_cont, "lcont", 1e-3);
 | |
|   report("ecrc", loglik_cont(cont));
 | |
| 
 | |
|   long long a = SDL_GetTicks();
 | |
|   embedder_loop(20);
 | |
|   long long v = SDL_GetTicks();
 | |
|   long long tim = v - a;
 | |
| 
 | |
|   report("eeo", loglikopt());
 | |
|   report("eem", loglikopt_mono());
 | |
|   report("eert", loglik_logistic());
 | |
| 
 | |
|   cellcoords();
 | |
|   build_disttable();
 | |
| 
 | |
|   cont.setRT(graph_R, graph_T);
 | |
|   fix_logistic_parameters(cont, loglik_cont, "lcont", 1e-3);  
 | |
|   report("eerc", loglik_cont(cont));
 | |
| 
 | |
|   print(hlog, "HDR;", separated(";", reps), ";TIME;N;GROWTH\n");
 | |
|   print(hlog, "RES'", separated(";", logliks), ";", int(tim), ";", N, ";", cgi.expansion->get_growth());
 | |
|   }
 | |
| 
 | |
| }
 | 
