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

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

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

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

สถานการณ์

แผนที่ซานฟรานซิสโกที่มีหมุดสำหรับ Coit Tower, Mission Dolores Park และ South Sunset Playground Park

คุณให้บริการรับเลี้ยงสุนัขแบบไปกลับตั้งแต่เวลา 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 สำหรับ Bernese Mountain Dog หรือ South Sunset Playground Park สำหรับชิวาวา) และตั้งค่า timeWindows เป็นเวลารับที่เจ้าของร้องขอ (07:30 น. ถึง 09: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
                }
              }
            },
            "timeWindow": [
              {
                "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
                }
              }
            },
            "timeWindow": [
              {
                "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) นี่คือจุดเริ่มต้นของเส้นทางของยานพาหนะ ซึ่งกำหนดด้วย พิกัดละติจูดและลองจิจูดหรือรหัสสถานที่ พารามิเตอร์นี้จะบอก เครื่องมือเพิ่มประสิทธิภาพว่ายานพาหนะต้องเริ่มเส้นทางที่ใด หากคุณไม่ได้กำหนดจุดอ้างอิงนี้ เครื่องมือเพิ่มประสิทธิภาพจะเลือกจุดรับสินค้าหรือ จุดนำส่งอย่างใดอย่างหนึ่งเป็นสถานที่ตั้งเริ่มต้น สำหรับสถานการณ์รับฝากสุนัขนี้ เนื่องจาก คนขับเริ่มวันทำงานที่สถานรับฝาก จึงใช้พิกัดของ Mission Dolores Park
endWaypoint[] ออบเจ็กต์ (Waypoint) นี่คือจุดหมายปลายทางสุดท้ายของเส้นทางยานพาหนะ ซึ่งกำหนดด้วยพิกัดละติจูด และลองจิจูดหรือรหัสสถานที่ พารามิเตอร์นี้จะบอก เครื่องมือเพิ่มประสิทธิภาพว่ายานพาหนะต้องสิ้นสุดเส้นทางที่ใด หากคุณไม่ได้กำหนดจุดแวะพักนี้ ตัวเพิ่มประสิทธิภาพจะเลือกการรับหรือการนำส่งอย่างใดอย่างหนึ่งเป็นจุดสิ้นสุดของเส้นทาง สำหรับสถานการณ์รับฝากสุนัขนี้ เนื่องจากคนขับต้องสิ้นสุดวัน ณ สถานที่รับฝากสุนัข ให้ใช้พิกัดของ Mission Dolores Park
costPerHour ตัวเลข นี่คือค่าใช้จ่ายที่เกิดขึ้นทุกชั่วโมงที่ใช้ยานพาหนะ ไม่ว่าจะ เดินทางหรือหยุดอยู่ก็ตาม สำหรับสถานการณ์จำลองของศูนย์รับฝากสุนัขนี้ ให้ใช้ เพื่อจำลองค่าจ้างรายชั่วโมงของคนขับรถ
startTimeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) นี่คือกรอบเวลาที่ยอมรับได้สำหรับคนขับในการเริ่มขับรถตู้เพื่อ รับสุนัขในตอนเช้า
endTimeWindows[] อาร์เรย์ของออบเจ็กต์ (TimeWindow) ซึ่งเป็นช่วงเวลาที่ยอมรับได้สำหรับคนขับรถตู้ในการขับรถให้เสร็จและ จอดรถกลับที่ศูนย์รับฝากสุนัข

ถัดไป

ตีความคำตอบ