ShipmentRoute

Lộ trình của một phương tiện có thể bị phân huỷ dọc theo trục thời gian, như sau (chúng tôi giả định có n lượt ghé thăm):

  |            |            |          |       |  T[2], |        |      |
  | Transition |  Visit #0  |          |       |  V[2], |        |      |
  |     #0     |    aka     |   T[1]   |  V[1] |  ...   | V[n-1] | T[n] |
  |  aka T[0]  |    V[0]    |          |       | V[n-2],|        |      |
  |            |            |          |       | T[n-1] |        |      |
  ^            ^            ^          ^       ^        ^        ^      ^
vehicle    V[0].start   V[0].end     V[1].   V[1].    V[n].    V[n]. vehicle
 start     (arrival)   (departure)   start   end      start    end     end

Xin lưu ý rằng chúng tôi tạo sự khác biệt giữa:

  • "sự kiện đúng giờ", chẳng hạn như lúc xe bắt đầu và kết thúc, cũng như thời điểm bắt đầu và kết thúc của mỗi lượt ghé thăm (còn gọi là thời gian đến và khởi hành). Chúng xảy ra vào một giây nhất định.
  • "khoảng thời gian", chẳng hạn như chính lượt truy cập và chuyển đổi giữa các lượt truy cập. Mặc dù đôi khi khoảng thời gian có thể có thời lượng bằng 0 (tức là bắt đầu và kết thúc tại cùng một giây), nhưng chúng thường có thời lượng dương.

Bất biến:

  • Nếu có n lượt truy cập, thì có n+1 lượt chuyển đổi.
  • Lượt truy cập luôn được bao quanh bởi một hiệu ứng chuyển đổi trước nó (cùng chỉ mục) và một hiệu ứng chuyển đổi sau nó (chỉ mục + 1).
  • Quá trình khởi động xe luôn diễn ra sau quá trình chuyển đổi số 0.
  • Điểm cuối của xe luôn đứng sau đoạn chuyển tiếp #n.

Khi phóng to, sau đây là những gì sẽ xảy ra trong TransitionVisit:

---+-------------------------------------+-----------------------------+-->
   |           TRANSITION[i]             |           VISIT[i]          |
   |                                     |                             |
   |  * TRAVEL: the vehicle moves from   |      PERFORM the visit:     |
   |    VISIT[i-1].departure_location to |                             |
   |    VISIT[i].arrival_location, which |  * Spend some time:         |
   |    takes a given travel duration    |    the "visit duration".    |
   |    and distance                     |                             |
   |                                     |  * Load or unload           |
   |  * BREAKS: the driver may have      |    some quantities from the |
   |    breaks (e.g. lunch break).       |    vehicle: the "demand".   |
   |                                     |                             |
   |  * WAIT: the driver/vehicle does    |                             |
   |    nothing. This can happen for     |                             |
   |    many reasons, for example when   |                             |
   |    the vehicle reaches the next     |                             |
   |    event's destination before the   |                             |
   |    start of its time window         |                             |
   |                                     |                             |
   |  * DELAY: *right before* the next   |                             |
   |    arrival. E.g. the vehicle and/or |                             |
   |    driver spends time unloading.    |                             |
   |                                     |                             |
---+-------------------------------------+-----------------------------+-->
   ^                                     ^                             ^
V[i-1].end                           V[i].start                    V[i].end

Cuối cùng, sau đây là cách sắp xếp ĐI LẠI, NGỪNG, CHỜ và CHỜ trong quá trình chuyển đổi.

  • Chúng không chồng chéo nhau.
  • Thời gian chờ là duy nhất và phải là một khoảng thời gian liền nhau ngay trước lần ghé thăm tiếp theo (hoặc khi phương tiện kết thúc). Do đó, bạn cần biết khoảng thời gian trễ để biết thời gian bắt đầu và kết thúc của sự kiện.
  • BREAKS là các khoảng thời gian liền nhau, không chồng chéo. Phản hồi chỉ định thời gian bắt đầu và thời lượng của mỗi điểm chèn.
  • DU LỊCH và ROWS là "có thể giành được": chúng có thể bị gián đoạn nhiều lần trong quá trình chuyển đổi này. Khách hàng có thể giả định rằng việc di chuyển sẽ diễn ra "càng sớm càng tốt" và "chờ" lấp đầy thời gian còn lại.

