connection-scan-algorithm
Version:
Connection Scan Algorithm
93 lines (92 loc) • 3.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const GtfsLoader_1 = require("./gtfs/GtfsLoader");
const TimeParser_1 = require("./gtfs/TimeParser");
const ConnectionScanAlgorithm_1 = require("./csa/ConnectionScanAlgorithm");
const ScanResultsFactory_1 = require("./csa/ScanResultsFactory");
const DepartAfterQuery_1 = require("./query/DepartAfterQuery");
const JourneyFactory_1 = require("./journey/JourneyFactory");
const queries = [
[["MRF", "LVC", "LVJ", "LIV"], ["NRW"]],
[["TBW", "PDW"], ["HGS"]],
[["PDW", "MRN"], ["LVC", "LVJ", "LIV"]],
[["PDW", "AFK"], ["NRW"]],
[["PDW"], ["BHM", "BMO", "BSW", "BHI"]],
[["PNZ"], ["DIS"]],
[["YRK"], ["DIS"]],
[["WEY"], ["RDG"]],
[["YRK"], ["NRW"]],
[["BHM", "BMO", "BSW", "BHI"], ["MCO", "MAN", "MCV", "EXD"]],
[["BHM", "BMO", "BSW", "BHI"], ["EDB"]],
[["COV", "RUG"], ["MAN", "MCV"]],
[["YRK"], ["MCO", "MAN", "MCV", "EXD"]],
[["STA"], ["PBO"]],
[["PNZ"], ["EDB"]],
[["RDG"], ["IPS"]],
[["DVP"], ["BHM", "BMO", "BSW", "BHI"]],
[["BXB"], ["DVP"]],
[["MCO", "MAN", "MCV", "EXD"], ["CBW", "CBE"]],
[
["MCO", "MAN", "MCV", "EXD"],
[
"EUS", "MYB", "STP", "PAD", "BFR", "CTK", "CST", "CHX", "LBG",
"WAE", "VIC", "VXH", "WAT", "OLD", "MOG", "KGX", "LST", "FST"
]
],
[
["BHM", "BMO", "BSW", "BHI"],
[
"EUS", "MYB", "STP", "PAD", "BFR", "CTK", "CST", "CHX", "LBG",
"WAE", "VIC", "VXH", "WAT", "OLD", "MOG", "KGX", "LST", "FST"
]
],
[
["ORP"],
[
"EUS", "MYB", "STP", "PAD", "BFR", "CTK", "CST", "CHX", "LBG",
"WAE", "VIC", "VXH", "WAT", "OLD", "MOG", "KGX", "LST", "FST"
]
],
[
["EDB"],
[
"EUS", "MYB", "STP", "PAD", "BFR", "CTK", "CST", "CHX", "LBG",
"WAE", "VIC", "VXH", "WAT", "OLD", "MOG", "KGX", "LST", "FST"
]
],
[
["CBE", "CBW"],
[
"EUS", "MYB", "STP", "PAD", "BFR", "CTK", "CST", "CHX", "LBG",
"WAE", "VIC", "VXH", "WAT", "OLD", "MOG", "KGX", "LST", "FST"
]
]
];
async function run() {
const loader = new GtfsLoader_1.GtfsLoader(new TimeParser_1.TimeParser());
console.time("initial load");
const gtfs = await loader.load(fs.createReadStream("/home/linus/Downloads/gb-rail-latest.zip"));
console.timeEnd("initial load");
const csa = new ConnectionScanAlgorithm_1.ConnectionScanAlgorithm(gtfs.connections, gtfs.transfers, new ScanResultsFactory_1.ScanResultsFactory(gtfs.interchange));
const query = new DepartAfterQuery_1.DepartAfterQuery(csa, new JourneyFactory_1.JourneyFactory());
console.time("planning");
const date = new Date();
let numResults = 0;
for (let i = 0; i < 3; i++) {
for (const [origins, destinations] of queries) {
const key = origins.join() + ":" + destinations.join();
console.time(key);
const results = query.plan(origins, destinations, date, 36000);
console.timeEnd(key);
if (results.length === 0) {
console.log("No results between " + key);
}
numResults += results.length;
}
}
console.timeEnd("planning");
console.log("Num journeys: " + numResults);
console.log(`Memory usage: ${Math.round((process.memoryUsage().heapUsed / 1024 / 1024) * 100) / 100} MB`);
}
run().catch(e => console.error(e));
;