Jump to content

Confirmation of ilvl 4 and 5 trade runs


Recommended Posts

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.

Link to comment
Share on other sites

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 by Lanzo
Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 3 months later...

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...