Struktur dasar (ShipmentModel, Shipment, dan Vehicle)

ShipmentModel memiliki satu objek `shipments` dengan jenis pesan `Shipment` dan satu objek `vehicles` dengan jenis pesan `Vehicle`.

Tujuan Route Optimization API adalah merencanakan rute untuk armada kendaraan yang akan mengunjungi sekumpulan lokasi. Objek OptimizeToursRequest menjelaskan properti kendaraan dan lokasi ini serta merupakan struktur utama dari isi permintaan setiap endpoint.

Struktur dasar objek OptimizeToursRequest adalah sebagai berikut:

Dokumen ini menjelaskan jenis pesan berikut:

  • ShipmentModel: Berisi daftar pengiriman, kendaraan yang tersedia, dan objek lain yang menjelaskan hubungannya.
  • Shipment: Menjelaskan lokasi yang akan dikunjungi oleh kendaraan. Lokasi ini dapat mewakili paket sebenarnya yang akan diambil dan dikirim atau tempat pengemudi kendaraan melakukan layanan.
  • Vehicle: Menjelaskan alat transportasi antara lokasi pengiriman. Setiap kendaraan sesuai dengan kendaraan sebenarnya atau orang yang berjalan kaki.

ShipmentModel

ShipmentModel berisi elemen masalah pengoptimalan rute. Objek ini berisi sekumpulan pengiriman yang dapat dilakukan oleh sekumpulan kendaraan, dengan mempertimbangkan batasan dan meminimalkan biaya keseluruhan.

Tabel di bawah menjelaskan beberapa properti relevan dari ShipmentModel:

Properti Deskripsi
shipments dan vehicles Objek yang diperlukan yang berisi detail satu atau beberapa pengiriman dan kendaraan.
globalStartTime dan globalEndTime Menunjukkan awal dan akhir jangka waktu saat semua kendaraan harus menyelesaikan semua pengiriman. Meskipun properti ini tidak diperlukan, sebaiknya sertakan karena pengoptimal berfungsi paling baik saat mematuhi batasan waktu.

Lihat dokumentasi referensi untuk mengetahui daftar lengkap properti di ShipmentModel.

Contoh ShipmentModel

Dalam contoh ini, Anda memiliki layanan penitipan dan Anda mulai membuat permintaan. Anda akan menentukan pengiriman dan kendaraan nanti, tetapi Anda ingin memulai dengan menetapkan jam buka dan biaya operasional per jam.

Untuk contoh ini, nilai properti ShipmentModel dalam permintaan Anda adalah sebagai berikut:

Properti Nilai Deskripsi
globalStartTime 2024-02-13T00:00:00.000Z Tanggal dan waktu mulai jam buka.
globalEndTime 2024-02-14T06:00:00.000Z Tanggal dan waktu berakhir jam buka.

Berikut adalah contoh kode pesan ShipmentModel yang menggabungkan nilai skenario contoh.

{
  "model": {
    "shipments": [
      ...
    ],
    "vehicles": [
      ...
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

Shipment

Jenis pesan Shipment menentukan struktur properti pengiriman yang dapat dikirim atau layanan yang dapat dilakukan di rute.

Pengiriman di kehidupan nyata sama dengan satu pesan `Shipment`, yang terdapat dalam objek `shipments`

Seperti yang diilustrasikan dalam diagram:

Pesan Shipment memerlukan setidaknya satu objek pickups atau deliveries. Definisi objek ini adalah sebagai berikut:

Tabel berikut menjelaskan berbagai skenario berdasarkan konfigurasi dari pickups dan deliveries dalam pesan Shipment.

Skenario Deskripsi
pickups saja Diasumsikan Anda hanya mengumpulkan pengiriman.
deliveries saja Diasumsikan Anda telah memuat pengiriman sebelumnya atau memberikan layanan.
pickups dan deliveries Kendaraan yang ditetapkan harus menyelesaikan pengambilan terlebih dahulu, lalu pengiriman. Hanya kendaraan yang melakukan pengambilan yang dapat melakukan pengiriman.
Beberapa pickups atau deliveries Jika pengiriman mencantumkan beberapa kemungkinan untuk pickups atau deliveries, pengoptimal memilih satu opsi pengambilan dan satu opsi pengiriman untuk digunakan, berdasarkan upaya meminimalkan biaya dan memenuhi batasan.

Lihat dokumentasi referensi untuk mengetahui daftar lengkap properti di Shipment.

Contoh Shipment

Dalam contoh ini, Anda memiliki layanan penitipan tempat Anda mengambil dari rumahnya dan mengantarkannya ke penitipan Anda. Anda ingin menetapkan lokasi pengambilan dua, dan menetapkan lokasi pengiriman ke bisnis Anda:

  • Rumah pertama berada di Coit Tower, San Francisco. Koordinat ke lokasi ini adalah lintang 37.8024 dan bujur -122.4058.
  • Rumah kedua berada di South Sunset Playground Park, San Francisco. Koordinat ke lokasi ini adalah lintang 37.7359 dan bujur -122.5011.
  • Penitipan Anda berada di Mission Dolores Park, San Francisco. Koordinat ke lokasi ini adalah lintang 37.759773 dan bujur -122.427063.

Berikut adalah contoh kode pesan Shipment, dengan objek shipments berisi dua jenis pesan Shipmentdengan koordinat contoh.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
    ...
    ]
  }
}

