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

พร็อพเพอร์ตี้ 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 string (รูปแบบ int64) กำหนดข้อกำหนดด้านความจุของการจัดส่งในประเภทที่ระบุ
LoadLimit loadLimits maxLoad string (รูปแบบ 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 string (รูปแบบ int64) น้ำหนักบรรทุกสูงสุดที่แนะนำสำหรับยานพาหนะ หากน้ำหนักบรรทุกของยานพาหนะเกินค่านี้ จะมีค่าใช้จ่ายเกิดขึ้น
loadLimits costPerUnitAboveSoftMax ตัวเลข ค่าใช้จ่ายต่อหน่วยของน้ำหนักที่เกิน softMaxLoad ต้องระบุข้อมูลในช่องนี้เมื่อใช้ softMaxLoad ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าใช้จ่ายได้ที่แนวคิดหลักของรูปแบบต้นทุน

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

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

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