Archive

Nextmv marketplace beta release

Nextmv SDK v0.25.0 released

  • The Nextmv Routing app based on nextroute is now available in beta as part of the marketplace on Nextmv console.
  • Acceptance testing is now available in beta as part of experiments.

Nextmv SDK v0.25.0

  • Bug fixes and performance improvements for the nextroute vehicle routing engine.

Nextmv CLI v0.25.0

  • Enable ability to subscribe to marketplace (beta) applications, starting with the Nextmv Routing app.
  • Enable ability to create an application with a subscription.

Upgrade to v0.25.0

This upgrade guide assumes you’ve previously installed and configured the Nextmv CLI.

Open up a terminal and run the following command:

nextmv update
Copy

Alternatively, you can specify the version.

nextmv update v0.25.0
Copy

Nextmv SDK v0.25.0 upgrade guide

To update and tidy your Go project and reference SDK v0.25.0, stand at the location of the go.mod and run:

go get github.com/nextmv-io/sdk@v0.25.0
go mod tidy
Copy

Migration guide to nextroute and Nextmv Routing app

For users who have previously run one of the Nextmv SDK routing templates, or the Nextmv Routing app (v0 schema), below are guidelines on how to migrate to the nextroute routing engine. We recommend upgrading to benefit from improved performance and flexibility.

nextroute is the recommended vehicle routing engine now available as part of the Nextmv platform. For existing users, this guide provides instructions on how to migrate from other templates and apps to the nextroute template and Nextmv Routing app (v1 schema).

Migrate from v0 to v1 Nextmv Routing app schema or the cloud-routing template to nextroute

After creating a nextroute template, the next step will be to migrate your existing schema to that of nextroute. Below is a list of schema changes. For any questions on migrating custom models please contact support.

Schema changes in Nextmv Routing app (from v0 to nextroute v1 schema)

Below is a complete list of features between the v0 and nextroute v1 schema routing apps. Take note of indicated changes to naming and/or API.

input

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
vehicles[]Vehiclevehicles[]Vehicle
stops[]Stopstops[]Stop
defaultsdefaultsdefaultsdefaults
stop_groups[][]stringstop_groups[][]string
duration_matrix[][]float64not supportedyes
distance_matrix[][]float64not supportedyes
custom_dataanynot supportedyes
optionsanyoptionsOptions
coming soonalternate_stops[]stopcoming soon
duration_groups[]durationGroupduration_groups[]durationGroup

Vehicle

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
idstringidstring
capacityanycapacityany
start_levelanynot supportedanyyes
start_locationlocationstartpositionyes
end_locationlocationendpositionyes
speedfloat64speedfloat64
start_timetime.Timeshift_starttime.Timeyes
end_timetime.Timeshift_endtime.Timeyes
compatibility_attributes[]stringcompatibility_attributes[]string
max_stopsintmax_stopsint
max_distanceintmax_distanceint
max_durationintmax_durationint
max_waitintnot supportedyes
activation_penaltyintitialization_costintyes
initial_stops[]InitialStopbacklog[]stringyes
not supportedstop_duration_multiplierfloat64yes
custom_dataanynot supportedyes

Stop

Nextroutev0 schemaChange?
JSON tagtypeJSON tagtype
idstringidstring
locationlocationpositionpositionyes
precedesanyprecedesany
succeedsanysucceedsany
quantityanyquantityany
target_arrival_timetime.Timetarget_timetime.Timeyes
start_time_window[]time.Timehard_window[]time.Timeyes
max_waitintmax_waitint
durationintstop_durationintyes
unplanned_penaltyintunassigned_penaltyintyes
early_arrival_time_penaltyfloat64earliness_penaltyfloat64yes
late_arrival_time_penaltyfloat64lateness_penaltyfloat64yes
compatibility_attributes[]stringcompatibility_attributes[]string
custom_dataanynot supportedyes

initialStop

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
idstringnot supportedyes
fixedboolnot supportedyes

location (Nextroute) / position (v0 schema)

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
latfloat64latfloat64
lonfloat64lonfloat64

defaults

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
vehiclesvehicleDefaultsvehiclesvehicleDefaults
stopsstopDefaultsstopsstopDefaults

vehicleDefaults

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
start_locationlocationstartpositionyes
end_locationlocationendpositionyes
speedfloat64speedfloat64
capacityanycapacityany
start_timetime.Timeshift_starttime.Timeyes
end_timetime.Timeshift_endtime.Timeyes
compatibility_attributes[]stringcompatibility_attributes[]string
max_stopsintmax_stopsint
max_distanceintmax_distanceint
max_durationintmax_durationint
max_waitintnot supportedyes

stopDefaults

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
unplanned_penaltyintunassigned_penaltyintyes
quantityanyquantityany
start_time_window[]time.Timehard_window[]time.Timeyes
max_waitintmax_waitint
durationintstop_durationintyes
target_arrival_timetime.Timetarget_timetime.Timeyes
early_arrival_time_penaltyfloat64earliness_penaltyfloat64yes
late_arrival_time_penaltyfloat64lateness_penaltyfloat64yes
compatibility_attributes[]stringcompatibility_attributes[]string

options

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
not supportedsolversolverOptionsyes

solverOptions

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
not supporteddiagramdiagramyes
not supportedlimitslimitsyes

diagram

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
not supportedwidthintyes
not supportedexpansionexpansionyes

expansion

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
not supportedlimitintyes

limits

Nextroutev0 schemaChange?
JSON tagTypeJSON tagType
not supporteddurationtime.Durationyes
not supportednodesintyes
not supportedsolutionsintyes

Migrate from SDK routing templates to nextroute

  • To confirm a model is based on a router template, check the main.go to see whether the route package has been imported. (shown below)

All router templates (except for cloud-routing) use set-based inputs. With set-based inputs, all the elements of a set are represented under a single key. An example of this can be seen with vehicle shifts start times.

The nextroute template, however, is based on entity-based inputs. The elements of a feature are contained in the entities. Instead of having start_times with a vector of start times, the start_time is represented in each vehicle.

"vehicles": [
  {
    "id": "v2",
    "start_location": {
      "lon": 135.772695,
      "lat": 34.967146
    },
    "start_time": "2023-01-01T12:00:00Z"
  },
  {
    "id": "v3",
    "end_location": {
      "lon": 135.762057,
      "lat": 35.025431
    },
    "start_time": "2023-01-01T12:00:00Z",
    "end_time": "2023-01-01T12:20:00Z"
  },
]
Copy

To migrate a model based off a router template, you will need to create a nextroute template.

Then, because nextroute is entity-based, to migrate from an existing routing template, the code has to be completely removed and replaced with nextroute code. It's not enough to create a schema change as referenced in the cloud-routing migration steps, though the naming conventions previously described would still apply. For any questions on migrating your model please contact support.

Page last updated

Go to on-page nav menu