schema

package
v0.23.3-dev.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 2, 2023 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package schema provides the input and output schema for nextroute.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Defaults

type Defaults struct {
	Vehicles *VehicleDefaults `json:"vehicles,omitempty"`
	Stops    *StopDefaults    `json:"stops,omitempty"`
}

Defaults contains default values for vehicles and stops.

type Input

type Input struct {
	Options        any                   `json:"options,omitempty"`
	Defaults       *Defaults             `json:"defaults,omitempty"`
	StopGroups     *[][]string           `json:"stop_groups,omitempty"`
	AlternateStops *[]Stop               `json:"alternate_stops,omitempty"`
	DurationGroups *[]route.ServiceGroup `json:"duration_groups,omitempty"`
	DurationMatrix *[][]float64          `json:"duration_matrix,omitempty"`
	DistanceMatrix *[][]float64          `json:"distance_matrix,omitempty"`
	Vehicles       []Vehicle             `json:"vehicles,omitempty"`
	Stops          []Stop                `json:"stops,omitempty"`
	CustomData     any                   `json:"custom_data,omitempty"`
}

Input is the default input schema for nextroute.

func RouterToNextRoute

func RouterToNextRoute(routerInput RouterInput) Input

RouterToNextRoute transforms router input to nextroute input.

type JSONBasicSolution

type JSONBasicSolution struct {
	Unassigned []route.Stop    `json:"unassigned"`
	Vehicles   []VehicleOutput `json:"vehicles"`
	Objective  JSONObjective   `json:"objective"`
}

JSONBasicSolution represents a solutions as JSON.

type JSONConstraintValue

type JSONConstraintValue struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

JSONConstraintValue represents a value of a constraint.

type JSONExpressionValue

type JSONExpressionValue struct {
	Name       string  `json:"name"`
	Value      float64 `json:"value"`
	Cumulative float64 `json:"cumulative"`
}

JSONExpressionValue represents an expression value as JSON.

type JSONLocation

type JSONLocation struct {
	Lat float64 `json:"lat"`
	Lon float64 `json:"lon"`
}

JSONLocation represents a location as JSON.

type JSONModelStop

type JSONModelStop struct {
	Name     string       `json:"name"`
	Location JSONLocation `json:"location"`
	Index    int          `json:"index"`
}

JSONModelStop represents a model stop as JSON.

type JSONObjective

type JSONObjective struct {
	Name       string          `json:"name"`
	Objectives []JSONObjective `json:"objectives"`
	Value      float64         `json:"value"`
}

JSONObjective represents an objective as JSON.

type JSONSolution

type JSONSolution struct {
	Epoch       time.Time               `json:"epoch"`
	Unplanned   []JSONModelStop         `json:"unplanned"`
	Vehicles    []JSONVehicle           `json:"vehicles"`
	Progression []alns.ProgressionEntry `json:"progression"`
	Objective   JSONObjective           `json:"objective"`
}

JSONSolution represents a solutions as JSON.

type JSONStop

type JSONStop struct {
	Slack             time.Duration         `json:"slack"`
	Arrival           time.Time             `json:"arrival"`
	EarliestStart     time.Time             `json:"earliest_start"`
	Start             time.Time             `json:"start"`
	End               time.Time             `json:"end"`
	ExpressionValues  []JSONExpressionValue `json:"expression_values"`
	ConstraintValues  []JSONConstraintValue `json:"constraint_values"`
	ConstraintReports []map[string]any      `json:"constraint_reports"`
	JSONModelStop
	Position       int           `json:"position"`
	TravelDuration time.Duration `json:"travel_duration"`
}

JSONStop represents a stop as JSON.

type JSONVehicle

type JSONVehicle struct {
	Start time.Time  `json:"start"`
	End   time.Time  `json:"end"`
	Name  string     `json:"name"`
	Stops []JSONStop `json:"stops"`
	Index int        `json:"index"`
}

JSONVehicle represents a vehicle as JSON.

type RouterInput

type RouterInput struct {
	Stops               []route.Stop         `json:"stops"`
	Vehicles            []string             `json:"vehicles"`
	InitializationCosts []float64            `json:"initialization_costs"`
	Starts              []route.Position     `json:"starts"`
	Ends                []route.Position     `json:"ends"`
	Quantities          []int                `json:"quantities"`
	Capacities          []int                `json:"capacities"`
	Precedences         []route.Job          `json:"precedences"`
	Windows             []route.Window       `json:"windows"`
	Shifts              []route.TimeWindow   `json:"shifts"`
	Penalties           []int                `json:"penalties"`
	Backlogs            []route.Backlog      `json:"backlogs"`
	VehicleAttributes   []route.Attributes   `json:"vehicle_attributes"`
	StopAttributes      []route.Attributes   `json:"stop_attributes"`
	Velocities          []float64            `json:"velocities"`
	Groups              [][]string           `json:"groups"`
	ServiceTimes        []route.Service      `json:"service_times"`
	AlternateStops      []route.Alternate    `json:"alternate_stops"`
	Limits              []route.Limit        `json:"limits"`
	DurationLimits      []float64            `json:"duration_limits"`
	DistanceLimits      []float64            `json:"distance_limits"`
	ServiceGroups       []route.ServiceGroup `json:"service_groups"`
}

