Permintaan dan batas pemuatan

Properti loadDemands ditentukan di bagian ShipmentModel.shipments.Shipment dan properti loadLimits di bagian ShipmentModel.vehicles.Vehicle.

Permintaan dan batas beban adalah jenis batasan yang dapat Anda gunakan untuk mengelola kapasitas. Batasan ini menentukan kapasitas yang diperlukan pengiriman dan kapasitas maksimum kendaraan, yang memungkinkan Anda mengoptimalkan penetapan rute berdasarkan batasan ini.

Permintaan dan batas beban dapat mendukung tujuan seperti:

  • Mencegah kendaraan kelebihan muatan.
  • Pantau perubahan muatan kendaraan saat pengiriman diambil dan dikirim.
  • Prioritaskan pemasangan kendaraan tugas berat dengan pengiriman muatan berat.

Permintaan dan batas muatan ditentukan dalam properti berikut:

  • loadDemands menentukan jumlah kapasitas yang diperlukan pengiriman tertentu.
  • loadLimits menentukan kapasitas maksimum untuk kendaraan tertentu.

Struktur

Seperti yang ditunjukkan dalam diagram, permintaan dan batas beban disusun sebagai berikut:

Checklist Essentials

Checklist berikut menjelaskan pengetahuan penting yang mencegah potensi kesalahan terkait pemuatan. Daftar ini dapat membantu Anda memvalidasi permintaan dan memecahkan masalah respons.

Properti

Bagian ini menjelaskan properti untuk permintaan dan batas beban, yaitu sebagai berikut:

  • Jenis beban: Properti bersama antara permintaan dan batas beban.
  • Load dan LoadLimit: Properti unik yang ada dalam permintaan beban dan batas beban.

Jenis muatan

Jenis muatan adalah kunci string yang Anda terapkan secara setara pada pengiriman dan kendaraan. Satu jenis muatan berlaku untuk permintaan muatan pengiriman serta batas muatan kendaraan.

Jenis beban menggunakan sintaksis jenis peta Protocol Buffers. Saat memberi nama jenis beban, gunakan ID yang menjelaskan jenis beban dan unitnya. Misalnya: weightKg, volume_gallons, palletcount, atau frequencyDaily.

Load dan LoadLimit

Objek Load dan LoadLimit berisi properti tertentu untuk menentukan persyaratan kapasitas untuk pengiriman dan kendaraan, tabel berikut mendeskripsikan properti ini:

Objek Orang tua Properti Jenis properti Deskripsi properti
Load loadDemands amount string (format int64) Menentukan persyaratan kapasitas pengiriman dalam jenis yang ditentukan.
LoadLimit loadLimits maxLoad string (format int64) Menentukan kapasitas muatan maksimum kendaraan dalam jenis yang ditentukan.

Contoh

Bagian ini membahas tiga jenis contoh:

  • Contoh kode yang mengilustrasikan struktur properti permintaan dan batas beban.
  • Contoh skenario yang menunjukkan salah satu cara menggunakan permintaan dan batas beban dalam permintaan API.
  • Contoh permintaan yang menyertakan nilai yang ditetapkan dalam skenario contoh.

Contoh kode

Contoh berikut menunjukkan struktur permintaan beban tempat Anda dapat menetapkan jenis loadDemands sebagai string dan properti amount sebagai string dalam format int64:

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

Contoh berikut menunjukkan struktur paling dasar dari batas beban, tempat Anda dapat menetapkan jenis loadLimits sebagai string, dan properti maxLoad sebagai string dalam format int64:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

Contoh skenario

Bagian ini menjelaskan skenario saat Anda memiliki bisnis penitipan dan mengoptimalkan rute untuk mengangkut beberapa dalam kendaraan dengan jumlah kandang yang terbatas.

Setiap pengiriman mewakili satu perhentian tempat Anda mengambil sejumlah tertentu. Dalam contoh ini, setiap pengiriman memiliki lokasi pengambilan yang berbeda, yaitu rumah yang Anda rawat, dan semua pengiriman memiliki lokasi pengiriman yang sama, yaitu gedung tempat penitipan Anda.

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

