費用模式

成本屬性會在 ShipmentModel.shipments.Shipment 和 ShipmentModel.vehicles.Vehicle 下定義。

Route Optimization API 的主要目標,是找出成本最低的路線。因此,成本模型是路線最佳化的主要驅動因素。

成本模型是一組屬性,用於指定全域、車輛和運送成本。

費用模型資源支援下列最佳化目標類型:

  • 有效的車輛指派和路線
  • 符合成本效益的自取和配送時間
  • 優先處理重要貨件

結構

如圖所示,成本模型資源的結構如下:

本文件只會強調必要的費用模型參數。如需完整的費用參數清單,請參閱參考說明文件。

Essentials 檢查清單

以下檢查清單說明必要知識,可避免發生與費用相關的錯誤。這份清單可協助您驗證要求,並排解回應問題。

屬性

下表列出成本模型屬性並加以說明。

有子女 屬性名稱 房源類型 單次費用 屬性說明
Shipment penaltyCost 數字 略過出貨 跳過運送所產生的成本。
如果完成運送的成本超過罰款成本,API 就會略過運送作業。
  • 設定 penaltyCost 後,系統會優先處理運費較高的貨件。
  • 如未設定運送 penaltyCost,運送作業就會變成強制
  • 明確將出貨 penaltyCost 設為零,會導致 API 一律略過出貨,除非其他限制要求必須出貨。
Vehicle fixedCost 數字 運送地址 如果這輛車輛用於處理出貨作業,就會收取固定費用。
costPerHour 數字 小時 每小時車輛運作成本,包括轉乘、等待、拜訪和休息時間。
隨著這項成本增加,最佳化器會嘗試找出可能不是最短路徑的較快路徑。
由於這項屬性簡單且完整,因此可有效計算每輛車的單獨成本。
costPerKilometer 數字 公里 車輛每行駛一公里的成本,例如燃料成本和攤銷的車輛維修成本。
costPerTraveledHour 數字 小時 車輛在行駛期間每小時的費用,不含等待、拜訪和休息時間。這會優先選擇較快的路線,而非較短的路線。

範例

本節將介紹三種範例:

程式碼範例

以下程式碼範例顯示 Shipment 中費用模型屬性的結構:

{
  "model": {
    "shipments": [ ...
      {
        "penaltyCost": PENALTY_COST
      }
    ],
    "vehicles": [ ...
    ]
  }
}

以下程式碼範例顯示 Vehicle 中費用模型屬性的結構:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "fixedCost": FIXED_COST,
        "costPerKilometer": KILOMETER_COST,
        "costPerHour": HOUR_COST,
        "costPerTraveledHour": TRAVELED_HOUR_COST
      }
    ]
  }
}

範例情境

本節說明您經營寵物日托的情況。您正在為用來從住家接送狗狗的卡車進行路線最佳化。在這種情況下,您希望最佳化工具在提供路線時,考量與接送狗隻和車輛運作相關的成本。

在這個範例中,一個成本單位代表 1 美元。也就是說,要求中的成本模型資源值如下:

屬性 情境
penaltyCost 10 代表你向客戶收取的罰款,因為他們未在預定日期領回狗狗。如果你未在預定日期前往客戶家中取回寵物,客戶的服務費用總額就會扣除 40 美元。
fixedCost 30 代表車輛貸款的每日費用,即每天 30 美元。
costPerKilometer 0.08 代表車輛每公里的油耗量。你的車輛每行駛 1 公里需要消耗 0.04 加侖的汽油,而你所在地區的加侖汽油價格為 2 美元。
costPerHour 27 代表你支付駕駛人駕駛車輛的費用。您支付的司機費為每小時 27 美元。
costPerTraveledHour 2.5 代表在車輛行駛期間,你必須為狗狗支付的空調費用。車輛未行駛時,駕駛人可以打開後門並關閉空調。

最佳化工具可根據成本參數做出使用者不易察覺的取捨,但可透過最佳化功能找出這些取捨。

下圖為示例,其中最佳化工具可選擇較長但較快的路線 (綠色虛線),以避開紅色虛線的交通壅塞。

車輛有兩條可能的路線,一條是綠色虛線所代表的路線,較長但沒有任何事故;另一條是紅色虛線所代表的路線,較短但中間有車禍事故。

在這個情境中,兩個路線的費用平衡如下:

除了提供經濟實惠的路線,最佳化工具也會在回應屬性中提供運送路線的總成本。

要求範例

以下範例說明基本 optimizeTours 要求的結構,其中納入範例情境中設定的值:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
        "penaltyCost": 40
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "fixedCost": 30,
        "costPerKilometer": 0.08,
        "costPerHour": 27,
        "costPerTraveledHour": 2.5
      }
    ]
  }
}

回應屬性

OptimizeToursResponse 訊息含有費用屬性,可說明完成路線時產生的費用: