Tujuan

Properti tujuan mencakup `objectives` di `ShipmentModel` serta `type` dan `weight` di `objectives`

Tujuan adalah parameter yang dapat Anda gunakan untuk menentukan sasaran pengoptimalan tingkat tinggi, bukan memberikan parameter biaya tertentu dari model biaya.

Anda dapat menggunakan beberapa tujuan dalam satu permintaan, dan memberikan bobot relatif pada setiap tujuan untuk mengontrol seberapa kuat pengaruhnya terhadap pengoptimalan secara keseluruhan. Tujuan memengaruhi seluruh permintaan Anda, yang memengaruhi semua kendaraan dan pengiriman Anda. Terakhir, Anda juga dapat menggunakan tujuan untuk memulai pengembangan model biaya Anda sendiri seperti yang dijelaskan dalam Membuat model biaya.

Anda dapat menggunakan tujuan untuk mengontrol dampak berikut pada rencana rute Anda:

  • Total waktu perjalanan atau jarak rute Anda.
  • Total waktu kerja di semua kendaraan.
  • Total jumlah kendaraan yang digunakan.

Properti

Properti objectives adalah array jenis pesan Objective dalam ShipmentModel. Setiap Objective menentukan sasaran pengoptimalan tertentu dan berisi kolom yang tercantum dalam tabel berikut:

Kolom Jenis Deskripsi
type Enum Menentukan target pengoptimalan yang telah ditentukan sebelumnya. Nilai yang diterima adalah sebagai berikut:
  • DEFAULT: Menggunakan serangkaian biaya default untuk memastikan solusi dasar, yang berarti mencegah solusi menggunakan nilai ekstrem untuk mencapai tujuan. DEFAULT otomatis ditambahkan ke permintaan yang berisi tujuan, dan ditambahkan dengan weight 1.0. Jika Anda secara aktif menyertakan tujuan ini dalam permintaan, solusi akan menggunakan weight yang Anda tentukan.
  • MIN_DISTANCE: Meminimalkan total jarak yang ditempuh.
  • MIN_WORKING_TIME: Meminimalkan total waktu kerja, yang dijumlahkan untuk semua kendaraan.
  • MIN_TRAVEL_TIME: Meminimalkan total waktu perjalanan, yang dijumlahkan di semua kendaraan.
  • MIN_NUM_VEHICLES: Meminimalkan jumlah kendaraan yang digunakan.
weight Ganda Menentukan kepentingan relatif tujuan ini. Saat menggunakan beberapa tujuan, nilai weight mengontrol seberapa kuat tujuan tertentu ini memengaruhi pengoptimalan rute secara keseluruhan dibandingkan dengan tujuan lainnya. Nilai ini dapat berupa bilangan non-negatif apa pun dan tidak perlu berjumlah 1. Nilai defaultnya adalah 1.0.

Contoh

Bagian ini mencakup dua jenis contoh:

  • Contoh kode yang mengilustrasikan struktur array objectives.
  • Contoh permintaan yang menyertakan array objectives.

Contoh kode

Contoh berikut menunjukkan struktur objectives:

"objectives": [
  {
    "type": "OBJECTIVE_TYPE",
    "weight": WEIGHT
  }
]

Contoh permintaan

Contoh berikut menunjukkan struktur permintaan optimizeTours dasar yang menggabungkan beberapa tujuan, dengan MIN_TRAVEL_TIME tiga kali lebih penting daripada MIN_WORKING_TIME.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME",
        "weight": 3.0
      },
      {
        "type": "MIN_WORKING_TIME"
      }
    ]
  }
}

Membuat model biaya

Tujuan adalah cara cepat untuk menetapkan target pengoptimalan, tetapi dalam beberapa kasus, tujuan saja mungkin tidak cukup spesifik. Untuk mencapai sasaran perutean yang tepat, Anda mungkin memerlukan kontrol terperinci yang hanya tersedia melalui parameter model biaya.

Anda dapat memulai pengembangan model biaya sendiri dengan menambahkan tujuan ke permintaan, lalu mengonversi tujuan dalam permintaan menjadi parameter model biaya menggunakan mode penyelesaian TRANSFORM_AND_RETURN_REQUEST.

Saat Anda mengirim permintaan menggunakan mode penyelesaian ini, hal berikut akan terjadi:

  • API ini mengonversi tujuan Anda menjadi parameter model biaya dan menampilkannya dalam processedRequest. Kemudian, Anda dapat menyesuaikan parameter model biaya sesuai kebutuhan untuk menyempurnakan rencana rute.
  • Saat menggunakan beberapa tujuan, API menggabungkan biaya semua tujuan Anda dan menskalakannya berdasarkan bobot masing-masing.
  • Anda tidak ditagih untuk permintaan ini, karena API tidak memberikan rute yang dioptimalkan, tetapi hanya mengonversi tujuan menjadi parameter model biaya.

Contoh permintaan

Contoh berikut menunjukkan permintaan menggunakan tujuan MIN_TRAVEL_TIME dan mode penyelesaian TRANSFORM_AND_RETURN_REQUEST:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME"
      }
    ]
  },
  "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
}

Contoh respons

Berikut adalah respons yang sesuai dengan permintaan sebelumnya. Respons ini mencakup parameter model biaya yang dihasilkan dan tujuan asli untuk referensi.

{
  "processedRequest": {
    "model": {
      "shipments": [
        {
          "pickups": [
            {
              "arrivalLocation": {
                "latitude": 37.425062610009959,
                "longitude": -122.09535511930135
              }
            }
          ],
          "deliveries": [
            {
              "arrivalLocation": {
                "latitude": 37.424215032060211,
                "longitude": -122.09526063135228
              }
            }
          ]
        }
      ],
      "vehicles": [
        {
          "travelMode": "DRIVING",
          "costPerHour": 30,
          "costPerTraveledHour": 330,
          "costPerKilometer": 0.2
        }
      ],
      "objectives": [
        {
          "type": "MIN_TRAVEL_TIME"
        }
      ]
    },
    "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
  }
}