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

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

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

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

สถานการณ์

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

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

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

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

  • รับสุนัขพันธุ์แบร์นีสเมาน์เทนด็อกที่อยู่ใกล้กับ Coit Tower
  • ไปรับชิวาวาที่สวนสาธารณะ South Sunset Playground
  • ไปส่งสุนัขทั้ง 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 สำหรับเวลา นำส่งที่ต้องการ (09:30 น. ถึง 11:30 น.)

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

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

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

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

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

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

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

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

  4. ตั้งกรอบเวลาทั่วโลก กรอบเวลาทั่วโลกแสดง กรอบเวลาที่รถตู้สามารถรับและส่ง สถานรับเลี้ยงเด็กได้ตลอดทั้งวัน สำหรับสถานการณ์นี้ ให้ตั้งค่าglobalStartTimeเป็น 07: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

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

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

ผู้ปกครอง พารามิเตอร์ ประเภทพร็อพเพอร์ตี้ คำอธิบาย
OptimizeToursRequest model ออบเจ็กต์ (ShipmentModel) นี่คือหัวใจสำคัญของคำขอ ซึ่งเป็นออบเจ็กต์เดียวที่คุณ กำหนดปัญหาทั้งหมด รวมถึงสุนัขทั้งหมดที่คุณต้องรับและ ส่ง (shipments) และรถตู้ในกองยานพาหนะ (vehicles) คิดว่าออบเจ็กต์นี้เป็นพิมพ์เขียวที่สมบูรณ์สำหรับปัญหาที่คุณต้องเพิ่มประสิทธิภาพ
timeout ระยะเวลา พารามิเตอร์นี้จะระบุระยะเวลาสูงสุดที่เซิร์ฟเวอร์จะทำงานกับคำขอก่อนที่จะส่งการตอบกลับ ใช้พารามิเตอร์นี้เพื่อลดเวลา รอสาย สำหรับคำขอขนาดเล็กและรวดเร็ว เช่น สถานการณ์รับฝากสุนัขนี้ ให้ตั้งค่านี้เป็น 2 วินาที
ShipmentModel shipments[] อาร์เรย์ของออบเจ็กต์ (Shipment) อาร์เรย์ของออบเจ็กต์ โดยแต่ละออบเจ็กต์แสดงถึงสุนัขที่ ต้องรับหรือส่ง
vehicles[] อาร์เรย์ของออบเจ็กต์ (Vehicle) อาร์เรย์ของออบเจ็กต์ที่แต่ละออบเจ็กต์จะกำหนดรถยนต์ใน กองยานพาหนะ ซึ่งเป็นส่วนที่คุณอธิบายทรัพยากร เช่น รถตู้ที่ ใช้รับและส่ง คุณต้องกำหนดรถอย่างน้อย 1 คันเพื่อ รับเส้นทางที่เพิ่มประสิทธิภาพแล้ว
globalStartTime การประทับเวลา นี่คือเวลาที่เร็วที่สุดที่เหตุการณ์ใดๆ ในโมเดลทั้งหมดของคุณจะเกิดขึ้นได้ พารามิเตอร์นี้จะจำกัดปัญหาการเพิ่มประสิทธิภาพ ลงในเวลา ซึ่งมีความสำคัญอย่างยิ่งต่อการคำนวณ การเข้าชมและการกำหนดเส้นทางที่ถูกต้อง สำหรับสถานการณ์รับส่งสุนัขนี้ ให้ตั้งค่าเป็นเวลาที่เร็วที่สุดที่คนขับสามารถขับรถตู้ได้ในวันนั้น ซึ่งก็คือ 07: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) นี่คือจุดเริ่มต้นของเส้นทางของยานพาหนะ ซึ่งกำหนดด้วย พิกัดละติจูดและลองจิจูดหรือรหัสสถานที่ พารามิเตอร์นี้จะบอก เครื่องมือเพิ่มประสิทธิภาพว่ายานพาหนะต้องเริ่มเส้นทางที่ใด หากคุณไม่ได้กำหนดจุดแวะพักนี้ เครื่องมือเพิ่มประสิทธิภาพจะเลือกการรับหรือการนำส่งอย่างใดอย่างหนึ่งเป็น สถานที่ตั้งเริ่มต้น สำหรับสถานการณ์รับฝากสุนัขนี้ เนื่องจากคนขับ เริ่มวันทำงานที่สถานรับฝากสุนัข ให้ใช้พิกัดของ สวนสาธารณะมิชชันโดโลเรส
endWaypoint[] ออบเจ็กต์ (Waypoint) นี่คือจุดหมายปลายทางสุดท้ายของเส้นทางยานพาหนะ ซึ่งกำหนดด้วย พิกัดละติจูดและลองจิจูดหรือรหัสสถานที่ พารามิเตอร์นี้จะบอก เครื่องมือเพิ่มประสิทธิภาพว่ายานพาหนะต้องสิ้นสุดเส้นทางที่ใด หากคุณไม่ได้กำหนดจุดอ้างอิงนี้ เครื่องมือเพิ่มประสิทธิภาพจะเลือกการรับหรือการนำส่งอย่างใดอย่างหนึ่งเป็น จุดสิ้นสุดของเส้นทาง สำหรับสถานการณ์รับส่งสุนัขนี้ เนื่องจากคนขับต้อง สิ้นสุดวัน ณ สถานที่รับฝากสุนัข ให้ใช้พิกัดของ Mission Dolores Park
costPerHour ตัวเลข นี่คือค่าใช้จ่ายที่เกิดขึ้นทุกชั่วโมงที่ใช้ยานพาหนะ ไม่ว่า จะเดินทางหรือหยุดอยู่ก็ตาม สำหรับสถานการณ์จำลองสถานรับเลี้ยงสุนัขนี้ ให้ใช้ สิ่งนี้เพื่อสร้างแบบจำลองค่าจ้างรายชั่วโมงของคนขับ
startTimeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คือช่วงเวลาที่ยอมรับได้สำหรับคนขับในการเริ่มขับรถตู้ เพื่อรับสุนัขในตอนเช้า
endTimeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คือช่วงเวลาที่ยอมรับได้สำหรับคนขับรถตู้ในการขับรถให้เสร็จ และจอดรถกลับที่ศูนย์รับฝากสุนัข

ถัดไป

ตีความคำตอบ