Đưa ra yêu cầu có phí tải

Hãy tạo một yêu cầu có chi phí tải để trình tối ưu hoá xem xét tải mà xe của bạn mang theo giữa các lượt truy cập. Chi phí phát sinh phụ thuộc vào cả lượng ShipmentRoute.VehicleLoad được vận chuyển và khoảng cách hoặc thời lượng của quá trình chuyển đổi (sử dụng cost_per_kilometer hoặc cost_per_traveled_hour tương ứng).

Yêu cầu ví dụ tối thiểu có chi phí tải

Dưới đây là một ví dụ về một yêu cầu có chi phí tải. Trong ví dụ này, một xe không được chở quá 1.000 kg tổng trọng tải weightKg, tức là phải trả 1 đơn vị chi phí cho mỗi km khi trọng tải weightKg vượt quá 500 kg.

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

Cách tính chi phí tải cho ví dụ này như sau:

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

Vì vậy, nếu xe chở tải weightKg là 600 trên 10 km, thì phép tính sẽ là:

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

Chi phí tải có thể được dùng để lập mô hình cho nhiều khái niệm, chẳng hạn như tăng mức sử dụng năng lượng của xe khi vận chuyển hàng nặng hoặc hao mòn xe do tải xe quá mức.

Một yêu cầu mẫu khác có chi phí tải

Dưới đây là một ví dụ khác về chi phí tải áp đặt chi phí trên mỗi thời gian di chuyển cả trên và dưới ngưỡng:

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

Cách tính chi phí tải cho ví dụ này như sau:

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

Vì vậy, nếu xe chở tải weightLbs là 950 trong 5 giờ, thì bạn sẽ tính như sau:

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

Trong ví dụ này, load_threshold cho chi phí tải weightLbs gần bằng max_load. cost_per_unit_above_threshold áp dụng chi phí cao cho mỗi giờ di chuyển khi xe di chuyển với tải trọng đặc biệt nặng, phạt các tuyến đường có thể làm tăng mức hao mòn của xe hoặc tiêu thụ quá nhiều nhiên liệu. cost_per_unit_below_threshold thêm chi phí trên mỗi đơn vị trọng lượng mà xe chở lên đến ngưỡng, thể hiện mức tiêu thụ nhiên liệu tăng lên khi xe chở nhiều tải hơn.

Câu hỏi thường gặp

Dưới đây là một số câu hỏi thường gặp về chi phí tải:

Câu hỏi Trả lời
Tôi có thể chỉ định chi phí tải ở đâu? Chỉ định chi phí tải trong Vehicle.LoadLimit.
Chi phí tải hàng được so khớp với lô hàng như thế nào? Phí tải áp dụng cho các lô hàng có loại nhu cầu tải khớp với loại giới hạn tải cho xe, chẳng hạn như trọng lượng hoặc thể tích. Loại tải là các chuỗi tuỳ ý, như mô tả trong phần yêu cầu và giới hạn tải.
Chi phí tải được thể hiện như thế nào? Chi phí tải được biểu thị bằng khoảng cách hoặc thời lượng chuyển đổi. Sử dụng cost_per_kilometer để chỉ định chi phí theo quãng đường và cost_per_traveled_hour để chỉ định chi phí theo thời lượng.
Khi nào áp dụng phí tải? Tải trọng của xe được so sánh với load_threshold của chi phí tải. Nếu bạn chỉ định cost_per_unit_above_threshold, chi phí sẽ được thêm vào theo tỷ lệ tải của xe ở trên load_threshold bằng cách sử dụng công thức max(0, load - load_threshold). Nếu bạn chỉ định cost_per_unit_below_threshold, chi phí sẽ được thêm vào theo tỷ lệ tải của xe dưới load_threshold, sử dụng công thức min(load, load_threshold).
Giá trị mặc định của các tham số chi phí tải là gì? load_threshold, cost_per_unit_above_thresholdcost_per_unit_below_threshold đều bằng 0 theo mặc định.
Chi phí tải được thể hiện bằng đơn vị nào? Chi phí tải được biểu thị bằng cùng một đơn vị không thứ nguyên như tất cả các thông số chi phí khác, chẳng hạn như global_duration_cost_per_hour hoặc Shipment.penalty_cost.
Tôi có thể tìm thấy chi phí tải trong phản hồi ở đâu? Chi phí tải đã phát sinh sẽ xuất hiện trong các thuộc tính metricsroute_metrics của thông báo phản hồi. Ví dụ: một cost_per_kilometer đã phát sinh sẽ xuất hiện dưới dạng model.vehicles.load_limits.cost_per_kilometer.

Để biết nội dung giải thích chi tiết về chi phí tải, hãy xem tài liệu tham khảo (REST, gRPC).

Ví dụ: Tạo yêu cầu OptimizeTours

Bạn cũng có thể tạo yêu cầu OptimizeTours bằng REST hoặc gRPC.

Trước khi đưa ra yêu cầu, hãy thay thế các tham số sau bằng các giá trị phù hợp với môi trường của bạn:

  • Đảm bảo bạn đã định cấu hình Thông tin xác thực mặc định của ứng dụng như mô tả trong phần Sử dụng OAuth.
  • Đặt PROJECT_NUMBER_OR_ID thành số hoặc mã dự án trên Google Cloud.

    Lệnh sau đây sẽ gửi yêu cầu OptimizeTours đến API Tối ưu hoá tuyến đường và nhận phản hồi đồng bộ.

    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

Sau khi yêu cầu hoàn tất, bạn sẽ nhận được thông báo phản hồi.