ค่าใช้จ่ายในการโหลด

ระบบจะกำหนดต้นทุนการบรรทุกในพร็อพเพอร์ตี้ `loadLimits` ของ `Vehicle` ภายใต้ `ShipmentModel`

ต้นทุนการบรรทุกระบุต้นทุนหรือค่าปรับที่ยานพาหนะต้องเสียตาม น้ำหนักบรรทุกระหว่างการรับและการนำส่งสินค้า คุณสามารถกำหนดค่าใช้จ่ายเหล่านี้ ตามระยะทางการเดินทางด้วย costPerKilometer, ระยะเวลาการเดินทางด้วย costPerTraveledHour หรือใช้ทั้ง 2 อย่างพร้อมกัน

กำหนดค่าต้นทุนการโหลดเพื่อรองรับวัตถุประสงค์ต่างๆ เช่น

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

พร็อพเพอร์ตี้

ระบุต้นทุนการโหลดภายในพร็อพเพอร์ตี้ loadLimits ของ Vehicle เช่นเดียวกับพารามิเตอร์ค่าใช้จ่ายอื่นๆ ทั้งหมด ค่าใช้จ่ายในการโหลดจะใช้หน่วยค่าใช้จ่ายสัมพัทธ์ที่ไม่มีมิติ

คุณกำหนดต้นทุนการโหลดได้โดยใช้พร็อพเพอร์ตี้ต่อไปนี้

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
costPerKilometer วัตถุ มีออบเจ็กต์ประเภท LoadCost เพื่อคำนวณค่าเดินทางตามกิโลเมตรที่เดินทาง
costPerTraveledHour วัตถุ มีออบเจ็กต์ประเภท LoadCost เพื่อคำนวณค่าเดินทางตามชั่วโมงที่เดินทาง โดยไม่รวมเวลาที่รอ เวลาที่เข้าชม และเวลาพัก

LoadCost

ประเภทข้อความ LoadCost จะกำหนดต้นทุนการเดินทางของการบรรทุกสินค้าที่เฉพาะเจาะจง ซึ่งช่วยให้คุณตั้งค่าเกณฑ์โหลด จากนั้นระบุอัตราค่าใช้จ่ายที่แตกต่างกัน ต่อหน่วยโหลดทั้งต่ำกว่าและสูงกว่าเกณฑ์นั้น

ออบเจ็กต์ LoadCost มีพารามิเตอร์การกำหนดค่าต่อไปนี้

พารามิเตอร์ ประเภท คำอธิบาย
loadThreshold สตริง (รูปแบบ int64) ระดับการโหลดที่อัตราการคำนวณต้นทุนเปลี่ยนแปลง ค่าเริ่มต้นคือ 0
costPerUnitAboveThreshold ตัวเลข ต้นทุนที่ใช้กับโหลดแต่ละหน่วยที่สูงกว่า loadThreshold ค่าเริ่มต้นคือ 0
costPerUnitBelowThreshold ตัวเลข ต้นทุนที่ใช้กับหน่วยของภาระงานแต่ละหน่วยที่ต่ำกว่าหรือเท่ากับ loadThreshold ค่าเริ่มต้นคือ 0

การจับคู่ต้นทุนการขนส่งกับสินค้า

ระบบจะใช้ต้นทุนการบรรทุกเมื่อน้ำหนักบรรทุกของยานพาหนะตรงกับloadDemands ประเภทของการจัดส่งในเส้นทาง ประเภทการโหลดคือสตริงที่กำหนดเอง เช่น น้ำหนักหรือปริมาตร ดูรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่าประเภทการโหลดได้ที่ประเภทการโหลด

ตัวอย่าง

ส่วนนี้จะครอบคลุมตัวอย่าง 3 ประเภท ได้แก่

ตัวอย่างโค้ด

ตัวอย่างต่อไปนี้แสดงวิธีจัดโครงสร้างต้นทุนการโหลดโดยใช้พารามิเตอร์การกำหนดค่าที่มีอยู่ทั้งหมด ตัวอย่างนี้ใช้ costPerKilometer แต่คุณสามารถ แทนที่ด้วย costPerTraveledHour เพื่อคำนวณต้นทุนตามระยะเวลาการเดินทาง แทนระยะทางได้

{
  "model": {
    "vehicles": [{
      "loadLimits": {
        "LOAD_TYPE": {
          "maxLoad": "MAX_LOAD",
          "costPerKilometer": {
            "loadThreshold": "LOAD_THRESHOLD",
            "costPerUnitAboveThreshold": COST_ABOVE,
            "costPerUnitBelowThreshold": COST_BELOW
          }
        }
      }
    }]
  }
}

สถานการณ์ตัวอย่าง

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

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

