void setup_search(void);
void search(int start_isle, PotentialResult ****strat_base_io
- /* strat_base[finalisle][midisle]-> */);
+ /* strat_base[finalarch][midarch]-> */);
extern double max_mass, max_volu, max_capi;
extern double distance_loss_factor_per_league;
resultsix++;
}
- int i, midisle, finisle;
+ int i, midarch, finarch;
for (i=0; i<resultsix; i++) {
fprintf(stderr,"================== start #%d ==================\n",i);
PotentialResult ***strat_resultsix= results[i];
if (!strat_resultsix) continue;
- fprintf(stderr," ");
- for (midisle=0; midisle<islandtablesz; midisle++) {
- fprintf(stderr,"|mi%-3d",midisle);
+ fprintf(stderr," ");
+ for (midarch=0; midarch<narches; midarch++) {
+ fprintf(stderr,"| mid %d ",midarch);
}
fprintf(stderr,"\n");
- for (finisle=0; finisle<islandtablesz; finisle++) {
- PotentialResult **strat_finisle= strat_resultsix[finisle];
- if (!strat_finisle) continue;
- fprintf(stderr,"f%-3d",finisle);
- for (midisle=0; midisle<islandtablesz; midisle++) {
- PotentialResult *result= strat_finisle[midisle];
+ for (finarch=0; finarch<narches; finarch++) {
+ PotentialResult **strat_finarch= strat_resultsix[finarch];
+ if (!strat_finarch) continue;
+ fprintf(stderr,"f%d",finarch);
+ for (midarch=0; midarch<narches; midarch++) {
+ PotentialResult *result= strat_finarch[midarch];
if (!result) {
fprintf(stderr,"| ");
} else {
static PotentialResult ***strat_base;
+static inline int isle2arch(int isle) {
+ int arch= islandid2arch[isle];
+ assert(arch>=0);
+ return arch;
+}
+
static double process_route(int nports, int totaldist,
double overestimate_excepting_tail) {
int i;
debugf(" %d",ports[i]);
debugf("\n");
- int finalisle= ports[nports-1];
- int midisle= ports[nports/2];
+ int finisle= ports[nports-1]; int finarch= isle2arch(finisle);
+ int midisle= ports[nports/2]; int midarch= isle2arch(midisle);
- PotentialResult **strat_fin= ONDEMAND(strat_base[finalisle], islandtablesz);
- PotentialResult *strat= ONDEMAND(strat_fin[midisle], 1);
+ PotentialResult **strat_fin= ONDEMAND(strat_base[finarch], narches);
+ PotentialResult *strat= ONDEMAND(strat_fin[midarch], 1);
if (nports>=2) {
int pair[2], i;
debugf(" SOMEHOW BEST\n");
- fildebugf("final %3d mid %3d ",finalisle,midisle);
+ fildebugf("final %d:%3d mid %d:%3d ",finarch,finisle,midarch,midisle);
#define CHK(absperl) \
fildebugf(#absperl " %15f", absperl); \
}
void search(int start_isle, PotentialResult ****strat_base_io) {
- strat_base= ONDEMAND(*strat_base_io, islandtablesz);
+ strat_base= ONDEMAND(*strat_base_io, narches);
recurse(start_isle,0,0,1e6);
}