Một ví dụ (phức tạp):

                               TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
  ||     |       |           |       |           |         |         ||
  ||  T  |   B   |     T     |       |     B     |         |    D    ||
  ||  r  |   r   |     r     |   W   |     r     |    W    |    e    ||
  ||  a  |   e   |     a     |   a   |     e     |    a    |    l    ||
  ||  v  |   a   |     v     |   i   |     a     |    i    |    a    ||
  ||  e  |   k   |     e     |   t   |     k     |    t    |    y    ||
  ||  l  |       |     l     |       |           |         |         ||
  ||     |       |           |       |           |         |         ||
--++-----------------------------------------------------------------++-->
Biểu diễn dưới dạng JSON
{
  "vehicleIndex": integer,
  "vehicleLabel": string,
  "vehicleStartTime": string,
  "vehicleEndTime": string,
  "visits": [
    {
      object (Visit)
    }
  ],
  "transitions": [
    {
      object (Transition)
    }
  ],
  "hasTrafficInfeasibilities": boolean,
  "routePolyline": {
    object (EncodedPolyline)
  },
  "breaks": [
    {
      object (Break)
    }
  ],
  "metrics": {
    object (AggregatedMetrics)
  },
  "routeCosts": {
    string: number,
    ...
  },
  "routeTotalCost": number
}
Trường
vehicleIndex

integer

Xe thực hiện tuyến đường, được xác định theo chỉ mục trong nguồn ShipmentModel.

vehicleLabel

string

Nhãn của xe thực hiện tuyến đường này, bằng ShipmentModel.vehicles(vehicleIndex).label, nếu được chỉ định.

vehicleStartTime

string (Timestamp format)

Thời gian xe bắt đầu đi theo tuyến đường.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

vehicleEndTime

string (Timestamp format)

Thời gian xe kết thúc tuyến đường.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

visits[]

object (Visit)

Trình tự các lượt truy cập theo thứ tự đại diện cho một tuyến đường. lượt ghé thăm[i] là lượt ghé thăm thứ i trong tuyến đường. Nếu bạn để trống trường này, thì chiếc xe đó sẽ được coi là chưa sử dụng.

transitions[]

object (Transition)

Danh sách chuyển đổi theo thứ tự của tuyến đường.

hasTrafficInfeasibilities

boolean

Khi bạn đặt OptimizeToursRequest.consider_road_traffic thành true, trường này cho biết rằng có thể dự đoán sự không nhất quán về thời gian tuyến đường bằng cách sử dụng thông tin ước tính về thời gian di chuyển dựa trên giao thông. Có thể không có đủ thời gian để hoàn tất việc di chuyển đã điều chỉnh theo giao thông, những chuyến chậm trễ và khoảng nghỉ giữa các lượt ghé thăm, trước lần ghé thăm đầu tiên hoặc sau lần ghé thăm cuối cùng, trong khi vẫn đáp ứng yêu cầu về khoảng thời gian ghé thăm và thời gian của phương tiện. Ví dụ:

  startTime(previous_visit) + duration(previous_visit) +
  travelDuration(previous_visit, next_visit) > startTime(next_visit)

Thời gian đến vào Next_visit có thể sẽ muộn hơn khoảng thời gian hiện tại do thời gian di chuyển ước tính cao hơn travelDuration(previous_visit, next_visit) do tình hình giao thông. Ngoài ra, thời gian nghỉ ngơi có thể buộc phải trùng với một lượt ghé thăm do sự gia tăng ước tính thời gian đi lại và các quy định hạn chế về thời gian ghé thăm hoặc ngắt quãng.

routePolyline

object (EncodedPolyline)

Nội dung biểu thị bằng nhiều đường được mã hoá của tuyến đường. Trường này chỉ được điền sẵn nếu bạn đặt OptimizeToursRequest.populate_polylines thành true.

breaks[]

object (Break)

Các giờ nghỉ được lên lịch cho xe thực hiện tuyến đường này. Trình tự breaks đại diện cho các khoảng thời gian, mỗi khoảng thời gian bắt đầu từ startTime tương ứng và kéo dài duration giây.

metrics

object (AggregatedMetrics)

