From: Ian Jackson Date: Sat, 17 Oct 2009 11:55:13 +0000 (+0100) Subject: routesearch: correct elim algorithms X-Git-Tag: 5.0^2~33 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=commitdiff_plain;h=ed509bbddb84dee7121fdaf11d178b51e8e43186 routesearch: correct elim algorithms --- diff --git a/yarrg/rssearch.c b/yarrg/rssearch.c index 881d5de..b05a275 100644 --- a/yarrg/rssearch.c +++ b/yarrg/rssearch.c @@ -43,7 +43,7 @@ static Bucket ***buckets_base[GRANUS]; static double process_route(int nports, int totaldist, double overestimate_excepting_tail) { - int i, ap; + int i, ap, granui; int leagues_divisor= totaldist + nports; ctr_routes_considered++; @@ -79,12 +79,15 @@ static double process_route(int nports, int totaldist, return guess[A]; } - if (guess[A] <= highscores[granus-1][A][0].value && - guess[P] <= highscores[granus-1][P][0].value) { - ctr_routes_quickelim++; - debugf(" QELIM %f %f\n", guess[A], guess[P]); - return guess[A]; + for (granui=0; granui highscores[granui][A][0].value || + guess[P] > highscores[granui][P][0].value) + goto not_quickelim; } + ctr_routes_quickelim++; + debugf(" QELIM %f %f\n", guess[A], guess[P]); + return guess[A]; + not_quickelim:; } int finisle= ports[nports-1]; @@ -94,7 +97,6 @@ static double process_route(int nports, int totaldist, int midarch= route2midarch(ports,nports); Bucket *buckets[GRANUS]; - int granui; for (granui=0; granui=2) { - if (guess[A] <= buckets[0]->prs[A].value[A] && - guess[P] <= buckets[0]->prs[P].value[P]) { - ctr_routes_bucketelim++; - debugf(" ELIM %f %f\n", guess[A], guess[P]); - return guess[A]; + for (granui=0; granui buckets[granui]->prs[A].value[A] || + guess[P] > buckets[granui]->prs[P].value[P]) + goto not_bucketelim; } + ctr_routes_bucketelim++; + debugf(" ELIM %f %f\n", guess[A], guess[P]); + return guess[A]; + not_bucketelim: debugf(" COMPUTE %f %f\n", guess[A], guess[P]); } diff --git a/yarrg/x.gdb b/yarrg/x.gdb index 32daa5f..3bb9ef6 100644 --- a/yarrg/x.gdb +++ b/yarrg/x.gdb @@ -1,4 +1,4 @@ file ./routesearch -set args OCEAN-Midnight.db 13470 20220 -1 0.0005 search 10 10 30 any 34 7 5 10 35 24 2 2>u +set args -d OCEAN-Midnight.db -g 3 -D1 13470 20220 -1 0.0005 search 10 10 30 any 34 7 5 10 35 24 2 2>u #break rssearch.c:179 if ports[0]==24 && ports[1]==21 run