Membuat permintaan dengan biaya beban

Buat permintaan dengan biaya beban agar pengoptimal mempertimbangkan beban yang dibawa kendaraan Anda di antara kunjungan. Biaya yang dikeluarkan bergantung pada jumlah ShipmentRoute.VehicleLoad yang dibawa dan jarak atau durasi transisi (masing-masing menggunakan cost_per_kilometer atau cost_per_traveled_hour).

Contoh permintaan minimal dengan biaya pemuatan

Berikut adalah contoh sebagian permintaan dengan biaya pemuatan. Dalam contoh ini, satu kendaraan tidak boleh mengangkut lebih dari 1.000 kg total beban weightKg, yang menimbulkan 1 unit biaya per kilometer jika beban weightKg yang diangkut melebihi 500 kg.

  {
    "model": {
      "vehicles": [{
        "loadLimits": {
          "weightKg": {
            "maxLoad": "1000",
            "costPerKilometer": {
              "loadThreshold": "500",
              "costPerUnitAboveThreshold": 1
            }
          }
        }
      }]
    }
  }
  

Perhitungan biaya pemuatan untuk contoh ini adalah sebagai berikut:

cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold

Jadi, jika kendaraan membawa beban weightKg sebesar 600 selama 10 kilometer, penghitungannya adalah:

(600 - 500) * 10 * 1 = 1000 cost units

Biaya beban dapat digunakan untuk membuat model berbagai konsep, seperti peningkatan penggunaan energi kendaraan saat mengangkut beban berat atau keausan kendaraan yang disebabkan oleh beban kendaraan yang berlebihan.

Contoh permintaan lain dengan biaya beban

Berikut adalah contoh lain biaya beban yang mengenakan biaya per waktu perjalanan baik di atas maupun di bawah nilai minimum:

  {
    "model": {
      "vehicles": [{
        "loadLimits": {
          "weightLbs": {
            "maxLoad": "1000",
            "costPerTraveledHour": {
              "loadThreshold": "900",
              "costPerUnitAboveThreshold": 10,
              "costPerUnitBelowThreshold": 1
            },
          },
        }
      }]
    }
  }
  

Perhitungan biaya pemuatan untuk contoh ini adalah sebagai berikut:

cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
  + min(carried load, load threshold) * time * cost per unit below threshold

Jadi, jika kendaraan membawa beban weightLbs sebesar 950 selama 5 jam, penghitungannya adalah:

max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000

Dalam contoh ini, load_threshold untuk biaya pemuatan weightLbs mendekati max_load. cost_per_unit_above_threshold menerapkan biaya tinggi per jam perjalanan saat kendaraan melakukan perjalanan dengan beban yang sangat berat, sehingga menghukum rute yang dapat meningkatkan keausan kendaraan atau menghabiskan bahan bakar berlebih. cost_per_unit_below_threshold menambahkan biaya per unit berat yang dibawa oleh kendaraan hingga nilai minimum, yang mewakili peningkatan konsumsi bahan bakar karena kendaraan membawa lebih banyak beban.

Pertanyaan umum (FAQ)

Berikut beberapa pertanyaan umum (FAQ) tentang biaya pemuatan:

Pertanyaan Jawaban
Di mana saya dapat menentukan biaya pemuatan? Tentukan biaya pemuatan di Vehicle.LoadLimit.
Bagaimana biaya muatan dicocokkan dengan pengiriman? Biaya muatan berlaku untuk pengiriman yang jenis permintaan muatannya cocok dengan jenis batas muatan untuk kendaraan, seperti berat atau volume. Jenis beban adalah string arbitrer, seperti yang dijelaskan dalam permintaan dan batas beban.
Bagaimana biaya pemuatan dinyatakan? Biaya pemuatan dinyatakan dalam jarak atau durasi transisi. Gunakan cost_per_kilometer untuk menentukan biaya dalam hal jarak dan cost_per_traveled_hour untuk menentukan biaya dalam hal durasi.
Kapan biaya pemuatan diterapkan? Beban kendaraan dibandingkan dengan load_threshold biaya beban. Jika cost_per_unit_above_threshold ditentukan, biaya akan ditambahkan secara proporsional dengan beban kendaraan di atas load_threshold menggunakan formula max(0, load - load_threshold). Jika cost_per_unit_below_threshold ditentukan, biaya ditambahkan secara proporsional dengan beban kendaraan di bawah load_threshold, menggunakan formula min(load, load_threshold).
Apa nilai default untuk parameter biaya beban? load_threshold, cost_per_unit_above_threshold, dan cost_per_unit_below_threshold semuanya nol secara default.
Dalam unit apa biaya beban dinyatakan? Biaya beban dinyatakan dalam unit tanpa dimensi yang sama dengan semua parameter biaya lainnya, seperti global_duration_cost_per_hour atau Shipment.penalty_cost.
Di mana saya dapat menemukan biaya pemuatan dalam respons? Biaya pemuatan yang terjadi muncul di properti metrics dan route_metrics pesan respons. Misalnya, cost_per_kilometer yang terjadi akan muncul sebagai model.vehicles.load_limits.cost_per_kilometer.

Untuk penjelasan mendetail tentang biaya pemuatan, lihat dokumentasi referensi (REST, gRPC).

Contoh: Membuat Permintaan OptimizeTours

Permintaan OptimizeTours juga dapat dibuat menggunakan REST atau gRPC.

Sebelum membuat permintaan, ganti parameter berikut dengan nilai yang sesuai untuk lingkungan Anda:

  • Pastikan Anda telah mengonfigurasi Kredensial Default Aplikasi seperti yang dijelaskan dalam Menggunakan OAuth.
  • Tetapkan PROJECT_NUMBER_OR_ID ke nomor atau ID project Cloud Anda.

    Perintah berikut mengirim permintaan OptimizeTours ke Route Optimization API dan menerima respons secara sinkron.

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- << EOM
    {
      "model": {
        "shipments": [
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.789456,
                  "longitude": -122.390192
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 100.0,
            "loadDemands": {
              "weightKg": {
                "amount": 50
              }
            }
          },
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.789116,
                  "longitude": -122.395080
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 30.0,
            "loadDemands": {
              "weightKg": {
                "amount": 10
              }
            }
          },
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.795242,
                  "longitude": -122.399347
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 50.0,
            "loadDemands": {
              "weightKg": {
                "amount": 80
              }
            }
          }
        ],
        "vehicles": [
          {
            "endLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "startLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "costPerHour": 40.0,
            "costPerKilometer": 10.0,
            "loadLimits": {
              "weightKg": {
                "maxLoad": "100",
                "costPerKilometer": {
                  "loadThreshold": "15",
                  "costPerUnitAboveThreshold": 1
                }
              }
            }
          }
        ]
      }
    }
    EOM

Setelah permintaan selesai, Anda akan menerima pesan respons.