Vehicle

Jenis pesan Vehicle menentukan struktur properti kendaraan yang dapat melakukan pengiriman di rute.

Kendaraan di dunia nyata sama dengan satu pesan `Vehicle`, yang terdapat dalam objek `vehicles`

Seperti yang diilustrasikan dalam diagram:

Tabel berikut menjelaskan beberapa properti relevan dari Vehicle.

Properti Deskripsi
startLocation dan endLocation Lokasi awal dan akhir kendaraan, yang merupakan bagian dari rute akhir yang dioptimalkan. Jika tidak ditentukan, nilai defaultnya adalah lokasi pengambilan pengiriman pertama dan pengiriman pengiriman terakhir.
costPerHour, costPerKilometer, costPerTraveledHour Parameter biaya khusus kendaraan. Sebaiknya Anda memiliki setidaknya satu parameter biaya dalam permintaan agar API menampilkan rute yang dioptimalkan. Lihat Konsep utama model Biaya untuk mempelajari biaya lebih lanjut.
startTimeWindows dan endTimeWindows Menentukan jangka waktu saat kendaraan dapat beroperasi di rute. Jangka waktu ini harus berada dalam jangka waktu globalStartTime dan globalEndTime yang ditetapkan di ShipmentModel. Meskipun properti ini tidak diperlukan, sebaiknya sertakan karena pengoptimal berfungsi paling baik saat mematuhi batasan waktu.

Contoh Vehicle

Dalam contoh ini, Anda memiliki layanan penitipan dan Anda ingin menentukan lokasi kendaraan Anda pada awal dan akhir hari serta jumlah bahan bakar yang digunakan. Anda tidak perlu menentukan jam kerja kendaraan karena jam tersebut cocok dengan jam yang Anda tentukan dalam properti globalStartTime dan globalEndTime dalam objek ShipmentModel.

Untuk contoh ini, nilai properti Vehicle dalam permintaan Anda adalah sebagai berikut:

Properti Nilai Deskripsi
startLocation latitude: 37.759773, longitude: -122.427063 Koordinat awal rute untuk kendaraan Anda. Koordinat ini cocok dengan lokasi penitipan Anda yang terletak di Mission Dolores Park, San Francisco.
endLocation latitude: 37.759773, longitude: -122.427063 Koordinat akhir rute untuk kendaraan Anda. Koordinat ini cocok dengan lokasi penitipan Anda yang terletak di Mission Dolores Park, San Francisco.
costPerHour 27 Jumlah yang Anda bayar kepada pengemudi untuk mengemudikan kendaraan penitipan Anda. Anda membayar pengemudi 27 dolar per jam.

Berikut adalah contoh kode pesan Vehicle yang menggabungkan nilai skenario contoh.

{
  "model": {
    "shipments": [
    ...
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ]
  }
}

Lihat dokumentasi referensi untuk mengetahui daftar lengkap properti di Vehicle.

Contoh permintaan lengkap

Contoh kode berikut memberikan contoh permintaan lengkap, yang menggabungkan contoh ShipmentModel, Shipment, dan Vehicle yang ditampilkan dalam dokumen ini.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ],
    "globalStartTime": "2024-02-13T00:00:00.000Z",
    "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}