ส่งคำขอเพิ่มประสิทธิภาพเส้นทางแรก

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

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

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

สถานการณ์

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

คุณให้บริการรับฝากเลี้ยงสุนัขตั้งแต่เวลา 7:00 น. ถึง 19:00 น. ในซานฟรานซิสโก เช้านี้คุณต้องไปรับสุนัข 2 ตัวจากสถานที่ต่างๆ ในเมือง เจ้าของสุนัขทั้ง 2 รายให้ช่วงเวลารับสุนัขระหว่างเวลา 7:30 น. ถึง 9:30 น.

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

วันนี้คือวันที่ 13 กุมภาพันธ์ 2024 และคนขับมีงานที่ต้องทำดังนี้

  • ไปรับสุนัขภูเขาเบอร์นีสที่อยู่ใกล้กับ Coit Tower
  • ไปรับสุนัขพันธุ์ชิวาวาที่ South Sunset Playground Park
  • ไปส่งสุนัขทั้ง 2 ตัวที่ศูนย์รับฝากเลี้ยงสุนัขที่ Mission Dolores Park

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

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

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

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

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

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

ใช้ URL ต่อไปนี้เพื่อส่งคำขอ HTTP POST ไปยัง 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 สำหรับสุนัขพันธุ์ชิวาวา) และตั้งค่า timeWindows เป็นเวลาที่เจ้าของต้องการให้ไปรับ (7:30 น. ถึง 9:30 น.)

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

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

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

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

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

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

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

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

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

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

3. ส่งคำขอ

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

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

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-13T07:30:00Z",
                "endTime": "2024-02-13T09:30:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.760202,
                  "longitude": -122.426796
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00Z",
                "endTime": "2024-02-13T11:30:00Z"
              }
            ]
          }
        ],
        "label": "Bernese mountain dog"
      },
      {
        "pickups": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.738067,
                  "longitude": -122.498593
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T07:30:00Z",
                "endTime": "2024-02-13T09:30:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.760202,
                  "longitude": -122.426796
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00Z",
                "endTime": "2024-02-13T11:30:00Z"
              }
            ]
          }
        ],
        "label": "Chihuahua"
      }
    ],
    "vehicles": [
      {
        "startWaypoint": {
          "location": {
            "latLng": {
              "latitude": 37.760202,
              "longitude": -122.426796
            }
          }
        },
        "endWaypoint": {
          "location": {
            "latLng": {
              "latitude": 37.760202,
              "longitude": -122.426796
            }
          }
        },
        "costPerHour": 27,
        "startTimeWindows": [
          {
            "startTime": "2024-02-13T07:00:00Z",
            "endTime": "2024-02-13T07:15:00Z"
          }
        ],
        "endTimeWindows": [
          {
            "startTime": "2024-02-13T11:45:00Z",
            "endTime": "2024-02-13T12:00:00Z"
          }
        ]
      }
    ],
    "globalStartTime": "2024-02-13T07:00:00Z",
    "globalEndTime": "2024-02-13T19:00:00Z"
  }
}
EOM

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

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

Parent พารามิเตอร์ ประเภทพร็อพเพอร์ตี้ คำอธิบาย
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
VisitRequest arrivalWaypoint[] ออบเจ็กต์ (Waypoint) นี่คือสถานที่ของการเข้าชมที่เฉพาะเจาะจงในเส้นทาง คุณสามารถกำหนดสถานที่นี้ได้โดยใช้พิกัดละติจูดและลองจิจูด, รหัสสถานที่ หรือทิศทาง ใน สถานการณ์การรับฝากเลี้ยงสุนัขนี้ ให้ตั้งค่านี้เป็นสถานที่ที่เจ้าของระบุไว้สำหรับ pickups และตั้งค่าเป็นที่อยู่ของศูนย์รับฝากเลี้ยงสำหรับ deliveries
timeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คืออาร์เรย์ของออบเจ็กต์ที่กำหนดข้อจำกัดด้านเวลาสำหรับการรับหรือ ส่ง สำหรับสถานการณ์นี้ ให้ใช้พารามิเตอร์นี้เพื่อกำหนดช่วงเวลาการรับสำหรับสุนัขแต่ละตัวและช่วงเวลาที่ยอมรับได้สำหรับการส่งสุนัขกลับที่ศูนย์รับฝากเลี้ยง
Vehicle startWaypoint[] ออบเจ็กต์ (Waypoint) นี่คือสถานที่เริ่มต้นของเส้นทางรถตู้ ซึ่งกำหนดด้วย พิกัดละติจูดและลองจิจูดหรือรหัสสถานที่ พารามิเตอร์นี้จะบอก เครื่องมือเพิ่มประสิทธิภาพว่ารถตู้ต้องเริ่มเส้นทางจากที่ใด หากคุณไม่กำหนดจุดอ้างอิงนี้ เครื่องมือเพิ่มประสิทธิภาพจะเลือกการรับหรือการส่งรายการใดรายการหนึ่งเป็นสถานที่เริ่มต้น สำหรับสถานการณ์การรับฝากเลี้ยงสุนัขนี้ เนื่องจากคนขับ เริ่มงานที่ศูนย์รับฝากเลี้ยง ให้ใช้พิกัดสำหรับ Mission Dolores Park
endWaypoint[] ออบเจ็กต์ (Waypoint) นี่คือจุดหมายปลายทางสุดท้ายของเส้นทางรถตู้ ซึ่งกำหนดด้วย พิกัดละติจูดและลองจิจูดหรือรหัสสถานที่ พารามิเตอร์นี้จะบอก เครื่องมือเพิ่มประสิทธิภาพว่ารถตู้ต้องสิ้นสุดเส้นทางที่ใด หากคุณไม่กำหนดจุดอ้างอิงนี้ เครื่องมือเพิ่มประสิทธิภาพจะเลือกการรับหรือการส่งรายการใดรายการหนึ่งเป็นจุดสิ้นสุดของเส้นทาง สำหรับสถานการณ์การรับฝากเลี้ยงสุนัขนี้ เนื่องจากคนขับต้อง สิ้นสุดงานที่ศูนย์รับฝากเลี้ยง ให้ใช้พิกัดสำหรับ Mission Dolores Park
costPerHour ตัวเลข นี่คือต้นทุนที่เกิดขึ้นทุกชั่วโมงที่ใช้รถตู้ ไม่ว่ารถตู้จะเคลื่อนที่หรือจอดอยู่ก็ตาม สำหรับสถานการณ์การรับฝากเลี้ยงสุนัขนี้ ให้ใช้ พารามิเตอร์นี้เพื่อจำลองค่าจ้างรายชั่วโมงของคนขับ
startTimeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คือช่วงเวลาที่ยอมรับได้สำหรับคนขับในการเริ่มขับรถตู้ เพื่อไปรับสุนัขในช่วงเช้า
endTimeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คือช่วงเวลาที่ยอมรับได้สำหรับคนขับในการขับรถตู้เสร็จ และจอดรถกลับที่ศูนย์รับฝากเลี้ยงสุนัข

ถัดไป

ตีความการตอบกลับ