ความต้องการและขีดจำกัดในการโหลด

พร็อพเพอร์ตี้ loadDemands จะกำหนดไว้ใน ShipmentModel.shipments.Shipment และพร็อพเพอร์ตี้ loadLimits จะกำหนดไว้ใน ShipmentModel.vehicles.Vehicle

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

ดีมานด์และขีดจำกัดในการโหลดสามารถรองรับวัตถุประสงค์ต่างๆ เช่น

  • ป้องกันไม่ให้ยานพาหนะบรรทุกน้ำหนักเกิน
  • ตรวจสอบว่าน้ำหนักบรรทุกของยานพาหนะเปลี่ยนแปลงอย่างไรเมื่อมีการรับและนำส่งสินค้า
  • ให้ความสำคัญกับการจับคู่รถบรรทุกหนักกับสินค้าที่มีน้ำหนักมาก

ความต้องการและขีดจำกัดของโหลดจะระบุไว้ในพร็อพเพอร์ตี้ต่อไปนี้

  • loadDemands ระบุจำนวนความจุที่การจัดส่งหนึ่งๆ ต้องการ
  • loadLimits ระบุความจุสูงสุดสำหรับยานพาหนะที่กำหนด

โครงสร้าง

ดังที่แสดงในแผนภาพ ความต้องการและขีดจำกัดของโหลดมีโครงสร้างดังนี้

  • loadDemands เป็นพร็อพเพอร์ตี้ของ Shipment Shipment มีคำขอโหลดได้หลายรายการ
  • loadLimits เป็นพร็อพเพอร์ตี้ของ Vehicle Vehicle มีขีดจำกัดการโหลดได้หลายรายการ

รายการตรวจสอบ Essentials

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

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

ส่วนนี้จะอธิบายพร็อพเพอร์ตี้สำหรับความต้องการและขีดจำกัดของโหลด ซึ่งมีดังนี้

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

ประเภทการโหลด

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

ประเภทการโหลดใช้ไวยากรณ์ประเภทแผนที่ Protocol Buffers เมื่อตั้งชื่อประเภทโหลด ให้ใช้ตัวระบุที่อธิบายประเภทของโหลดและหน่วยของโหลด เช่น weightKg, volume_gallons, palletcount หรือ frequencyDaily

Load และ LoadLimit

ออบเจ็กต์ Load และ LoadLimit มีพร็อพเพอร์ตี้ที่เฉพาะเจาะจงเพื่อ กำหนดข้อกำหนดด้านความจุสำหรับการจัดส่งและยานพาหนะ ตารางต่อไปนี้ อธิบายพร็อพเพอร์ตี้เหล่านี้

วัตถุ ผู้ปกครอง พร็อพเพอร์ตี้ ประเภทที่พัก คำอธิบายพร็อพเพอร์ตี้
Load loadDemands amount สตริง (รูปแบบ int64) กำหนดข้อกำหนดด้านความจุของการจัดส่งในประเภทที่ระบุ
LoadLimit loadLimits maxLoad สตริง (รูปแบบ int64) กำหนดความสามารถในการรับน้ำหนักสูงสุดของยานพาหนะในประเภทที่ระบุ

ตัวอย่าง

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

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

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

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

ตัวอย่างต่อไปนี้แสดงโครงสร้างพื้นฐานที่สุดของขีดจำกัดการโหลด ซึ่งคุณ สามารถตั้งค่าประเภท loadLimits เป็นสตริง และพร็อพเพอร์ตี้ maxLoad เป็นสตริงในรูปแบบ int64 ได้

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

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

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

การจัดส่งแต่ละครั้งหมายถึงจุดแวะพัก 1 แห่งที่คุณจะรับสุนัขจำนวนหนึ่ง ใน ตัวอย่างนี้ การจัดส่งแต่ละครั้งมีสถานที่รับสินค้าแตกต่างกัน ซึ่งก็คือบ้าน ของสุนัขที่คุณดูแล และการจัดส่งทั้งหมดมีสถานที่นำส่งเดียวกัน ซึ่งก็คืออาคารของศูนย์รับฝากสุนัข

สำหรับตัวอย่างนี้ ค่าพร็อพเพอร์ตี้ในคำขอของคุณคือค่าต่อไปนี้

ผู้ปกครอง พร็อพเพอร์ตี้ ประเภท ค่า สถานการณ์
loadDemands ประเภทการโหลด สตริง dogUnit กำหนดประเภทการโหลดสำหรับการจัดส่ง ตัวอย่างนี้ใช้ dogUnit โดย dogUnit แต่ละรายการแสดงสุนัข 1 ตัว
loadDemands amount ตัวเลข การจัดส่งครั้งที่ 1: 1
การจัดส่งครั้งที่ 2: 3
ระบุจำนวนประเภทการโหลดที่กำหนด ในตัวอย่างนี้ คุณกำลังกำหนดการจัดส่ง 2 รายการ โดยรายการแรกเป็นการรับสุนัข 1 ตัว และรายการที่ 2 เป็นการรับสุนัข 3 ตัว
loadLimits ประเภทการโหลด สตริง dogUnit กำหนดประเภทขีดจำกัดน้ำหนักบรรทุกที่ใช้กับยานพาหนะ ต้องตรงกันกับประเภทการโหลดของการจัดส่งเพื่อให้ขีดจำกัดมีความเกี่ยวข้อง
loadLimits maxLoad ตัวเลข 6 ระบุปริมาณสูงสุดของประเภทสัมภาระที่ยานพาหนะบรรทุกได้ ในตัวอย่างนี้ คุณมีรถเพียงคันเดียวที่มีความจุสูงสุด 6 dogUnit โดย dogUnit แต่ละรายการหมายถึงกรงสุนัข 1 กรง