Các chỉ số về thời lượng, khoảng cách và tải cho tuyến đường này. Các trường của AggregatedMetrics được tính tổng trên tất cả ShipmentRoute.transitions hoặc ShipmentRoute.visits, tuỳ thuộc vào ngữ cảnh.

routeCosts

map (key: string, value: number)

Chi phí của tuyến đường, được chia nhỏ theo các trường yêu cầu liên quan đến chi phí. Các khoá này là đường dẫn proto, liên quan đến dữ liệu đầu vào OptimizeChuyếnsRequest, ví dụ: "model.shipments.pickups.cost" và các giá trị là tổng chi phí do trường chi phí tương ứng tạo ra, được tổng hợp trên toàn bộ tuyến đường. Nói cách khác, chi phí["model.shipments.pickups.cost"] là tổng tất cả chi phí đến lấy hàng trong suốt tuyến đường. Tất cả chi phí được xác định trong mô hình đều được báo cáo chi tiết tại đây, ngoại trừ các chi phí liên quan đến TransitionAttributes chỉ được báo cáo theo cách tổng hợp kể từ ngày 1/1/2022.

Một đối tượng chứa danh sách các cặp "key": value. Ví dụ: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

routeTotalCost

number

Tổng chi phí của tuyến đường. Tổng của tất cả chi phí trong bản đồ chi phí.

Truy cập

Lượt truy cập được thực hiện trong một tuyến đường. Lượt truy cập này tương ứng với việc đến lấy hàng hoặc giao Shipment.

Biểu diễn dưới dạng JSON
{
  "shipmentIndex": integer,
  "isPickup": boolean,
  "visitRequestIndex": integer,
  "startTime": string,
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "detour": string,
  "shipmentLabel": string,
  "visitLabel": string
}
Trường
shipmentIndex

integer

Chỉ mục của trường shipments trong nguồn ShipmentModel.

isPickup

boolean

Nếu true, lượt truy cập tương ứng với việc nhận một Shipment. Nếu không, nó tương ứng với việc phân phối.

visitRequestIndex

integer

Chỉ mục của VisitRequest trong trường đến lấy hàng hoặc giao hàng của Shipment (xem isPickup).

startTime

string (Timestamp format)

Thời gian bắt đầu lượt truy cập. Xin lưu ý rằng xe có thể đến sớm hơn giờ này tại vị trí ghé thăm. Thời gian phù hợp với ShipmentModel.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

loadDemands

map (key: string, value: object (Load))

Tổng nhu cầu về tải số lượt ghé thăm dưới dạng tổng của lô hàng và yêu cầu ghé thăm loadDemands. Giá trị là số âm nếu lượt truy cập là lượt phân phối. Nhu cầu được báo cáo cho cùng loại với Transition.loads (xem trường này).

Một đối tượng chứa danh sách các cặp "key": value. Ví dụ: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

detour

string (Duration format)

Thời gian đi đường vòng do các lô hàng được vận chuyển trên tuyến đường trước khi đến và thời gian chờ tiềm năng do khung thời gian tính ra. Nếu lượt ghé thăm là một chuyến giao hàng, thì đường vòng được tính từ lượt ghé thăm để lấy hàng tương ứng và bằng:

startTime(delivery) - startTime(pickup)
- (duration(pickup) + travel duration from the pickup location
to the delivery location).

Nếu không, số liệu này sẽ được tính từ xe startLocation và bằng:

startTime - vehicleStartTime - travel duration from
the vehicle's `startLocation` to the visit.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

shipmentLabel

string

Bản sao của Shipment.label tương ứng, nếu được chỉ định trong Shipment.

visitLabel

string

Bản sao của VisitRequest.label tương ứng, nếu được chỉ định trong VisitRequest.

Hiệu ứng chuyển cảnh

Chuyển đổi giữa hai sự kiện trên tuyến đường. Xem mô tả về ShipmentRoute.

Nếu xe không có startLocation và/hoặc endLocation, thì chỉ số về hành trình tương ứng sẽ là 0.

Biểu diễn dưới dạng JSON
{
  "travelDuration": string,
  "travelDistanceMeters": number,
  "trafficInfoUnavailable": boolean,
  "delayDuration": string,
  "breakDuration": string,
  "waitDuration": string,
  "totalDuration": string,
  "startTime": string,
  "routePolyline": {
    object (EncodedPolyline)
  },
  "vehicleLoads": {
    string: {
      object (VehicleLoad)
    },
    ...
  }
}
Trường
travelDuration