RouterInput is the schema for the input of router.

type Stop

type Stop struct {
	Precedes                any            `json:"precedes,omitempty"`
	Quantity                any            `json:"quantity,omitempty"`
	Succeeds                any            `json:"succeeds,omitempty"`
	TargetTime              *time.Time     `json:"target_time,omitempty"`
	HardWindow              *[]time.Time   `json:"hard_window,omitempty"`
	MaxWait                 *int           `json:"max_wait,omitempty"`
	StopDuration            *int           `json:"stop_duration,omitempty"`
	UnassignedPenalty       *int           `json:"unassigned_penalty,omitempty"`
	EarlinessPenalty        *float64       `json:"earliness_penalty,omitempty"`
	LatenessPenalty         *float64       `json:"lateness_penalty,omitempty"`
	CompatibilityAttributes *[]string      `json:"compatibility_attributes"`
	ID                      string         `json:"id,omitempty"`
	Position                route.Position `json:"position,omitempty"`
	CustomData              any            `json:"custom_data,omitempty"`
}

Stop represents a stop.

type StopDefaults

type StopDefaults struct {
	UnassignedPenalty       *int         `json:"unassigned_penalty,omitempty"`
	Quantity                any          `json:"quantity,omitempty"`
	HardWindow              *[]time.Time `json:"hard_window,omitempty"`
	MaxWait                 *int         `json:"max_wait,omitempty"`
	StopDuration            *int         `json:"stop_duration,omitempty"`
	TargetTime              *time.Time   `json:"target_time,omitempty"`
	EarlinessPenalty        *float64     `json:"earliness_penalty,omitempty"`
	LatenessPenalty         *float64     `json:"lateness_penalty,omitempty"`
	CompatibilityAttributes *[]string    `json:"compatibility_attributes"`
}

StopDefaults contains default values for stops.

type StopOutput

type StopOutput struct {
	route.Stop
	EstimatedArrival   *time.Time `json:"estimated_arrival,omitempty"`
	EstimatedDeparture *time.Time `json:"estimated_departure,omitempty"`
	EstimatedService   *time.Time `json:"estimated_service,omitempty"`
}

StopOutput adds information to the input stop.

type Vehicle

type Vehicle struct {
	Capacity                any             `json:"capacity,omitempty"`
	Start                   *route.Position `json:"start,omitempty"`
	End                     *route.Position `json:"end,omitempty"`
	Speed                   *float64        `json:"speed,omitempty"`
	ID                      string          `json:"id,omitempty"`
	ShiftStart              *time.Time      `json:"shift_start,omitempty"`
	ShiftEnd                *time.Time      `json:"shift_end,omitempty"`
	CompatibilityAttributes *[]string       `json:"compatibility_attributes,omitempty"`
	MaxStops                *int            `json:"max_stops,omitempty"`
	MaxDistance             *int            `json:"max_distance,omitempty"`
	MaxDuration             *int            `json:"max_duration,omitempty"`
	StopDurationMultiplier  *float64        `json:"stop_duration_multiplier,omitempty"`
	Backlog                 *[]string       `json:"backlog,omitempty"`
	AlternateStops          *[]string       `json:"alternate_stops,omitempty"`
	InitializationCost      *int            `json:"initialization_cost,omitempty"`
	CustomData              any             `json:"custom_data,omitempty"`
}

Vehicle represents a vehicle.

type VehicleDefaults

type VehicleDefaults struct {
	Capacity                any             `json:"capacity,omitempty"`
	Start                   *route.Position `json:"start,omitempty"`
	End                     *route.Position `json:"end,omitempty"`
	Speed                   *float64        `json:"speed,omitempty"`
	ShiftStart              *time.Time      `json:"shift_start,omitempty"`
	ShiftEnd                *time.Time      `json:"shift_end,omitempty"`
	MaxStops                *int            `json:"max_stops,omitempty"`
	MaxDistance             *int            `json:"max_distance,omitempty"`
	MaxDuration             *int            `json:"max_duration,omitempty"`
	CompatibilityAttributes *[]string       `json:"compatibility_attributes,omitempty"`
}

VehicleDefaults contains default values for vehicles.

type VehicleOutput

type VehicleOutput struct {
	ID            string       `json:"id"`
	Route         []StopOutput `json:"route"`
	RouteDuration int          `json:"route_duration"`
}

VehicleOutput holds the solution of the ModelVehicle Routing Problem.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL