ExVrp.Client (ExVrp v0.4.2)

Copy Markdown View Source

Represents a client (customer) location in a VRP.

A client has coordinates, demand (delivery/pickup amounts), time windows, service duration, and optional grouping constraints.

Summary

Functions

Creates a new client.

Types

t()

@type t() :: %ExVrp.Client{
  delivery: [non_neg_integer()],
  group: non_neg_integer() | nil,
  name: String.t(),
  pickup: [non_neg_integer()],
  prize: non_neg_integer(),
  release_time: non_neg_integer(),
  required: boolean(),
  service_duration: non_neg_integer(),
  tw_early: non_neg_integer(),
  tw_late: non_neg_integer(),
  x: number(),
  y: number()
}

Functions

new(opts)

@spec new(keyword()) :: t()

Creates a new client.

Required Options

  • :x - X coordinate
  • :y - Y coordinate

Optional Options

  • :delivery - List of delivery amounts per dimension (default: [0])
  • :pickup - List of pickup amounts per dimension (default: [0])
  • :service_duration - Time to service this client (default: 0)
  • :tw_early - Earliest arrival time (default: 0)
  • :tw_late - Latest arrival time (default: :infinity)
  • :release_time - Earliest time client becomes available (default: 0)
  • :prize - Prize for visiting optional client (default: 0)
  • :required - Whether client must be visited (default: true)
  • :group - Client group index for mutual exclusivity (default: nil)
  • :name - Client name for identification (default: "")

Examples

iex> ExVrp.Client.new(x: 1, y: 2, delivery: [10])
%ExVrp.Client{x: 1, y: 2, delivery: [10], ...}