ผู้ปกครอง พร็อพเพอร์ตี้ ประเภท ค่า สถานการณ์
loadLimits ประเภทการใส่ผ้า สตริง weightKg กำหนดประเภทความจุที่จะติดตาม ตัวอย่างนี้ใช้ weightKg เพื่อแสดงน้ำหนักของสินค้าในหน่วยกิโลกรัม
loadLimits maxLoad สตริง 100 น้ำหนักบรรทุกสูงสุดที่ยานพาหนะรับได้
costPerKilometer loadThreshold สตริง 15 กำหนดเกณฑ์การโหลดพื้นฐาน น้ำหนักบรรทุกที่เกิน 15 กก. จะมีค่าปรับด้านต้นทุนเชื้อเพลิงตามน้ำหนักบรรทุก
costPerKilometer costPerUnitAboveThreshold ตัวเลข 1 ทำหน้าที่เป็นค่าสัมประสิทธิ์ค่าน้ำมันเชื้อเพลิง ทุกๆ กิโลเมตรที่เดินทาง สินค้าแต่ละกิโลกรัมที่เกินเกณฑ์ 15 กก. จะมีต้นทุน 1 หน่วย
loadDemands amount สตริง การจัดส่ง 1: 50
การจัดส่ง 2: 10
การจัดส่ง 3: 80
ระบุน้ำหนักสินค้าสำหรับการจัดส่งทั้ง 3 รายการ

ในสถานการณ์นี้ ค่าที่คุณกำหนดจะมีผลดังนี้

  • เครื่องมือเพิ่มประสิทธิภาพจะจัดเรียงเส้นทางเพื่อนำส่งพัสดุที่มีน้ำหนักมากที่สุดก่อน ตัวแก้จะกำหนดเวลาการนำส่งที่น้ำหนัก 80 กก. และ 50 กก. ในช่วงต้นของเส้นทางเพื่อลดระยะทางที่เดินทางขณะบรรทุกหนัก
  • เครื่องมือเพิ่มประสิทธิภาพจะจัดเรียงเส้นทางเพื่อลดระยะทางที่เดินทางพร้อมสินค้าที่มีน้ำหนักมาก หากต้องการดูว่าการตั้งค่าเหล่านี้ส่งผลต่อเส้นทางอย่างไร คุณสามารถ เพิ่ม costPerUnitAboveThreshold จาก 1 เป็น 5 การเพิ่มค่าปรับน้ำหนัก จะกระตุ้นให้เครื่องมือเพิ่มประสิทธิภาพทำงานหนักขึ้นเพื่อลด ระยะทางที่เดินทางพร้อมสินค้าที่มีน้ำหนักมาก ซึ่งอาจเปลี่ยนลำดับการนำส่ง หรือแบ่งการจัดส่งออกเป็นยานพาหนะหลายคัน

ตัวอย่างคำขอ

ตัวอย่างต่อไปนี้แสดงโครงสร้างของคำขอ optimizeTours พื้นฐานซึ่งรวมค่าใช้จ่ายในการโหลดจากสถานการณ์ตัวอย่าง

{
  "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
            }
          }
        }
      }
    ]
  }
}

สูตรการคำนวณ

เครื่องมือเพิ่มประสิทธิภาพจะคำนวณต้นทุนการโหลดโดยใช้สูตรต่อไปนี้

การคำนวณเกณฑ์ทั้งหมด

เมื่อระบุทั้ง costPerUnitAboveThreshold และ costPerUnitBelowThreshold คุณจะต้องเสียค่าเดินทางแยกต่างหากสำหรับน้ำหนักบรรทุก ทั้งที่สูงกว่าและต่ำกว่า loadThreshold สูตรคือ

cost = max(carried_load - load_threshold, 0) * distance_or_time * cost_per_unit_above_threshold
       + min(carried_load, load_threshold) * distance_or_time * cost_per_unit_below_threshold

ตัวอย่างเช่น การใช้ค่าจากตัวอย่างคำขอ ซึ่งค่าของ costPerUnitBelowThreshold คือ 2 หากยานพาหนะเดินทาง 10 กิโลเมตร โดยบรรทุกน้ำหนัก 50 การคำนวณจะเป็นดังนี้

max(50 - 15, 0) * 10 * 1 + min(50, 15) * 10 * 2 = 650 cost units

การคำนวณที่สูงกว่าเกณฑ์

เมื่อระบุเฉพาะ costPerUnitAboveThreshold การคำนวณจะเป็นกรณีพิเศษของสูตรเกณฑ์แบบเต็ม เนื่องจากต้นทุนที่ต่ำกว่าเกณฑ์ เป็น 0 ครึ่งหลังของสูตรเต็มจึงประเมินเป็น 0 สูตรคือ

cost = max(carried_load - load_threshold, 0) * distance_or_time * cost_per_unit_above_threshold

ตัวอย่างเช่น การใช้ค่าจากตัวอย่างคำขอที่ loadThreshold คือ 15 และ costPerUnitAboveThreshold คือ 1 หาก ยานพาหนะเดินทาง 10 กิโลเมตรโดยบรรทุกน้ำหนัก 50 การคำนวณจะเป็นดังนี้

max(50 - 15, 0) * 10 * 1 = 350 cost units

การคำนวณต่ำกว่าเกณฑ์

ในทำนองเดียวกัน หากคุณระบุเฉพาะ costPerUnitBelowThreshold การคำนวณจะเป็นกรณีพิเศษอีกกรณีหนึ่งของสูตรเกณฑ์แบบเต็ม ซึ่งต้นทุนที่สูงกว่าเกณฑ์จะเป็น 0 สูตรคือ

cost = min(carried_load, load_threshold) * distance_or_time * cost_per_unit_below_threshold