ข้อความ OptimizeToursRequest
(REST, gRPC) ประกอบด้วยตัวเลข
อสังหาริมทรัพย์ที่เกี่ยวข้องกับ
ค่าใช้จ่าย พารามิเตอร์ต้นทุนเหล่านี้รวมกันจะแสดง
โมเดลต้นทุน รูปแบบต้นทุนจะบันทึกวัตถุประสงค์ด้านการเพิ่มประสิทธิภาพระดับสูงของคําขอหลายรายการ เช่น
- การให้ความสำคัญกับเส้นทางที่เร็วขึ้น
Vehicle
สำหรับเส้นทางที่สั้นกว่าหรืออีกวิธีหนึ่ง รอบๆ - การตัดสินว่าค่าใช้จ่ายในการแสดงโฆษณา
Shipment
มีความคุ้มค่ากับค่าของ การดำเนินการของShipment
สำเร็จ - ดำเนินการมารับและจัดส่งภายในกรอบเวลาที่กำหนดเท่านั้น คุ้มราคา
ดูตัวอย่างคำขอพร้อมค่าใช้จ่าย
{ "model": { "globalStartTime": "2023-01-13T16:00:00-08:00", "globalEndTime": "2023-01-14T16:00:00-08:00", "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 100.0 }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 5.0 }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 50.0 } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0 } ] } }
พร็อพเพอร์ตี้ต้นทุน Vehicle
รายการ
ข้อความ Vehicle
(REST, gRPC) มีพร็อพเพอร์ตี้ต้นทุนหลายรายการดังนี้
Vehicle.cost_per_hour
: แสดงค่าใช้จ่ายในการใช้ยานพาหนะต่อชั่วโมง รวมเวลาขนส่ง เวลารอ การเข้าชม และช่วงพักแล้วVehicle.cost_per_kilometer
: แสดงค่าใช้จ่ายต่อกิโลเมตรที่เดินทางโดย ยานพาหนะVehicle.cost_per_traveled_hour
: แสดงค่าใช้จ่ายในการใช้งานยานพาหนะขณะขนส่งเท่านั้น โดยไม่รวมเวลารอ เวลาเข้าชม และเวลาพัก
พารามิเตอร์ต้นทุนเหล่านี้ช่วยให้เครื่องมือเพิ่มประสิทธิภาพสามารถเปรียบเทียบระยะเดินทางกับเวลา
ข้อดีข้อเสีย ค่าใช้จ่ายที่เกิดขึ้นจากเส้นทางที่เพิ่มประสิทธิภาพจะปรากฏในการตอบกลับ
ข้อความในฐานะ metrics.costs
:
เมื่อ costPerHour
เพิ่มขึ้น เครื่องมือเพิ่มประสิทธิภาพจะพยายามค้นหาเส้นทางที่เร็วขึ้น
เส้นทางนั้นอาจไม่ใช่เส้นทางที่สั้นที่สุด ในตัวอย่างนี้ เส้นทางที่เร็วที่สุดเกิดขึ้น
สั้นที่สุด การเปลี่ยนแปลงพารามิเตอร์ต้นทุนจึงส่งผลกระทบไม่มาก
พร็อพเพอร์ตี้ต้นทุน Shipment
รายการ
ข้อความ Shipment
(REST, gRPC) ยังมีพารามิเตอร์ค่าใช้จ่ายหลายรายการดังนี้
Shipment.penalty_cost
แสดงถึงค่าใช้จ่ายที่เกิดจากการข้าม การจัดส่งShipment.VisitRequest.cost
แสดงค่าใช้จ่ายในการรับสินค้าหรือ การนำส่ง ซึ่งส่วนใหญ่ใช้เพื่อทำให้คุ้มค่าระหว่างการรับสินค้าแต่ละครั้งหรือ ตัวเลือกการจัดส่งสำหรับการจัดส่งครั้งเดียว
พารามิเตอร์ค่าใช้จ่าย Shipment
รายการใช้หน่วยที่ไม่มีมิติข้อมูลเดียวกันกับค่าใช้จ่าย Vehicle
พารามิเตอร์ หากค่าใช้จ่ายที่เกิดขึ้นของ Shipment
มากกว่าค่าปรับ Shipment
จะไม่รวมอยู่ในเส้นทางของ Vehicle
ใดๆ และจะปรากฏในรายการ skipped_shipments
ในข้อความตอบกลับแทน
พร็อพเพอร์ตี้ต้นทุน ShipmentModel
รายการ
ข้อความ ShipmentModel
(REST, gRPC) มีพร็อพเพอร์ตี้ต้นทุนรายการเดียว globalDurationCostPerHour
ค่าใช้จ่ายนี้เกิดขึ้นตามยอดรวม
เวลาที่ต้องใช้สำหรับยานพาหนะทุกคันในการทำ ShipmentRoute
เพิ่ม
globalDurationCostPerHour
ให้ความสำคัญกับการจัดส่งทั้งหมดก่อนเวลาดำเนินการ
พร็อพเพอร์ตี้ค่าใช้จ่ายการตอบกลับการเพิ่มประสิทธิภาพเส้นทาง
ข้อความ OptimizeToursResponse
(REST, gRPC) มีพร็อพเพอร์ตี้ต้นทุน
ที่แสดงถึงค่าใช้จ่ายที่เกิดขึ้นในกระบวนการสร้าง ShipmentRoute
จนเสร็จสมบูรณ์
พร็อพเพอร์ตี้ metrics.costs
และ metrics.totalCost
แสดงจํานวนหน่วยต้นทุนที่เกิดขึ้นในเส้นทางทั้งหมดในการตอบกลับ แต่ละรายการของ routes
มี
routeCosts
และที่พัก routeTotalCosts
รายการที่แสดงค่าใช้จ่ายสําหรับรายการดังกล่าว
เส้นทางที่ต้องการ
ดูการตอบกลับตัวอย่างคำขอที่มีค่าใช้จ่าย
{ "routes": [ { "vehicleStartTime": "2023-01-14T00:00:00Z", "vehicleEndTime": "2023-01-14T00:28:22Z", "visits": [ { "isPickup": true, "startTime": "2023-01-14T00:00:00Z", "detour": "0s" }, { "shipmentIndex": 2, "isPickup": true, "startTime": "2023-01-14T00:02:30Z", "detour": "150s" }, { "startTime": "2023-01-14T00:08:55Z", "detour": "150s" }, { "shipmentIndex": 2, "startTime": "2023-01-14T00:21:21Z", "detour": "572s" } ], "transitions": [ { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-14T00:00:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-14T00:02:30Z" }, { "travelDuration": "235s", "travelDistanceMeters": 795, "waitDuration": "0s", "totalDuration": "235s", "startTime": "2023-01-14T00:05:00Z" }, { "travelDuration": "496s", "travelDistanceMeters": 1893, "waitDuration": "0s", "totalDuration": "496s", "startTime": "2023-01-14T00:13:05Z" }, { "travelDuration": "171s", "travelDistanceMeters": 665, "waitDuration": "0s", "totalDuration": "171s", "startTime": "2023-01-14T00:25:31Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "902s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "800s", "totalDuration": "1702s", "travelDistanceMeters": 3353 }, "routeCosts": { "model.vehicles.cost_per_kilometer": 33.53, "model.vehicles.cost_per_hour": 18.911111111111111 }, "routeTotalCost": 52.441111111111113 } ], "skippedShipments": [ { "index": 1 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "902s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "800s", "totalDuration": "1702s", "travelDistanceMeters": 3353 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2023-01-14T00:00:00Z", "latestVehicleEndTime": "2023-01-14T00:28:22Z", "totalCost": 57.441111111111113, "costs": { "model.vehicles.cost_per_kilometer": 33.53, "model.vehicles.cost_per_hour": 18.911111111111111, "model.shipments.penalty_cost": 5 } } }
ในคำตอบตัวอย่าง metrics.costs
ระดับบนสุดคือ
{
"metrics": {
...
"costs": {
"model.vehicles.cost_per_hour": 18.911111111111111,
"model.vehicles.cost_per_kilometer": 33.53,
"model.shipments.penalty_cost": 5
}
}
}
ค่า model.shipments.penalty_cost
แสดงถึงต้นทุนที่เกิดขึ้นเนื่องจากการจัดส่งที่ข้าม พร็อพเพอร์ตี้ skippedShipments
แสดงรายการการจัดส่ง
ข้าม
ในตัวอย่างนี้ ระบบจะข้ามเฉพาะ model.shipments[1]
ในคำขอตัวอย่าง
model.shipments[1]
ต้องจ่ายค่าปรับ 5 หน่วย ซึ่งเท่ากับยอดรวม
model.shipments.penalty_cost
ในคำตอบตัวอย่าง การจัดส่งมีปริมาณต่ำ
penaltyCost
เปรียบเทียบกับ costPerHour
และ 10.0 ของ Vehicle
เป็น 40.0
costPerKilometer
ทำให้การข้ามการจัดส่งผลิตภัณฑ์คุ้มค่ากว่า
ทำให้เสร็จ
หัวข้อขั้นสูง: ค่าใช้จ่ายและข้อจำกัดที่ไม่บังคับ
พร็อพเพอร์ตี้ข้อความ OptimizeToursRequest
(REST, gRPC) หลายรายการแสดงถึงข้อจำกัดแบบยืดหยุ่น ซึ่งเป็นข้อจำกัดที่ทำให้เกิดต้นทุนเมื่อไม่สามารถปฏิบัติตาม
ตัวอย่างเช่น ข้อจำกัดยานพาหนะ LoadLimit
(REST, gRPC) มี
พร็อพเพอร์ตี้ softMaxLoad
และ costPerUnitAboveSoftMax
ทั้งหมดนี้ก่อให้เกิด
เป็นสัดส่วนค่าใช้จ่ายตามสัดส่วนของหน่วยโหลดที่เกิน softMaxLoad
ซึ่งทำให้
ให้สูงกว่าขีดจำกัด ก็ต่อเมื่อการดำเนินการดังกล่าวเหมาะสมในแง่ของต้นทุนเท่านั้น
ในทำนองเดียวกัน ข้อจำกัด TimeWindow
(REST, gRPC) มี
soft_start_time
และ soft_end_time
สำหรับพร็อพเพอร์ตี้
cost_per_hour_before_soft_start_time
และ cost_per_hour_after_soft_end_time
ที่เกิดขึ้นตามความสําคัญของกิจกรรมที่จำกัดเกิดขึ้นเร็วหรือช้า
ตาม TimeWindow
เช่นเดียวกับพารามิเตอร์รูปแบบต้นทุนทั้งหมด ต้นทุนแบบปรับคงที่จะแสดงอยู่ในฟิลด์ หน่วยที่ไม่มีมิติข้อมูลเช่นเดียวกับพารามิเตอร์ต้นทุนอื่นๆ
คุณสามารถดูรายละเอียดข้อจำกัดของ LoadLimit
ได้ในดีมานด์และขีดจำกัดของโหลด มีการจัดการข้อจำกัด TimeWindow
ข้อโดยละเอียด
ในข้อจำกัดด้านกรอบเวลาในการรับสินค้าและการนำส่ง