ส่งคำขอการเพิ่มประสิทธิภาพเส้นทางครั้งแรก... ด้วยสุนัข

นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

เอกสารนี้แสดงวิธีส่งคำขอแรกไปยัง Route Optimization API โดยใช้สถานการณ์ Use Case ในชีวิตจริง

ตัวอย่างนี้ใช้ HTTP และ JSON เพื่อสาธิต REST API เพื่อให้เข้าใจง่าย อย่างไรก็ตาม สำหรับสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ คำแนะนำโดยรวมคือให้ใช้ gRPC เพื่อประโยชน์ด้านประสิทธิภาพ แต่ gRPC ต้องมีการติดตั้งบางอย่าง ดูข้อมูลเพิ่มเติมได้ที่ไลบรารีของไคลเอ็นต์ Route Optimization API

สถานการณ์

แผนที่ซานฟรานซิสโกที่มีหมุดสำหรับหอคอยโคอิต, สวนสาธารณะมิชชันโดโลเรส และสวนสาธารณะเซาท์ซันเซ็ตเพลย์กราวด์

คุณเปิดบริการรับฝากสุนัขตั้งแต่เวลา 07:00 น. ถึง 19:00 น. ในกรุงเทพฯ เช้าวันนี้ คุณต้องการรับสุนัข 3 ตัวจากสถานที่ต่างๆ ในเมืองและนำไปที่ศูนย์รับเลี้ยงสุนัขของคุณ

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

คุณมีรถตู้ 1 คันสำหรับงานนี้ และคุณจ่ายเงินให้คนขับ $27 ต่อชั่วโมง คนขับและรถตู้จะเริ่มงานที่ศูนย์รับเลี้ยงเด็กตอน 7:00 น. และต้องกลับจากการรับเด็กๆ ในช่วงเช้าภายในเวลา 12:00 น. เพื่อพักรับประทานอาหารกลางวัน

วันนี้คือวันที่ 13 กุมภาพันธ์ 2024 เวลาทั้งหมดในสถานการณ์นี้เป็นเวลาท้องถิ่นของซานฟรานซิสโก ซึ่งเป็นเวลามาตรฐานแปซิฟิก (UTC-8) ในเดือนกุมภาพันธ์ คนขับมีหน้าที่ดังต่อไปนี้

  • รับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกใกล้กับหอคอยคอยต์ เจ้าของขอให้มารับพัสดุในช่วงเวลาสั้นๆ ระหว่าง 8:00 น. ถึง 8:20 น.
  • ไปรับชิวาวาที่ South Sunset Playground Park เจ้าของร้านจึงเสนอช่วงเวลารับสินค้าที่ยืดหยุ่นมากขึ้นระหว่าง 7:30 น. ถึง 9:30 น.
  • ไปรับสุนัขพันธุ์เยอรมันเชพเพิร์ดที่ Land's End เจ้าของยังขอให้มารับพัสดุในช่วงเวลาสั้นๆ ระหว่าง 8:00 น. ถึง 8:20 น. ด้วย
  • พาสุนัขไปส่งที่ศูนย์รับเลี้ยงสุนัขที่ Mission Dolores Park สถานรับเลี้ยงเด็กกำหนดให้ส่งเด็กระหว่างเวลา 9:30 น. ถึง 11:30 น.

การรับและส่งแต่ละครั้งจะใช้เวลา 5 นาทีในการรับหรือส่งสุนัข

เนื่องจาก Land's End อยู่ไกลจาก Coit Tower และช่วงเวลารับพัสดุขัดแย้งกัน คนขับจึงไม่สามารถรับพัสดุทั้ง 3 รายการได้ เครื่องมือเพิ่มประสิทธิภาพต้องเลือกสุนัขที่จะข้ามเพื่อลดต้นทุนรวม (ค่าจ้างคนขับและค่าปรับสำหรับการข้าม)

ก่อนเริ่มต้น

หากต้องการเรียกใช้โค้ดในสถานการณ์ตัวอย่างนี้ คุณต้องทำตามวิธีการในหัวข้อตั้งค่า Route Optimization API ให้เสร็จก่อน

1. เลือกแนวทางการเพิ่มประสิทธิภาพเส้นทาง

