chiark / gitweb /
routesearch: change granu to be higher for more specific (more granularity)
[ypp-sc-tools.db-test.git] / yarrg / rssearch.c
index 5ad6136180fa528ab220c06b8c74ad78771954af..9676640aafc9e3a28a14b2374660d777e5806c55 100644 (file)
@@ -95,13 +95,13 @@ static double process_route(int nports, int totaldist,
 
   PotentialResult *buckets[GRANUS];
   int granui;
-  for (granui=mingranu; granui<GRANUS; granui++) {
+  for (granui=0; granui<granus; granui++) {
     PotentialResult **buckets_fin;
     int mid, fin;
     switch (granui) {
-    case 0: fin=finisle; mid=midisle; break;
+    case 0: fin=finarch; mid=midarch; break;
     case 1: fin=finisle; mid=midarch; break;
-    case 2: fin=finarch; mid=midarch; break;
+    case 2: fin=finisle; mid=midisle; break;
     default: abort();
     }
     buckets_fin= ONDEMAND(buckets_base[granui][fin], granusz_mid[granui]);
@@ -109,8 +109,8 @@ static double process_route(int nports, int totaldist,
   }
 
   if (nports>=2) {
-    if (guess[A] <= buckets[mingranu]->value[A] &&
-       guess[P] <= buckets[mingranu]->value[P]) {
+    if (guess[A] <= buckets[0]->value[A] &&
+       guess[P] <= buckets[0]->value[P]) {
       ctr_routes_bucketelim++;
       debugf(" ELIM %f %f\n", guess[A], guess[P]);
       return guess[A];
@@ -129,7 +129,7 @@ static double process_route(int nports, int totaldist,
     return value[0];
   }
 
-  for (granui=mingranu; granui<GRANUS; granui++) {
+  for (granui=granus-1; granui>=0; granui--) {
     PotentialResult *bucket= buckets[granui];
 
     if (value[A] <= bucket->value[A] &&
@@ -149,7 +149,7 @@ static double process_route(int nports, int totaldist,
        debugf("      ");
       } else {
        int pos;
-       ctr_newbests_granu[ap]++;
+       ctr_newbests_granu[granui*AP+ap]++;
        bucket->value[ap]= value[ap];
        memcpy(bucket->ports[ap], ports, sizeof(*ports) * nports);
        if (nports < MAX_ROUTELEN-1) bucket->ports[ap][nports]= -1;
@@ -215,7 +215,7 @@ void search(int start_isle, int final_isle_spec,
 
 int nhighscores[GRANUS][AP];
 HighScoreEntry *highscores[GRANUS][AP];
-int mingranu, granusz_fin[GRANUS], granusz_mid[GRANUS];
+int granus=GRANUS, granusz_fin[GRANUS], granusz_mid[GRANUS];
 
 int narches;
 char **archnames;
@@ -254,7 +254,7 @@ void setup_search(void) {
   }
   sqlite3_finalize(archs);
 
-  granusz_fin[0]=                granusz_mid[0]= islandtablesz;
+  granusz_fin[0]=                granusz_mid[0]= narches;
   granusz_fin[1]= islandtablesz; granusz_mid[1]= narches;
-  granusz_fin[2]=                granusz_mid[2]= narches;
+  granusz_fin[2]=                granusz_mid[2]= islandtablesz;
 }