chiark / gitweb /
routesearch: actually print number of routes requested, not one less
[ypp-sc-tools.db-live.git] / yarrg / rsvalue.c
index 30e561243135602bcae853b5f2f6b1d32138bb30..22b3d2988f89c857196509f83b14678df629073d 100644 (file)
@@ -5,6 +5,7 @@
 #include "rscommon.h"
 
 DEBUG_DEFINE_DEBUGF(value);
+DEBUG_DEFINE_SOME_DEBUGF(value2,debug2f);
 
 typedef struct { int mass, volu; } CommodInfo;
 static int commodstabsz;
@@ -136,16 +137,19 @@ static IslandPair *ipair_get_create(int si, int di) {
   assert(di < islandtablesz);
 
   if (!(ipa= ipairs[si])) {
-    ipa= ipairs[si]= mcalloc(sizeof(*ipa) * islandtablesz);
+    ipairs[si]= MCALLOC(ipa, islandtablesz);
   }
   if ((ip= ipa[di]))
     return ip;
 
-  ipa[di]= ip= mmalloc(sizeof(*ip));
+  ipa[di]= NEW(ip);
   ip->trades= 0;
   ip->route_tail_value= -1;
 
-  debugf("VALUE ipair_get(i%d,i%d) running...\n", si,di);
+  if (si==di) ctr_islands_arbitrage++;
+  else ctr_ipairs_relevant++;
+
+  debug2f("VALUE ipair_get(i%d,i%d) running...\n", si,di);
   SQL_MUST( sqlite3_bind_int(ss_ipair_dist, 1, si) );
   SQL_MUST( sqlite3_bind_int(ss_ipair_dist, 2, di) );
   assert(SQL_STEP(ss_ipair_dist));
@@ -311,6 +315,9 @@ double value_route(int nislands, const int *islands, int exclude_arbitrage) {
   lpx_delete_prob(lp);
   lp= 0;
 
+  debugf("    %s %f\n",
+        exclude_arbitrage ? "base value" : "route value",
+        profit);
   return profit;
 }
 
@@ -337,7 +344,7 @@ static void read_trades(void) {
     IslandPair *ip= ipair_get_create(cols[1], cols[3]);
     TradesBlock *block= ip->trades;
     if (!block || ip->trades->ntrades >= TRADES_PER_BLOCK) {
-      block= mmalloc(sizeof(*block));
+      NEW(block);
       block->next= ip->trades;
       ip->trades= block;
       block->ntrades= 0;
@@ -379,7 +386,7 @@ static void read_islandtradeends(const char *bs, int srcdstoff) {
        goto found;
     /* not found, add new end */
 
-    search= mmalloc(sizeof(*search));
+    NEW(search);
     search->commodid= commodid;
     search->price= price;
     search->next= *trades;
@@ -395,12 +402,11 @@ static void read_islandtradeends(const char *bs, int srcdstoff) {
 
 void setup_value(void) {
   sqlite3_stmt *sst;
-  int i;
 
   commodstabsz= sql_single_int("SELECT max(commodid) FROM commods") + 1;
-  commodstab= mmalloc(sizeof(*commodstab)*commodstabsz);
-  for (i=0; i<commodstabsz; i++)
-    commodstab[i].mass= commodstab[i].volu= -1;
+  MCALLOC_INITEACH(commodstab, commodstabsz,
+                  this->mass= this->volu= -1
+                  );
 
   SQL_PREPARE(sst,
              "SELECT commodid,unitmass,unitvolume FROM commods");
@@ -413,8 +419,8 @@ void setup_value(void) {
   }
   sqlite3_finalize(sst);
 
-  ipairs= mcalloc(sizeof(*ipairs) * islandtablesz);
-  itradeends= mcalloc(sizeof(*itradeends) * islandtablesz);
+  MCALLOC(ipairs, islandtablesz);
+  MCALLOC(itradeends, islandtablesz);
 
   SQL_PREPARE(ss_ipair_dist,
              " SELECT dist FROM dists\n"