แผนภาพต่อไปนี้แสดงขีดจำกัดการรับน้ำหนักของยานพาหนะ ความต้องการในการรับน้ำหนักของการจัดส่งแต่ละครั้ง และวิธีที่การจัดส่งแต่ละครั้งใช้ขีดจำกัดการรับน้ำหนักของยานพาหนะ

ยานพาหนะจะเริ่มเส้นทางโดยมีช่องว่าง 6 ช่องซึ่งแสดงถึงขีดจำกัดการบรรทุกของยานพาหนะ การจัดส่งครั้งแรกต้องมีพื้นที่สำหรับสุนัข 1 ตัว ส่วนการจัดส่งครั้งที่ 2 ต้องมีพื้นที่สำหรับสุนัข 3 ตัว สถานะสุดท้ายของยานพาหนะคือมีพื้นที่ 4 จาก 6 พื้นที่ถูกใช้งานแล้ว และเหลือพื้นที่ว่างอีก 2 พื้นที่

ในตัวอย่างนี้ ความต้องการในการโหลดของการจัดส่งแต่ละครั้งและขีดจำกัดการโหลดของ ยานพาหนะมีผลดังนี้

  • เครื่องมือเพิ่มประสิทธิภาพจะไม่มีปัญหาในการสร้างเส้นทางให้ยานพาหนะขนส่งสุนัข เนื่องจากยานพาหนะสามารถบรรทุกสุนัขได้สูงสุด 6 ตัว และคุณรับสุนัขเพียง 4 ตัว

  • การมีdogUnitขีดจำกัดการบรรทุก 6 ตัวในรถยนต์ยังหมายความว่าคุณ จะบรรทุกสุนัขเพิ่มได้อีกเพียง 2 ตัวในรถยนต์คันนี้เท่านั้น

  • หากจำนวนสุนัขมากกว่าขีดจำกัดการรับส่ง ตัวเพิ่มประสิทธิภาพจะข้ามการรับส่งครั้งใดครั้งหนึ่งหรือมอบหมายให้ยานพาหนะที่เหมาะสม

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

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

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

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "One bernese mountain dog",
        "loadDemands": {
          "dogUnit": {
            "amount": "1"
          }
        }
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "Three chihuahuas",
        "loadDemands": {
          "dogUnit": {
            "amount": "3"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "loadLimits": {
          "dogUnit": {
            "maxLoad": "6"
          }
        },
        "costPerKilometer": 1.0
      }
    ]
  }
}

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

ขีดจำกัดการโหลดแบบไม่เข้มงวด

คุณกำหนดขีดจำกัดน้ำหนักบรรทุกเป็นข้อจำกัดแบบยืดหยุ่นได้โดยการเพิ่ม softMaxLoad และ costPerUnitAboveSoftMax ในloadLimits ของยานพาหนะ ซึ่งจะช่วยให้ เครื่องมือเพิ่มประสิทธิภาพบรรทุกเกินน้ำหนักบรรทุกสูงสุดของยานพาหนะได้โดยมีค่าใช้จ่าย โดยให้ความสำคัญกับการ เดินทางถึงจุดหมายปลายทางมากกว่าการปฏิบัติตามขีดจำกัดน้ำหนักบรรทุกอย่างเคร่งครัด

คุณใช้ maxLoad และ softMaxLoad ร่วมกันเพื่อตั้งค่าทั้งขีดจำกัดการโหลดแบบเข้มงวดและแบบยืดหยุ่นได้ ในกรณีนี้ softMaxLoad จะกำหนดภาระงานที่เกินได้ และ maxLoad จะกำหนดขีดจำกัดที่เกินไม่ได้ เมื่อใช้ทั้ง 2 อย่าง maxLoad ต้องมากกว่า softMaxLoad

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

ตารางต่อไปนี้อธิบายพร็อพเพอร์ตี้ของข้อจำกัดแบบยืดหยุ่นสำหรับดีมานด์และขีดจำกัดของโหลด

ผู้ปกครอง ชื่อพร็อพเพอร์ตี้ ประเภทที่พัก คำอธิบายพร็อพเพอร์ตี้
loadLimits softMaxLoad สตริง (รูปแบบ int64) น้ำหนักบรรทุกสูงสุดที่แนะนำสำหรับยานพาหนะ หากน้ำหนักบรรทุกของยานพาหนะเกินค่านี้ ระบบจะเรียกเก็บค่าใช้จ่าย
loadLimits costPerUnitAboveSoftMax ตัวเลข ต้นทุนต่อหน่วยของน้ำหนักที่เกิน softMaxLoad ต้องระบุข้อมูลในช่องนี้เมื่อใช้ softMaxLoad ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าใช้จ่ายได้ที่แนวคิดหลักของรูปแบบต้นทุน

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

ตัวอย่างต่อไปนี้แสดงโครงสร้างของพร็อพเพอร์ตี้ข้อจำกัดแบบผ่อนปรนของ loadLimits

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}