Route Optimization API มีหลายวิธีให้คุณเลือกใช้ โดยขึ้นอยู่กับความซับซ้อนของปัญหาการเพิ่มประสิทธิภาพ

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

ใช้ URL ต่อไปนี้เพื่อส่งคำขอ POST HTTP ไปยังเมธอด optimizeTours

https://routeoptimization.googleapis.com/v1/projects/PROJECT_OR_ID:optimizeTours

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

  • ตั้งค่าพารามิเตอร์ timeout เป็น 2 วินาที
  • ปล่อยการตั้งค่ากำหนดเวลาไว้ที่ค่าเริ่มต้น ซึ่งก็คือ 60 วินาทีสำหรับคำขอ REST

2. สร้างเนื้อหาข้อความคำขอ

หลังจากเลือกวิธี optimizeTours การบล็อกและกำหนดการตั้งค่าระยะหมดเวลาและกำหนดเวลาแล้ว ขั้นตอนถัดไปคือการสร้างเนื้อหาของข้อความคำขอ

สำหรับสถานการณ์นี้ คำขอจะเป็นข้อความ OptimizeToursRequest ที่เข้ารหัสเป็น JSON ใน REST API

หากต้องการสร้างข้อความคำขอ ให้ทำตามขั้นตอนต่อไปนี้

  1. เริ่มต้นด้วยโครงสร้างคำขอพื้นฐาน ซึ่งมีลักษณะดังนี้

    {
      "timeout": ...,
      "model": {
        "shipments": [...],
        "vehicles": [...],
        "globalStartTime": "...",
        "globalEndTime": "..."
      }
    }
    

    ดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างได้ในคู่มือแนวคิดหลักสำหรับโครงสร้างพื้นฐาน (ShipmentModel, Shipment และ Vehicle)

  2. กำหนดการจัดส่ง ในช่อง shipments ให้เพิ่มข้อความ Shipment สำหรับสุนัขแต่ละตัวที่ต้องรับและส่งในตอนเช้า ซึ่งคุณจะกำหนดสถานที่และเวลารับสุนัขที่เจ้าของสุนัขแต่ละรายต้องการ รวมถึงสถานที่และเวลาที่ศูนย์รับเลี้ยงสุนัขจะรับสุนัขได้

    1. สำหรับสุนัขแต่ละตัว ให้สร้าง VisitRequest สำหรับการรับและอีกรายการสำหรับการนำส่ง ซึ่งในสถานการณ์นี้จะเรียกว่าการนำส่งที่ศูนย์รับเลี้ยง

      • ในส่วนการรับ ให้ตั้งค่า arrivalWaypoint เป็นสถานที่รับสุนัข (Coit Tower สำหรับสุนัขพันธุ์เบอร์นีสเมาน์เทนด็อก, South Sunset Playground Park สำหรับสุนัขพันธุ์ชิวาวา หรือ Land's End สำหรับสุนัขพันธุ์เยอรมันเชพเพิร์ด) ตั้งค่า timeWindows เป็นเวลารับที่เจ้าของขอ (8:00 น. ถึง 8:20 น. สำหรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกและเยอรมันเชพเพิร์ด และ 7:30 น. ถึง 9:30 น. สำหรับสุนัขพันธุ์ชิวาวา)

      • ในการนำส่ง ให้ตั้งค่า arrivalWaypoint เป็นศูนย์รับเลี้ยงเด็ก และตั้งค่า timeWindows เป็นเวลาที่ต้องนำส่ง (09:30 น. ถึง 11:30 น.)

      • สำหรับการรับและส่งสุนัขทั้งหมด ให้ตั้งค่า duration เป็น 5 นาที (300s) เพื่อเผื่อเวลาในการรับและส่งสุนัข

      ดูข้อมูลเพิ่มเติมเกี่ยวกับกรอบเวลาได้ที่กรอบเวลา

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

    3. คุณใช้ช่อง label เพื่อเพิ่มตัวระบุสำหรับการจัดส่งแต่ละรายการได้ เช่น "เบอร์นีส เมาน์เทนด็อก" "ชิวาวา" และ "เยอรมันเชเพิร์ด" ซึ่งจะช่วยให้คุณระบุการจัดส่งในการตอบกลับได้

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดการจัดส่งได้ที่การจัดส่ง

  3. กำหนดรถยนต์ ในช่อง vehicles ให้เพิ่มข้อความ Vehicle สำหรับรถตู้ 1 คันโดยมีศูนย์รับเลี้ยงเด็กเป็นจุดเริ่มต้นและจุดสิ้นสุด ค่าจ้างคนขับ และเวลาทำการของรถตู้

    1. ตั้งค่า startWaypoint และ endWaypoint สำหรับรถตู้เป็นสถานที่เริ่มต้นและสิ้นสุดของวัน ซึ่งก็คือศูนย์รับเลี้ยงเด็กใกล้กับ Mission Dolores Park

    2. หากต้องการลดต้นทุนในการดำเนินการ คุณต้องกำหนดข้อจำกัดด้านต้นทุนของธุรกิจ ตั้งค่าพารามิเตอร์ต้นทุน costPerHour เป็น 27 ซึ่งเป็นจำนวนเงินที่คุณจ่ายให้คนขับรถตู้รับส่งสุนัข ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ต้นทุนได้ที่รูปแบบต้นทุน

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

      • การตั้งค่า startTime ใน startTimeWindows เป็น 07:00 น. หมายความว่าคนขับสามารถเริ่มกะได้ตั้งแต่ 07:00 น. และยังเริ่มกะหลังจากนั้นได้ด้วยหากไม่มีการรับผู้โดยสารในช่วงเช้าตรู่

      • การตั้งค่า endTime ใน endTimeWindows เป็นเที่ยงวันหมายความว่าคนขับต้องสิ้นสุดกะภายในเที่ยงวัน และยังเลิกงานได้ทันที ที่ส่งพัสดุชิ้นสุดท้ายเสร็จ

      การละเว้นหน้าต่างอีกครึ่งหนึ่งจะช่วยลดเวลารอและเวลาอ้อมของคนขับ ดูข้อมูลเพิ่มเติมเกี่ยวกับกรอบเวลาได้ที่กรอบเวลา

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดพาหนะได้ที่พาหนะ

  4. ตั้งค่ากรอบเวลาทั่วโลก กรอบเวลาส่วนกลางแสดงกรอบเวลาที่รถตู้สามารถรับและส่งเด็กๆ ที่สถานรับเลี้ยงเด็กได้ตลอดทั้งวัน สำหรับสถานการณ์นี้ ให้ตั้งค่า globalStartTime เป็น 07:00 น. และ globalEndTime เป็น 19:00 น. ของวันที่ 13 กุมภาพันธ์ 2024 ซึ่งแสดงถึงเวลาทำการของศูนย์รับฝากสุนัข

3. ส่งคำขอ

ต่อไปนี้เป็นคำขอ curl แบบง่ายที่อิงตามสถานการณ์จำลองของศูนย์รับฝากสุนัขและใช้เมธอด optimizeTours ที่บล็อก

ก่อนส่งคำขอ ให้แทนที่ PROJECT_NUMBER_OR_ID ในโค้ดตัวอย่างด้วยรหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google

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
{
  "timeout": "2s",
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.802395,
                  "longitude": -122.405822
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T08:00:00-08:00",
                "endTime": "2024-02-13T08:20:00-08:00"
              }
            ],
            "duration": "300s"
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.759719,
                  "longitude": -122.42798
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00-08:00",
                "endTime": "2024-02-13T11:30:00-08:00"
              }
            ],
            "duration": "300s"
          }
        ],
        "label": "Bernese mountain dog",
        "penaltyCost": 1000
      },
      {
        "pickups": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.738067,
                  "longitude": -122.498593
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T07:30:00-08:00",
                "endTime": "2024-02-13T09:30:00-08:00"
              }
            ],
            "duration": "300s"
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.759719,
                  "longitude": -122.42798
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00-08:00",
                "endTime": "2024-02-13T11:30:00-08:00"
              }
            ],
            "duration": "300s"
          }
        ],
        "label": "Chihuahua",
        "penaltyCost": 1000
      },
      {
        "pickups": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.78018,
                  "longitude": -122.51194
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T08:00:00-08:00",
                "endTime": "2024-02-13T08:20:00-08:00"
              }
            ],
            "duration": "300s"
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.759719,
                  "longitude": -122.42798
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00-08:00",
                "endTime": "2024-02-13T11:30:00-08:00"
              }
            ],
            "duration": "300s"
          }
        ],
        "label": "German shepherd",
        "penaltyCost": 100
      }
    ],
    "vehicles": [
      {
        "startWaypoint": {
          "location": {
            "latLng": {
              "latitude": 37.759719,
              "longitude": -122.42798
            }
          }
        },
        "endWaypoint": {
          "location": {
            "latLng": {
              "latitude": 37.759719,
              "longitude": -122.42798
            }
          }
        },
        "costPerHour": 27,
        "startTimeWindows": [
          {
            "startTime": "2024-02-13T07:00:00-08:00"
          }
        ],
        "endTimeWindows": [
          {
            "endTime": "2024-02-13T12:00:00-08:00"
          }
        ]
      }
    ],
    "globalStartTime": "2024-02-13T07:00:00-08:00",
    "globalEndTime": "2024-02-13T19:00:00-08:00"
  }
}
EOM

