From 1170fca71dcf10ed2d046fc22f8f1a63ac2ce5cb Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 3 Oct 2009 21:38:54 +0100 Subject: [PATCH] WIP routesearch; bugfixes --- yarrg/rscommon.h | 1 + yarrg/rsvalue.c | 32 ++++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/yarrg/rscommon.h b/yarrg/rscommon.h index d815514..a9bca8c 100644 --- a/yarrg/rscommon.h +++ b/yarrg/rscommon.h @@ -8,6 +8,7 @@ DF(sql2) \ DF(value) \ DF(search) \ + DF(check) \ DF(lp) #define debug stdout diff --git a/yarrg/rsvalue.c b/yarrg/rsvalue.c index f867319..b4e2322 100644 --- a/yarrg/rsvalue.c +++ b/yarrg/rsvalue.c @@ -94,9 +94,18 @@ static void avail_c(const Trade *t, IslandTradeEnd **trades, search->rownum= lpx_add_rows(lp, 1); lpx_set_row_bnds(lp, search->rownum, LPX_UP, 0, search->qty); - if (DEBUGP(value)) { - char *name= masprintf("%s_c%d_%d",srcdst,t->commodid,price); + if (DEBUGP(value) || DEBUGP(check)) { + char *name= masprintf("%s_i%d_c%d_%d_all", + srcdst, islandid, t->commodid, price); lpx_set_row_name(lp,search->rownum,name); + + if (DEBUGP(check)) { + int nrows= lpx_get_num_rows(lp); + assert(search->rownum == nrows); + int i; + for (i=1; igeneration= generation; @@ -113,7 +122,7 @@ static int setup_leg_constraints(double max_thing, int legs, const char *wh) { int row= leg+startrow; lpx_set_row_bnds(lp, row, LPX_UP, 0, max_thing); if (DEBUGP(value)) { - char *name= masprintf("max_leg%d_%s",leg,wh); + char *name= masprintf("%s_%d",wh,leg); lpx_set_row_name(lp,row,name); free(name); } @@ -259,6 +268,9 @@ double value_route(int nislands, const int *islands) { int col= lpx_add_cols(lp,ip->ntrades); double loss_factor= delay_slot_loss_factor * ip->distance_loss_factor; + debugf(" SOME i%d#%d..i%d#%d dslf=%g dlf=%g lf=%g\n", + si,s, di,d, + delay_slot_loss_factor, ip->distance_loss_factor, loss_factor); while (tradestodo-- >0) { if (inblock >= TRADES_PER_BLOCK) { @@ -267,22 +279,22 @@ double value_route(int nislands, const int *islands) { } Trade *t= &block->t[inblock++]; - debugf(" TRADE %d#%d..%d#%d %d %d-%d\n", + debugf(" TRADE i%d#%d..i%d#%d c%d %d-%d ", si,s, di,d, t->commodid, t->src_price, t->dst_price); nconstraint_rows=0; - avail_c(t, &itradeends[s].src, t->src_price, "src", si, ss_ite_sell); - avail_c(t, &itradeends[d].dst, t->dst_price, "dst", di, ss_ite_buy); + avail_c(t, &itradeends[si].src, t->src_price, "src", si, ss_ite_sell); + avail_c(t, &itradeends[di].dst, t->dst_price, "dst", di, ss_ite_buy); int leg; for (leg=s; legcommodid].mass); - add_leg_c(volu_constraints, leg, commodstable[t->commodid].volu); - add_leg_c(capi_constraints, leg, t->src_price); + add_leg_c(mass_constraints,leg, commodstable[t->commodid].mass*1e-3); + add_leg_c(volu_constraints,leg, commodstable[t->commodid].volu*1e-3); + add_leg_c(capi_constraints,leg, t->src_price); } - double unit_profit= (t->dst_price - t->src_price) * loss_factor; + double unit_profit= t->dst_price * loss_factor - t->src_price; debugf(" unit profit %f\n", unit_profit); lpx_set_col_bnds(lp, col, LPX_LO, 0, 0); -- 2.30.2