string (Duration format)

Thời gian di chuyển trong quá trình chuyển đổi này.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

travelDistanceMeters

number

Khoảng cách đã đi trong quá trình chuyển đổi.

trafficInfoUnavailable

boolean

Khi có yêu cầu lưu lượng truy cập qua OptimizeToursRequest.consider_road_traffic và không truy xuất được thông tin giao thông cho Transition, giá trị boolean này được đặt thành true. Điều này có thể là tạm thời (hiếm khi xảy ra trục trặc trong các máy chủ lưu lượng truy cập thời gian thực) hoặc vĩnh viễn (không có dữ liệu cho vị trí này).

delayDuration

string (Duration format)

Tổng của khoảng thời gian trễ áp dụng cho quá trình chuyển đổi này. Nếu có, thời gian trễ sẽ bắt đầu đúng delayDuration giây trước sự kiện tiếp theo (lượt ghé thăm hoặc thời điểm kết thúc xe). Vui lòng xem TransitionAttributes.delay.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

breakDuration

string (Duration format)

Tổng thời lượng của các điểm chèn quảng cáo xảy ra trong quá trình chuyển đổi này, nếu có. Thông tin chi tiết về thời gian bắt đầu và thời lượng của mỗi điểm chèn được lưu trữ trong ShipmentRoute.breaks.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

waitDuration

string (Duration format)

Thời gian chờ trong quá trình chuyển đổi này. Thời gian chờ tương ứng với thời gian không hoạt động và không bao gồm thời gian nghỉ. Ngoài ra, xin lưu ý rằng thời gian chờ này có thể được chia thành nhiều khoảng thời gian không liền nhau.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

totalDuration

string (Duration format)

Tổng thời lượng chuyển đổi, được cung cấp để thuận tiện. Giá trị này bằng:

  • lượt truy cập tiếp theo startTime (hoặc vehicleEndTime nếu đây là lần chuyển đổi cuối cùng) - startTime của hiệu ứng chuyển đổi này;
  • nếu ShipmentRoute.has_traffic_infeasibilities là false, thì các hàm sau đây sẽ giữ lại: `totalDuration = TravelDuration + delayDuration
  • breakDuration + chờDuration".

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

startTime

string (Timestamp format)

Thời gian bắt đầu của quá trình chuyển đổi này.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

routePolyline

object (EncodedPolyline)

Nội dung biểu thị bằng nhiều đường được mã hoá của tuyến đường đi theo trong quá trình chuyển đổi. Trường này chỉ được điền sẵn nếu bạn đặt populateTransitionPolylines thành true.

vehicleLoads

map (key: string, value: object (VehicleLoad))

Số lượng xe trong quá trình chuyển đổi này, cho mỗi loại xuất hiện trong Vehicle.load_limits của xe này hoặc có Shipment.load_demands khác 0 trong một số lô hàng được thực hiện trên tuyến đường này.

Các tải trong lần chuyển đổi đầu tiên là tải trọng bắt đầu trên tuyến đường của xe. Sau đó, sau mỗi lượt truy cập, loadDemands của lượt truy cập sẽ được cộng hoặc trừ để nhận lượt tải của lượt chuyển đổi tiếp theo, tuỳ thuộc vào việc lượt truy cập đó là đến lấy hàng hay giao hàng.

Một đối tượng chứa danh sách các cặp "key": value. Ví dụ: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

EncodedPolyline

Đại diện được mã hoá của một hình nhiều đường. Bạn có thể tìm thêm thông tin về mã hoá nhiều đường tại đây: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.

Biểu diễn dưới dạng JSON
{
  "points": string
}
Trường
points

string

Chuỗi đại diện cho các điểm được mã hoá của hình nhiều đường.

Nghỉ giải lao

Dữ liệu mô tả quá trình thực thi một điểm chèn.

Biểu diễn dưới dạng JSON
{
  "startTime": string,
  "duration": string
}
Trường
startTime

string (Timestamp format)

Bắt đầu giờ nghỉ.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

duration

string (Duration format)

Thời lượng của quảng cáo.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".