mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-10-25 02:47:40 +00:00
rogueviz:: added DHRG
This commit is contained in:
121
rogueviz/dhrg/groundtruth.cpp
Normal file
121
rogueviz/dhrg/groundtruth.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
|
||||
// $(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());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user