Lanzo Posted March 24, 2014 Report Share Posted March 24, 2014 I went through and verified all these routes by hand. I learned that where you sell an item, not where you buy it, is what matters. I also recorded how much XP I got, and discovered that earned XP is not clearly related to either item level or profit gained. There is something more at play here. I would paste the data here, but I can't figure out how to make the forums display the table in a non-FUBAR fashion. For now, the data lives on the Talk page for the Trade Routes page on the wiki. You'll need to sign into the wiki using your forum credentials before you can see the page. The numbers are all from an unbonused/grouped JE, so they are as raw as raw gets. I may have made a mistake or two on some of the path lengths, I'm still working on a script to double-check my eyeball work. http://net-7.org/wiki/index.php?title=Talk%3ATrade_Routes#Confirmation_of_lvl_4_and_5_runs TL;DR: FN->NV is NOT the best trade run (for credits or XP) if you are a PP. There is something better. 3 jumps better. Also, while the rule of thumb that greater gross profit = more trade XP, the rule is not linear. The XP per unit profit varies wildly, some other factors are at play. Quote Link to comment Share on other sites More sharing options...
Lanzo Posted March 24, 2014 Author Report Share Posted March 24, 2014 (edited) Also, have some code: #include <stdlib.h> #include <stdio.h> #include <string.h> #include <fstream> #include <vector> #include <map> #include <queue> #include <set> int main(int argc, char **argv) { using namespace std; set<string> vis; queue<string> q; map<string,string> prev; map<string,vector<string> > path_list; string current = argv[1]; string line = ""; char *c_line; vector<string> out_list,directions; if(argc < 3) { printf("Usage: %s <source> <dest> (debug mode)\n",argv[0]); exit(1); } ifstream infile("path_list"); while(getline(infile,line)) { if(line[0] == '#') { continue; } c_line = (char*)malloc(sizeof(char)*(line.length()+1)); if(c_line == NULL) { puts("Memory error!"); exit(1); } strcpy(c_line,line.c_str()); char *system,*outgates = (char*)1; system = strtok(c_line,"|"); while(outgates != NULL) { outgates = strtok(NULL,"|"); if(outgates != NULL) { out_list.push_back(outgates); } } path_list.insert(pair<string,vector<string> >(system,out_list)); out_list.clear(); free(c_line); } q.push(argv[1]); vis.insert(argv[1]); while(!q.empty()) { current = q.front(); q.pop(); //are we at dest? if(current.compare(argv[2]) == 0) { break; } else { for(int i = 0; i < path_list[current].size(); ++i) { //if we have NOT visited this system if(vis.find(path_list[current][i]) == vis.end()) { //DEBUG if(argc > 3) { printf("In: %s, trying %s\n",current.c_str(),path_list[current][i].c_str()); } q.push(path_list[current][i]); vis.insert(path_list[current][i]); prev.insert(pair<string,string>(path_list[current][i],current)); } } } } if(current.compare(argv[2]) != 0) { puts("Can't reach destination!"); exit(0); } current=argv[2]; printf("Route: "); int jumps = 0; while(current.compare(prev[argv[1]]) != 0 && prev[current].compare("") != 0) { //printf("%s -> ",prev[current].c_str()); directions.push_back(prev[current]); current=prev[current]; ++jumps; } for(int i = directions.size()-1; i > -1; --i) { printf("%s -> ",directions[i].c_str()); } printf("%s\n%d Jumps\n",argv[2],jumps); exit(0); } That code is a fun little search program I wrote. You tell it "start here" and "Go here" it will find you a good route (no algorithm always finds the best, and this one is greedy, but it's good enough). You'll need a C++ compiler. Here's an example input file to use with it: Dahin|Planet Dahin|Kailaasa Planet Dahin|Dahin #Kailaasa|Io|Yokan|Dahin Kailaasa|Yokan|Dahin Yokan|Ishuan|Swooping Eagle|Kailaasa #Ishuan|Menorb|Ganymede|Yokan Ishuan|Menorb|Yokan Menorb|Ishuan #Swooping Eagle|Europa|Planet Swooping Eagle|Xipe Totec|Glenn|Yokan Swooping Eagle|Planet Swooping Eagle|Xipe Totec|Glenn|Yokan Planet Swooping Eagle|Swooping Eagle #Xipe Totec|Swooping Eagle|Blackbeard's Wake Xipe Totec|Swooping Eagle Glenn|Carpenter|Slayton|Saturn|Swooping Eagle Carpenter|Slayton|Glenn|Shepard|New Edinburgh #New Edinburgh|Inverness|Carpenter|High Earth New Edinburgh|Inverness|Carpenter Inverness|Planet Inverness|Aganju|New Edinburgh Planet Inverness|Inverness #Aganju|Inverness|Moto #Moto|Aganju|Altair III Aganju|Inverness Shepard|Grissom|Carpenter #Grissom|Blackbeard's Wake Slayton|Glory's Orbit|Carpenter|Glenn Glory's Orbit|Slayton Saturn|Akeron's Gate|Uranus|Asteroid Belt Alpha|Asteroid Belt Beta|Asteroid Belt Gamma|Jupiter|Glenn Uranus|Neptune|Pluto & Charon Neptune|Uranus Pluto & Charon|Mercury|Uranus|Akeron's Gate Mercury|Venus|Pluto & Charon #Venus|Ceres|Asteroid Belt Beta Venus|Asteroid Belt Beta|Mercury Asteroid Belt Alpha|Earth|Asteroid Belt Beta|Saturn Asteroid Belt Beta|Asteroid Belt Gamma|Venus|Saturn|Asteroid Belt Alpha Asteroid Belt Gamma|Mars|Asteroid Belt Beta|Saturn #Jupiter|Ganymede|Io|Europa|Saturn #Io|Jupiter|Kailaasa #Ganymede|Jupiter|Ishuan #Europa|Jupiter|Swooping Eagle Jupiter|Saturn #Mars|Mars Alpha|Mars Beta|Mars Gamma|Asteroid Belt Gamma #Mars Alpha|Mars|Tarsis #Mars Beta|Mars|Lagarto #Mars Gamma|Mars|Altair III Mars|Asteroid Belt Gamma #Earth|High Earth|Luna|Equatorial Earth|Asteroid Belt Alpha #High Earth|Earth|New Edinburgh #Luna|Earth|Zweihander #Equatorial Earth|Earth|Margesi Earth|Asteroid Belt Alpha Akeron's Gate|Pluto & Charon|Freya|Saturn Freya|Adriel Prime|Witberg|Ragnarok|Jotunheim|Nifleheim Cloud|Akeron's Gate Adriel Prime|Margesi|Freya #Margesi|Equatorial Earth|Adriel Prime Margesi|Adriel Prime #Witberg|Ardus|der Todesengel|Zweihander|Freya Witberg|Zweihander|Freya #Zweihander|Planet Zweihander|Luna|Witberg Zweihander|Planet Zweihander|Witberg Planet Zweihander|Zweihander #der Todesengel|Witberg #Ardus|Witberg Ragnarok|Jotunheim|Freya Nifleheim Cloud|Freya Jotunheim|Odin Rex|Ragnarok|Freya #Odin Rex|Odin's Belt|Paramis|Jotunheim Odin Rex|Odin's Belt|Jotunheim Odin's Belt|Muspelheim|Lagarto|Odin Rex #Muspelheim|Aragoth Prime|Odin's Belt|Blackbeard's Wake Muspelheim|Aragoth Prime|Odin's Belt Aragoth Prime|Valkyrie Twins|Varen's Girdle|Muspelheim Valkyrie Twins|Fenris|Aragoth Prime Varen's Girdle|Fenris|Aragoth Prime Fenris|Valkyrie Twins|Varen's Girdle #Lagarto|Endriago|Lagarto Moon Risco|Roc|Mars Beta #Roc|Lagarto Lagarto|Endriago|Lagarto Moon Risco|Odin's Belt Lagarto Moon Risco|Lagarto|Planet Endriago Endriago|Planet Endriago|Primus|Altair III|Lagarto Planet Endriago|Endriago|Lagarto Moon Risco Primus|Planet Primus|Tarsis|Endriago Planet Primus|Primus #Tarsis|Mars Alpha|Primus Tarsis|Primus #Altair III|Nostrand Vor|Endriago|Mars Gamma|Moto Altair III|Nostrand Vor|Endriago Nostrand Vor|Planet Nostrand Vor|Altair III Planet Nostrand Vor|Nostrand Vor #Paramis|Odin Rex|Blackbeard's Wake #Blackbeard's Wake|Muspelheim|Paramis|Inverness|Xipe Totec|Grissom The lines starting with # are commented out, the program will ignore them. Include them at your liesure. The file format is: <current system>|<outgate 1>|<outgate 2>|... There can only be one line for any given Current System. IE: Blackbeard's Wake cannot appear twice. The second line will just be ignored. Anyway, I did find some errors in my data. I've fixed them on the wiki. What I said about better paths is still true though. edit: Oh, one other thing. You can change the names if you want. Feel free to replace "Planet Nostrand Vor" with "NV" or whatever you like to make using it faster. Also, that path list file is tweaked to only include systems/paths relevant to trade runs. Hence why Antares, for example, does not appear within it. It should be simple to add stuff back in if you wanted a more comprehensive pathing search. Edited March 24, 2014 by Lanzo Quote Link to comment Share on other sites More sharing options...
Lanzo Posted March 24, 2014 Author Report Share Posted March 24, 2014 Update 3: The wiki now has an even more up-to-date table. Still on the same talk page. The JD, TT, TS, and JS all have 0 trade routes, with LVL 4 or 5 trade goods, which make use of their noob sectors. Amusingly, all 3 progen classes have multiple runs. I guess the PWs are the new TTs. o.0 Quote Link to comment Share on other sites More sharing options...
Frosticus Posted July 1, 2014 Report Share Posted July 1, 2014 Great work. Do you have a compiled binary that you can throw up somewhere maybe? Google drive, sourceforge, ect? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.