Membuat permintaan dengan biaya beban

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

Contoh permintaan minimal dengan biaya muatan

Berikut adalah contoh sebagian permintaan dengan biaya muatan. Dalam contoh ini, satu kendaraan tidak dapat membawa muatan weightKg total lebih dari 1.000 kg, yang dikenai 1 unit biaya per kilometer jika muatan weightKg yang dibawa melebihi 500 kg.

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

Perhitungan biaya muatan untuk contoh ini adalah sebagai berikut:

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

Jadi, jika kendaraan membawa muatan weightKg sebesar 600 selama 10 kilometer, perhitungannya adalah:

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

Biaya muatan dapat digunakan untuk memodelkan berbagai konsep, seperti peningkatan penggunaan energi kendaraan saat mengangkut muatan berat atau keausan kendaraan yang disebabkan oleh pemuatan kendaraan yang berlebihan.

Contoh permintaan lain dengan biaya muatan

Berikut adalah contoh lain biaya muatan yang mengenakan biaya per waktu perjalanan di atas dan di bawah nilai minimum:

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

Perhitungan biaya muatan 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 muatan weightLbs sebesar 950 selama 5 jam, perhitungannya adalah:

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

Dalam contoh ini, load_threshold untuk biaya muatan weightLbs mendekati max_load. cost_per_unit_above_threshold menerapkan biaya per jam perjalanan yang tinggi saat kendaraan melakukan perjalanan dengan muatan yang sangat berat, sehingga memberikan penalti pada rute yang dapat meningkatkan keausan kendaraan atau menggunakan bahan bakar berlebih. cost_per_unit_below_threshold menambahkan biaya per unit berat yang dibawa oleh kendaraan hingga nilai minimum, yang menunjukkan peningkatan konsumsi bahan bakar saat kendaraan membawa lebih banyak muatan.

Pertanyaan umum (FAQ)

Berikut beberapa pertanyaan umum (FAQ) tentang biaya muatan:

Pertanyaan Jawaban
Di mana saya dapat menentukan biaya muatan? Tentukan biaya muatan di Vehicle.LoadLimit.
Bagaimana biaya muatan dicocokkan dengan pengiriman? Biaya muatan berlaku untuk pengiriman yang permintaan muatannya jenis cocok dengan jenis batas muatan untuk kendaraan, seperti berat atau volume. Jenis muatan adalah string arbitrer, seperti yang dijelaskan dalam permintaan dan batas muatan.
Bagaimana biaya muatan dinyatakan? Biaya muatan dinyatakan dalam hal jarak atau durasi. Gunakan cost_per_kilometer untuk menentukan biaya dalam hal jarak dan cost_per_traveled_hour untuk menentukan biaya dalam hal durasi.
Kapan biaya muatan diterapkan? Muatan kendaraan dibandingkan dengan load_threshold biaya muatan. Jika cost_per_unit_above_threshold ditentukan, biaya akan ditambahkan secara proporsional dengan muatan kendaraan di atas load_threshold menggunakan rumus max(0, load - load_threshold). Jika cost_per_unit_below_threshold ditentukan, biaya akan ditambahkan secara proporsional dengan muatan kendaraan di bawah load_threshold, menggunakan rumus min(load, load_threshold).
Apa nilai default untuk parameter biaya muatan? load_threshold, cost_per_unit_above_threshold, dan cost_per_unit_below_threshold semuanya nol secara default.
Dalam satuan apa biaya muatan dinyatakan? Biaya muatan dinyatakan dalam satuan 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 muatan dalam respons? Biaya muatan yang dikeluarkan muncul di properti metrics dan route_metrics dari pesan respons. Misalnya, yang dikeluarkan cost_per_kilometer akan muncul sebagai model.vehicles.load_limits.cost_per_kilometer.

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

Contoh: Membuat Permintaan OptimizeTours

OptimizeTours permintaan 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 mengirimkan 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.