Orang tua Properti Jenis Nilai Skenario
loadDemands jenis beban string dogUnit Menentukan jenis muatan untuk pengiriman. Contoh ini menggunakan dogUnit, dengan setiap dogUnit mewakili satu.
loadDemands amount angka Pengiriman pertama: 1
Pengiriman kedua: 3
Menentukan jumlah jenis beban yang ditentukan. Dalam contoh ini, Anda menentukan dua pengiriman, yang pertama Anda mengambil satu, yang kedua Anda mengambil 3.
loadLimits jenis muatan string dogUnit Mendefinisikan jenis batas muatan yang diterapkan pada kendaraan. Nilai ini harus cocok dengan jenis muatan pengiriman agar batasnya relevan.
loadLimits maxLoad angka 6 Menentukan jumlah maksimum jenis muatan yang dapat diangkut kendaraan. Dalam contoh ini, Anda hanya memiliki satu kendaraan dengan kapasitas maksimum 6 dogUnit, dengan setiap dogUnit mewakili satu kandang.

Diagram berikut menggambarkan batas muatan kendaraan, permintaan muatan setiap pengiriman, dan cara setiap pengiriman menggunakan batas muatan kendaraan:

Kendaraan memulai rute dengan 6 ruang kosong yang mewakili batas muatan kendaraan. Pengiriman pertama memerlukan ruang untuk satu, pengiriman kedua memerlukan ruang untuk tiga. Status akhir kendaraan adalah 4 dari 6 ruang kini terisi, dengan dua ruang kosong yang tersisa.

Dalam contoh ini, permintaan muatan setiap pengiriman dan batas muatan kendaraan memiliki efek berikut:

  • Pengoptimal tidak akan mengalami masalah dalam membuat rute bagi kendaraan untuk mengangkut, karena kendaraan dapat membawa hingga 6, dan Anda hanya mengambil 4.

  • Dengan batas muatan 6 dogUnit pada kendaraan, berarti Anda hanya dapat membawa dua lagi di kendaraan ini.

  • Jika jumlah lebih besar daripada batas muatan, pengoptimal akan melewati salah satu pengambilan atau menetapkannya ke kendaraan yang sesuai.

Ingat tidak ada kumpulan jenis yang telah ditentukan sebelumnya. Dalam contoh ini, Anda dapat mengubah jenis muatan dari unit menjadi unit berat untuk membatasi berat , atau mengubahnya menjadi pengukuran linear untuk membatasi lebar atau tingginya. Fleksibilitas ini memungkinkan Anda menyesuaikan permintaan dan batas beban dengan kebutuhan spesifik Anda.

Contoh permintaan

Contoh berikut menunjukkan struktur permintaan optimizeTours dasar yang menggabungkan nilai skenario contoh:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "One bernese mountain dog",
        "loadDemands": {
          "dogUnit": {
            "amount": "1"
          }
        }
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "Three chihuahuas",
        "loadDemands": {
          "dogUnit": {
            "amount": "3"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "loadLimits": {
          "dogUnit": {
            "maxLoad": "6"
          }
        },
        "costPerKilometer": 1.0
      }
    ]
  }
}

Ingatlah bahwa, tidak seperti contoh ini, pengiriman dapat memiliki beberapa permintaan muatan, dan kendaraan dapat memiliki beberapa batas muatan, sehingga Anda dapat memberikan batasan kompleks untuk dipertimbangkan saat mengoptimalkan rute armada Anda.

Batas beban yang dapat dilewati

Anda dapat menetapkan batas muatan sebagai batasan fleksibel dengan menambahkan softMaxLoad dan costPerUnitAboveSoftMax pada loadLimits kendaraan. Hal ini memungkinkan pengoptimal melebihi muatan maksimum kendaraan dengan biaya tertentu, sehingga memprioritaskan penyelesaian rute daripada kepatuhan ketat terhadap batas muatan.

Anda dapat menggunakan maxLoad dan softMaxLoad bersama-sama untuk menetapkan batas beban ketat dan longgar. Dalam hal ini, softMaxLoad menetapkan beban yang dapat dilampaui, dan maxLoad menetapkan batas ketat yang tidak dapat dilampaui. Jika keduanya digunakan, maxLoad harus lebih besar dari softMaxLoad.

Properti

Tabel berikut menjelaskan properti batasan fleksibel untuk permintaan dan batas beban.

Orang tua Nama properti Jenis properti Deskripsi properti
loadLimits softMaxLoad string (format int64) Beban maksimum pilihan untuk kendaraan. Jika muatan kendaraan melebihi nilai ini, biaya akan dikenakan.
loadLimits costPerUnitAboveSoftMax angka Biaya per unit beban di atas softMaxLoad. Kolom ini wajib diisi saat menggunakan softMaxLoad. Lihat konsep utama Model biaya untuk mempelajari lebih lanjut biaya.

Contoh kode

Contoh berikut menunjukkan struktur properti batasan fleksibel loadLimits:

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}