ส่งคำขอที่มีต้นทุนการโหลด

ส่งคำขอพร้อมต้นทุนการโหลดเพื่อให้เครื่องมือเพิ่มประสิทธิภาพพิจารณา น้ำหนักบรรทุกที่ยานพาหนะของคุณบรรทุกระหว่างการเข้าชม ค่าใช้จ่ายที่เกิดขึ้นจะขึ้นอยู่กับทั้ง ปริมาณของ ShipmentRoute.VehicleLoad ที่นำไปและระยะทางหรือระยะเวลาของ การเปลี่ยนผ่าน (ใช้ cost_per_kilometer หรือ cost_per_traveled_hour ตามลำดับ)

คำขอตัวอย่างแบบเรียบง่ายที่มีต้นทุนการโหลด

ต่อไปนี้คือตัวอย่างคำขอที่มีต้นทุนการโหลดบางส่วน ในตัวอย่างนี้ ยานพาหนะคันเดียวจะบรรทุกweightKgน้ำหนักรวมได้ไม่เกิน 1,000 กก. ซึ่งจะ มีค่าใช้จ่าย 1 หน่วยต่อกิโลเมตรเมื่อweightKgน้ำหนักที่บรรทุกเกิน 500 กก.

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

การคำนวณต้นทุนการโหลดสำหรับตัวอย่างนี้มีดังนี้

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

ดังนั้นหากยานพาหนะบรรทุกweightKgน้ำหนัก 600 กก. เป็นระยะทาง 10 กิโลเมตร การคำนวณจะเป็นดังนี้

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

คุณสามารถใช้ต้นทุนการบรรทุกเพื่อสร้างโมเดลแนวคิดต่างๆ เช่น การใช้พลังงานของยานพาหนะที่เพิ่มขึ้นเมื่อขนส่งของหนัก หรือการสึกหรอของยานพาหนะที่เกิดจากการบรรทุกยานพาหนะมากเกินไป

คำขอตัวอย่างอีกรายการที่มีต้นทุนการโหลด

อีกตัวอย่างของต้นทุนการโหลดที่กำหนดต้นทุนต่อเวลาที่เดินทางทั้ง สูงกว่าและต่ำกว่าเกณฑ์

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

การคำนวณต้นทุนการโหลดสำหรับตัวอย่างนี้มีดังนี้

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

ดังนั้นหากยานพาหนะบรรทุกweightLbs 950 เป็นเวลา 5 ชั่วโมง การคำนวณจะเป็นดังนี้

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

ในตัวอย่างนี้ load_threshold สำหรับต้นทุนการโหลด weightLbs ใกล้เคียงกับ max_load cost_per_unit_above_threshold จะใช้ต้นทุนต่อชั่วโมงการเดินทางสูงเมื่อยานพาหนะบรรทุกของหนักเป็นพิเศษ เพื่อลงโทษเส้นทางที่อาจทำให้ยานพาหนะสึกหรอมากขึ้นหรือสิ้นเปลืองเชื้อเพลิงมากเกินไป cost_per_unit_below_threshold จะเพิ่มต้นทุนต่อน้ำหนัก 1 หน่วยที่ยานพาหนะบรรทุกจนถึงเกณฑ์ ซึ่งแสดงถึงการสิ้นเปลืองเชื้อเพลิงที่เพิ่มขึ้นเมื่อยานพาหนะบรรทุกน้ำหนักมากขึ้น

คำถามที่พบบ่อย

คำถามที่พบบ่อยเกี่ยวกับต้นทุนการโหลดมีดังนี้

คำถาม คำตอบ
ฉันจะระบุต้นทุนการโหลดได้ที่ใด ระบุต้นทุนการโหลดใน Vehicle.LoadLimit
ระบบจับคู่ต้นทุนการบรรทุกกับการจัดส่งอย่างไร ค่าใช้จ่ายในการบรรทุกจะมีผลกับการจัดส่งที่มีประเภทความต้องการในการบรรทุกตรงกับ ประเภทของขีดจำกัดการบรรทุกของยานพาหนะ เช่น น้ำหนักหรือปริมาตร ประเภทการโหลดเป็นสตริงที่กำหนดเองได้ตามที่อธิบายไว้ใน ความต้องการและขีดจำกัดในการโหลด
ค่าใช้จ่ายในการโหลดแสดงอย่างไร ค่าใช้จ่ายในการโหลดจะแสดงในรูปของระยะทางหรือ ระยะเวลาในการเปลี่ยน ใช้ cost_per_kilometer เพื่อระบุต้นทุนในแง่ของระยะทาง และ cost_per_traveled_hour เพื่อระบุต้นทุนในแง่ของระยะเวลา
ระบบจะเรียกเก็บค่าใช้จ่ายในการโหลดเมื่อใด เปรียบเทียบน้ำหนักบรรทุกของยานพาหนะกับload_thresholdของต้นทุน การบรรทุก หากระบุ cost_per_unit_above_threshold ระบบจะเพิ่มค่าใช้จ่าย ตามสัดส่วนของน้ำหนักบรรทุกของยานพาหนะที่สูงกว่า load_threshold โดยใช้สูตร max(0, load - load_threshold) หากระบุ cost_per_unit_below_threshold ระบบจะเพิ่มค่าใช้จ่าย ตามสัดส่วนของน้ำหนักบรรทุกของยานพาหนะด้านล่าง load_threshold โดยใช้สูตร min(load, load_threshold)
ค่าเริ่มต้นของพารามิเตอร์ต้นทุนการโหลดคืออะไร load_threshold, cost_per_unit_above_threshold และ cost_per_unit_below_threshold มีค่าเป็น 0 ทั้งหมดโดยค่าเริ่มต้น
ต้นทุนการโหลดแสดงในหน่วยใด ค่าใช้จ่ายในการโหลดจะแสดงในหน่วยที่ไม่มีมิติเดียวกับพารามิเตอร์ค่าใช้จ่ายอื่นๆ ทั้งหมด เช่น global_duration_cost_per_hour หรือ Shipment.penalty_cost
ฉันจะดูต้นทุนการโหลดในการตอบกลับได้ที่ไหน ค่าใช้จ่ายในการโหลดที่เกิดขึ้นจะปรากฏในพร็อพเพอร์ตี้ metrics และ route_metrics ของข้อความตอบกลับ เช่น ค่าใช้จ่ายที่เกิดขึ้น cost_per_kilometer จะ ปรากฏเป็น model.vehicles.load_limits.cost_per_kilometer

ดูคำอธิบายโดยละเอียดเกี่ยวกับต้นทุนการโหลดได้ในเอกสารอ้างอิง (REST, gRPC)

ตัวอย่าง: ส่งOptimizeToursคำขอ

นอกจากนี้ คุณยังส่งคำขอ OptimizeTours ได้โดยใช้ REST หรือ gRPC

ก่อนส่งคำขอ ให้แทนที่พารามิเตอร์ต่อไปนี้ด้วยค่าที่ เหมาะสมกับสภาพแวดล้อมของคุณ

  • ตรวจสอบว่าคุณได้กำหนดค่าข้อมูลรับรองเริ่มต้นของแอปพลิเคชันตามที่อธิบายไว้ ในใช้ OAuth
  • ตั้งค่า PROJECT_NUMBER_OR_ID เป็นหมายเลขหรือรหัสโปรเจ็กต์ Cloud

    คำสั่งต่อไปนี้จะส่งOptimizeToursคำขอไปยัง Route Optimization API และรับการตอบกลับแบบซิงโครนัส

    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

เมื่อคำขอเสร็จสมบูรณ์แล้ว คุณจะได้รับข้อความตอบกลับ