JohnnyHuangTW / node-tspsolver

Travelling salesman solver for nodejs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

node-tspsolver

Travelling salesman solver for nodejs

This solver uses Simulated Annealing with optional periodic reheating.

Initial solution is constructed using Nearest Neighbour heuristic.

Tour transformations used in the local search step: Stochastic 2-opt, translation and swapping.

The solver is implemented in C++ and doesn't use the nodejs main event loop for running, hence non-blocking.

Signature:

function solveTsp(costMatrix, roundtrip, options) returns a promise

Arguments:

costMatrix - 2d array of costs .. costMatrix[i][j] gives cost between ith and jth points

roundtrip - whether salesman needs to get back to starting point, ie point at index 0. If false, point at n - 1 is treated as the end point

options - {
    N - 'number of iterations' default: 1000000,
    T - 'Initial temperature' default: 100,
    lambda - 'Annealing parameter' default: 0.985,
    reheatInterval - 100000,
}

Install: npm install node-tspsolver

Examples:



var solver = require('node-tspsolver')

var costMatrix = [
    [0, 1, 3, 4],
    [1, 0, 2, 3],
    [3, 2, 0, 5],
    [4, 3, 5, 0]
]

solver
    .solveTsp(costMatrix, true, {})
    .then(function (result)) {
        console.log(result) // result is an array of indices specifying the route.
    })

About

Travelling salesman solver for nodejs

License:MIT License


Languages

Language:C++ 66.8%Language:JavaScript 29.1%Language:Python 3.9%Language:C 0.3%