พารามิเตอร์คำขอที่ใช้ในคำขอ

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

ผู้ปกครอง พารามิเตอร์ ประเภทพร็อพเพอร์ตี้ คำอธิบาย
OptimizeToursRequest model ออบเจ็กต์ (ShipmentModel) ซึ่งเป็นหัวใจสำคัญของคำขอ ซึ่งเป็นออบเจ็กต์เดียวที่คุณกำหนดปัญหาทั้งหมด รวมถึงสุนัขทั้งหมดที่คุณต้องรับและส่ง (shipments) และรถตู้ในฝูงยานพาหนะ (vehicles) ลองนึกภาพว่าเป็นพิมพ์เขียวที่สมบูรณ์สำหรับปัญหาที่คุณต้องเพิ่มประสิทธิภาพ
timeout ระยะเวลา พารามิเตอร์นี้ระบุระยะเวลาสูงสุดที่เซิร์ฟเวอร์จะทำงานตามคำขอก่อนที่จะแสดงผลการตอบกลับ ใช้พารามิเตอร์นี้เพื่อลดเวลารอ สำหรับคำขอขนาดเล็กและรวดเร็ว เช่น สถานการณ์การรับฝากสุนัขนี้ ให้ตั้งค่านี้เป็น 2 วินาที
ShipmentModel shipments[] อาร์เรย์ของออบเจ็กต์ (Shipment) นี่คืออาร์เรย์ของออบเจ็กต์ที่แต่ละออบเจ็กต์แสดงถึงสุนัขที่ต้องรับหรือส่ง
vehicles[] อาร์เรย์ของออบเจ็กต์ (Vehicle) นี่คืออาร์เรย์ของออบเจ็กต์ที่ออบเจ็กต์แต่ละรายการกำหนดรถในกองยานพาหนะของคุณ ซึ่งเป็นที่ที่คุณอธิบายทรัพยากร เช่น รถตู้ที่รับและส่ง คุณต้องระบุยานพาหนะอย่างน้อย 1 คันเพื่อรับเส้นทางที่เพิ่มประสิทธิภาพ
globalStartTime การประทับเวลา ซึ่งเป็นเวลาที่เร็วที่สุดที่เหตุการณ์ใดๆ ในโมเดลทั้งหมดจะเกิดขึ้นได้ พารามิเตอร์นี้จะจำกัดปัญหาการเพิ่มประสิทธิภาพให้แคบลงตามเวลา ซึ่งสำคัญต่อการคำนวณการจราจรและเส้นทางที่แม่นยำ สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ให้ตั้งค่าเป็นเวลาที่เร็วที่สุดที่คนขับสามารถขับรถตู้ได้ในวันนั้น ซึ่งก็คือ 7:00 น. ของวันที่ 13 กุมภาพันธ์ 2024
globalEndTime การประทับเวลา นี่คือเวลาล่าสุดที่เป็นไปได้สำหรับเหตุการณ์ใดๆ ในโมเดลทั้งหมดของคุณที่จะเกิดขึ้น สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ให้ตั้งค่าเป็นเวลาที่คาดว่ารถตู้จะสิ้นสุดการทำงาน ซึ่งก็คือ 19:00 น. ของวันที่ 13 กุมภาพันธ์ 2024
Shipment pickups[] อาร์เรย์ของออบเจ็กต์ (VisitRequest) นี่คือรายการตัวเลือกการรับสินค้าที่เป็นไปได้ทั้งหมดสำหรับการจัดส่ง เครื่องมือเพิ่มประสิทธิภาพจะเลือกวิธีที่ดีที่สุดในการแก้ปัญหา สำหรับสถานการณ์การรับเลี้ยงสุนัขนี้ ให้ระบุสถานที่รับและกรอบเวลาที่เจ้าของแต่ละรายระบุไว้สำหรับสุนัขแต่ละตัว
deliveries[] อาร์เรย์ของออบเจ็กต์ (VisitRequest) นี่คือรายการตัวเลือกการนำส่งที่เป็นไปได้ทั้งหมดสำหรับการจัดส่ง เครื่องมือเพิ่มประสิทธิภาพจะเลือกวิธีที่ดีที่สุดในการแก้ปัญหา สำหรับสถานการณ์การรับเลี้ยงสุนัขนี้ ให้ระบุสถานที่ตั้งของสถานรับเลี้ยงสุนัขและกรอบเวลาที่คนขับต้องกลับมารับประทานอาหารกลางวันสำหรับสุนัขแต่ละตัว
label สตริง นี่คือตัวระบุสำหรับการจัดส่งที่เฉพาะเจาะจงในคำขอของคุณ คุณสามารถระบุป้ายกำกับในคำขอเพื่อให้การอ่านการตอบกลับง่ายขึ้น สำหรับสถานการณ์การรับเลี้ยงสุนัขนี้ ให้ใช้สตริงที่สื่อความหมาย เช่น "ชิวาวา" "เบอร์นีส เมาน์เทนด็อก" หรือชื่อสุนัข เพื่อจับคู่โซลูชันกับอินพุตเมื่อได้รับการตอบกลับจาก API
penaltyCost double นี่คือค่าปรับที่เกิดขึ้นหากเครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่งนี้ โดยค่าเริ่มต้น การจัดส่งเป็นสิ่งจำเป็น เครื่องมือเพิ่มประสิทธิภาพจะให้ความสำคัญกับการลดการจัดส่งที่จำเป็นที่ข้ามไป และจะข้ามการจัดส่งก็ต่อเมื่อไม่มีตัวเลือกอื่น การตั้งค่าต้นทุนค่าปรับช่วยให้เครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่งได้หากไม่สามารถดำเนินการได้หรือมีค่าใช้จ่ายสูงเกินไป และช่วยให้คุณชั่งน้ำหนักลำดับความสำคัญระหว่างการจัดส่งได้ ในสถานการณ์นี้ คุณตั้งค่าต้นทุนค่าปรับที่สูงขึ้น (1000) สำหรับลูกค้าประจำ (สุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกและชิวาวา) และต้นทุนค่าปรับที่ต่ำลง (100) สำหรับคำขอสุนัขพันธุ์เยอรมันเชพเพิร์ดในนาทีสุดท้าย ซึ่งจะบอกให้เครื่องมือเพิ่มประสิทธิภาพจัดลำดับความสำคัญของลูกค้าประจำ ดังนั้นเครื่องมือจะพิจารณาข้ามสุนัขพันธุ์เยอรมันเชพเพิร์ดก่อนเมื่อไม่สามารถรับสุนัขทั้งหมดได้
VisitRequest arrivalWaypoint ออบเจ็กต์ (Waypoint) นี่คือตำแหน่งของการเข้าชมที่เฉพาะเจาะจงในเส้นทาง คุณสามารถกำหนดค่านี้โดยใช้พิกัดละติจูดและลองจิจูด รหัสสถานที่ หรือส่วนหัว ในสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ให้ตั้งค่าเป็นสถานที่ตั้งที่เจ้าของระบุสำหรับ pickups และเป็นที่อยู่ของศูนย์รับเลี้ยงสำหรับ deliveries
timeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คืออาร์เรย์ของออบเจ็กต์ที่กำหนดข้อจำกัดด้านเวลาสำหรับการรับสินค้าหรือการนำส่ง สำหรับสถานการณ์นี้ ให้ใช้ตัวแปรนี้เพื่อกำหนดกรอบเวลารับสุนัขแต่ละตัวและกรอบเวลาที่ยอมรับได้สำหรับการส่งสุนัขที่ศูนย์รับเลี้ยง
duration ระยะเวลา พารามิเตอร์นี้ระบุระยะเวลาของการเข้าชม (เช่น เวลาในการโหลดหรือนำออก) ในสถานการณ์นี้ คุณตั้งค่าบัฟเฟอร์ 5 นาที (300s) สำหรับการรับและส่งทั้งหมดเพื่อพิจารณาคนขับที่รับและส่งสุนัข
Vehicle startWaypoint ออบเจ็กต์ (Waypoint) นี่คือสถานที่เริ่มต้นของเส้นทางของยานพาหนะ ซึ่งกำหนดด้วยพิกัดละติจูดและลองจิจูดหรือรหัสสถานที่ พารามิเตอร์นี้จะบอกเครื่องมือเพิ่มประสิทธิภาพว่ายานพาหนะต้องเริ่มเส้นทางที่ใด หากคุณไม่ได้กำหนดจุดอ้างอิงนี้ เครื่องมือเพิ่มประสิทธิภาพจะเลือกจุดรับหรือจุดนำส่งจุดใดจุดหนึ่งเป็นสถานที่เริ่มต้น สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เนื่องจากคนขับเริ่มต้นวันใหม่ที่ศูนย์รับเลี้ยงสุนัข ให้ใช้พิกัดของ Mission Dolores Park
endWaypoint ออบเจ็กต์ (Waypoint) นี่คือจุดหมายสุดท้ายของเส้นทางของยานพาหนะ ซึ่งกำหนดด้วยพิกัดละติจูดและลองจิจูดหรือรหัสสถานที่ พารามิเตอร์นี้จะบอกเครื่องมือเพิ่มประสิทธิภาพว่ายานพาหนะต้องสิ้นสุดเส้นทางที่ใด หากคุณไม่ได้กำหนดจุดอ้างอิงนี้ เครื่องมือเพิ่มประสิทธิภาพจะเลือกจุดรับหรือจุดนำส่งจุดใดจุดหนึ่งเป็นจุดสิ้นสุดของเส้นทาง สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เนื่องจากคนขับต้องสิ้นสุดวันทำงานที่ศูนย์รับเลี้ยงสุนัข ให้ใช้พิกัดของ Mission Dolores Park
costPerHour ตัวเลข นี่คือค่าใช้จ่ายที่เกิดขึ้นในแต่ละชั่วโมงที่ใช้ยานพาหนะ ไม่ว่าจะกำลังเดินทางหรือหยุดอยู่ก็ตาม สำหรับสถานการณ์จำลองของศูนย์รับเลี้ยงสุนัขนี้ ให้ใช้ตัวแปรนี้เพื่อจำลองค่าจ้างรายชั่วโมงของคนขับรถ
startTimeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คือกรอบเวลาที่ยอมรับได้สำหรับเวลาที่คนขับสามารถเริ่มกะได้ สำหรับสถานการณ์ศูนย์รับฝากสุนัขนี้ ให้กำหนด startTime เป็น 07:00 น. แต่ไม่ต้องระบุ endTime ซึ่งจะช่วยให้เครื่องมือเพิ่มประสิทธิภาพเลื่อนเวลาเริ่มต้นของกะออกไปได้หากการรับพัสดุครั้งแรกเกิดขึ้นในช่วงสาย โปรดทราบว่าแม้คุณจะไม่ได้ระบุ endTime สำหรับ startTimeWindows แต่เวลาเริ่มต้นจะถูกจำกัดโดยนัยด้วย endTimeWindows ยานพาหนะต้องเริ่มเส้นทางก่อนที่เส้นทางจะสิ้นสุด
endTimeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คือกรอบเวลาที่ยอมรับได้สำหรับคนขับในการเดินทางให้เสร็จสิ้น สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ ให้กำหนด endTime เป็นเที่ยงวัน แต่ไม่ต้องระบุ startTime ซึ่งจะช่วยให้คนขับกลับไปที่ศูนย์รับเลี้ยงเด็กได้ทันทีหลังจากส่งเด็กคนสุดท้ายแล้ว

ถัดไป

ตีความคำตอบ