@solvice.io/node-onroute-client
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

OnRoute API Client in Node

Based on the documentation in https://docs2.solvice.io/onroute

We have a hand-crafted API client (@solvice.io/node-onroute-client) for the OnRoute route optimisation API that is more memory efficient e.g. for large instances than autogenerated client based on openapi.

Installation

npm install @solvice.io/node-onroute-client --save

Usage

Define the client

const api: OnRouteApi = new OnRouteApi({ apiKey: "<api key>" });

VRP

Define a solve job to send to the solve endpoint. Look at the VRP model for more details.

const vrp: VRP = {
    solver: Solver.Vrp,
    locations: [
        { name: "depot", latitude: 51.21112, longitude: 4.093 },
        { name: "l1", latitude: 50.721112, longitude: 4.893 },
        { name: "l2", latitude: 50.42342, longitude: 4.693 },
    ],
    fleet: [
        { name: "bert", startlocation: "depot", shiftstart: 500, shiftend: 700 }
    ],
    orders: [
        { name: "o1", location: "l1", duration: 10 },
        { name: "o2", location: "l2", duration: 15 }
    ],
    options: { traffic: 1 }
}

Send VRP to the solver and fetch the solution.

// send to solver
const job: Job = await api.solve(vrp, 60);

// job has started solving
const startedSolving: Job = await api.pollSolving(job.id);

// job is solved. return solution
const solution: RoutingSolution = await api.pollSolved(job.id) as RoutingSolution;

PVRP

Define the Periodic VRP and add a planning period.

const vrp: PVRP = {
    solver: Solver.Pvrp,
    period: {
        start: Date.now(),
        end: Date.now()
    },
    locations: [
        { name: "depot", latitude: 51.21112, longitude: 4.093 },
        { name: "l1", latitude: 50.721112, longitude: 4.893 },
        { name: "l2", latitude: 50.42342, longitude: 4.693 },],
    fleet: [
        { name: "bert", startlocation: "depot", shiftstart: 500, shiftend: 700 }
    ],
    orders: [
        { name: "o1", location: "l1", duration: 10 },
        { name: "o2", location: "l2", duration: 15 }
    ],
    options: { traffic: 1 }
}
// send to solver
const job: Job = await api.solve(vrp, 60);

// job has started solving
const startedSolving: Job = await api.pollSolving(job.id);

// job is solved. return solution
const solution: PeriodicRoutingSolution = await api.pollSolved(job.id) as PeriodicRoutingSolution;

Readme

Keywords

none

Package Sidebar

Install

npm i @solvice.io/node-onroute-client

Weekly Downloads

0

Version

0.0.4

License

MIT

Unpacked Size

376 kB

Total Files

207

Last publish

Collaborators

  • jmostaer
  • cvhuele