ShipmentRoute

একটি যানবাহনের রুট সময় অক্ষ বরাবর পচনশীল হতে পারে, এভাবে (আমরা অনুমান করি সেখানে n ভিজিট আছে):

  |            |            |          |       |  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

মনে রাখবেন যে আমরা এর মধ্যে পার্থক্য করি:

  • "সময়নিষ্ঠ ঘটনা", যেমন যানবাহনের শুরু এবং শেষ এবং প্রতিটি দর্শনের শুরু এবং শেষ (ওরফে আগমন এবং প্রস্থান)। এগুলি একটি নির্দিষ্ট সেকেন্ডে ঘটে।
  • "সময়ের ব্যবধান", যেমন ভিজিট নিজেই, এবং ভিজিটের মধ্যে পরিবর্তন। যদিও সময়ের ব্যবধানের মাঝে মাঝে শূন্য সময়কাল থাকতে পারে, অর্থাৎ একই সেকেন্ডে শুরু এবং শেষ হতে পারে, তাদের প্রায়শই একটি ইতিবাচক সময়কাল থাকে।

অপরিবর্তনীয়:

  • n ভিজিট থাকলে, n+1 ট্রানজিশন আছে।
  • একটি ভিজিট সর্বদা তার আগে একটি ট্রানজিশন (একই সূচক) এবং এটির পরে একটি ট্রানজিশন (সূচী + 1) দ্বারা ঘিরে থাকে।
  • গাড়ির স্টার্ট সর্বদা পরিবর্তন #0 দ্বারা অনুসরণ করা হয়।
  • যানবাহনের শেষ সর্বদা স্থানান্তর #n এর আগে থাকে।

জুম ইন, একটি Transition এবং Visit সময় যা ঘটে তা এখানে:

---+-------------------------------------+-----------------------------+-->
   |           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

পরিশেষে, এখানে ট্রানজিশনের সময় ট্রাভেল, ব্রেক, বিলম্ব এবং অপেক্ষার ব্যবস্থা করা যেতে পারে।

  • তারা ওভারল্যাপ না.
  • বিলম্বটি অনন্য এবং পরের দর্শনের (বা গাড়ির সমাপ্তি) ঠিক আগে একটি সংলগ্ন সময় হতে হবে । সুতরাং, এটির শুরু এবং শেষ সময় জানার জন্য বিলম্বের সময়কাল জানা যথেষ্ট।
  • BREAKS হল সংলগ্ন, অ-ওভারল্যাপিং সময়কাল। প্রতিক্রিয়া প্রতিটি বিরতির শুরুর সময় এবং সময়কাল নির্দিষ্ট করে।
  • ট্রাভেল এবং ওয়েট হল "প্রিম্পটেবল": এই ট্রানজিশনের সময় এগুলি বেশ কয়েকবার ব্যাহত হতে পারে৷ ক্লায়েন্টরা ধরে নিতে পারেন যে ভ্রমণ "যত তাড়াতাড়ি সম্ভব" হয় এবং "অপেক্ষা" বাকি সময় পূরণ করে।

একটি (জটিল) উদাহরণ:

                               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     |       |           |         |         ||
  ||     |       |           |       |           |         |         ||
--++-----------------------------------------------------------------++-->
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
}
ক্ষেত্র
vehicleIndex

integer

যানবাহন রুট সম্পাদন করছে, ShipmentModel উৎসে তার সূচক দ্বারা চিহ্নিত করা হয়েছে।

vehicleLabel

string

এই পথটি সম্পাদনকারী গাড়ির লেবেল, ShipmentModel.vehicles(vehicleIndex).label , যদি নির্দিষ্ট করা থাকে।

vehicleStartTime

string ( Timestamp format)

গাড়িটি তার রুট শুরু করার সময়।

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

vehicleEndTime

string ( Timestamp format)

গাড়িটি তার রুট শেষ করার সময়।

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

visits[]

object ( Visit )

একটি রুট প্রতিনিধিত্ব করে ভিজিট ক্রম আদেশ. ভিজিট[i] হল রুটের i-তম ভিজিট। এই ক্ষেত্রটি খালি থাকলে, গাড়িটিকে অব্যবহৃত হিসাবে বিবেচনা করা হয়।

transitions[]

object ( Transition )

রুটের জন্য ট্রানজিশনের অর্ডার করা তালিকা।

hasTrafficInfeasibilities

boolean

যখন OptimizeToursRequest.consider_road_traffic , সত্যে সেট করা হয়, তখন এই ক্ষেত্রটি নির্দেশ করে যে ট্র্যাফিক-ভিত্তিক ভ্রমণের সময়কালের অনুমান ব্যবহার করে রুটের সময়ের অসঙ্গতিগুলি পূর্বাভাস দেওয়া হয়৷ ট্রাফিক-সামঞ্জস্যপূর্ণ ভ্রমণ সম্পূর্ণ করার জন্য অপর্যাপ্ত সময় থাকতে পারে, বিলম্ব এবং ভিজিটের মধ্যে বিরতি, প্রথম দর্শনের আগে, বা শেষ দর্শনের পরে, যদিও এখনও পরিদর্শন এবং গাড়ির সময় জানালাকে সন্তুষ্ট করে। যেমন,

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

ট্রাফিকের কারণে ট্রাভেল টাইম travelDuration(previous_visit, next_visit) এর অনুমান বৃদ্ধির কারণে নেক্সট_ভিজিটে আগমন সম্ভবত বর্তমান সময় উইন্ডোর চেয়ে পরে ঘটবে। এছাড়াও, ভ্রমণের সময় অনুমান বৃদ্ধি এবং পরিদর্শন বা বিরতির সময় উইন্ডো সীমাবদ্ধতার কারণে একটি বিরতি একটি দর্শনের সাথে ওভারল্যাপ করতে বাধ্য হতে পারে।

routePolyline

object ( EncodedPolyline )

রুটের এনকোড করা পলিলাইন উপস্থাপনা। OptimizeToursRequest.populate_polylines সত্যে সেট করা থাকলেই এই ক্ষেত্রটি পপুলেট করা হয়।

breaks[]

object ( Break )

এই রুটে চলা গাড়ির জন্য নির্ধারিত বিরতি। breaks ক্রমটি সময়ের ব্যবধানের প্রতিনিধিত্ব করে, প্রতিটি সংশ্লিষ্ট startTime থেকে শুরু হয় এবং স্থায়ী duration সেকেন্ড।

metrics

object ( AggregatedMetrics )

এই রুটের সময়কাল, দূরত্ব এবং লোড মেট্রিক্স। AggregatedMetrics এর ক্ষেত্রগুলি সমস্ত ShipmentRoute.transitions বা ShipmentRoute.visits উপর নির্ভর করে, প্রসঙ্গের উপর নির্ভর করে।

routeCosts

map (key: string, value: number)

রুটের খরচ, খরচ-সম্পর্কিত অনুরোধ ক্ষেত্র দ্বারা বিভক্ত। কীগুলি হল প্রোটো পাথ, ইনপুট OptimizeToursRequest-এর সাপেক্ষে, যেমন "model.shipments.pickups.cost", এবং মানগুলি হল সংশ্লিষ্ট খরচ ক্ষেত্রের দ্বারা উত্পন্ন মোট খরচ, সমগ্র রুট জুড়ে একত্রিত৷ অন্য কথায়, খরচ ["model.shipments.pickups.cost"] হল রুটের সমস্ত পিকআপ খরচের সমষ্টি৷ মডেলে সংজ্ঞায়িত সমস্ত খরচ এখানে বিস্তারিতভাবে রিপোর্ট করা হয়েছে ট্রানজিশন অ্যাট্রিবিউটের সাথে সম্পর্কিত খরচগুলি বাদ দিয়ে যেগুলি শুধুমাত্র 2022/01 হিসাবে সমষ্টিগতভাবে রিপোর্ট করা হয়েছে।

routeTotalCost

number

রুটের মোট খরচ। খরচ ম্যাপে সমস্ত খরচের যোগফল।

ভিজিট করুন

একটি রুট চলাকালীন একটি পরিদর্শন সঞ্চালিত. এই পরিদর্শনটি একটি পিকআপ বা একটি Shipment ডেলিভারির সাথে সম্পর্কিত৷

JSON প্রতিনিধিত্ব
{
  "shipmentIndex": integer,
  "isPickup": boolean,
  "visitRequestIndex": integer,
  "startTime": string,
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "detour": string,
  "shipmentLabel": string,
  "visitLabel": string
}
ক্ষেত্র
shipmentIndex

integer

ShipmentModel উৎসে shipments ক্ষেত্রের সূচক।

isPickup

boolean

সত্য হলে পরিদর্শনটি একটি Shipment পিকআপের সাথে মিলে যায়৷ অন্যথায়, এটি একটি প্রসবের সাথে মিলে যায়।

visitRequestIndex

integer

Shipment পিকআপ বা ডেলিভারি ক্ষেত্রে VisitRequest সূচী (দেখুন isPickup )।

startTime

string ( Timestamp format)

সফর শুরু হওয়ার সময়। উল্লেখ্য যে যানবাহন পরিদর্শন স্থানে এর আগে পৌঁছাতে পারে। সময় ShipmentModel সাথে সামঞ্জস্যপূর্ণ।

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

loadDemands

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

চালানের যোগফল হিসাবে মোট ভিজিট লোড চাহিদা এবং ভিজিট রিকোয়েস্ট loadDemands । ভিজিট একটি ডেলিভারি হলে মান নেতিবাচক হয়। Transition.loads (এই ক্ষেত্রটি দেখুন) হিসাবে একই ধরণের জন্য চাহিদাগুলি রিপোর্ট করা হয়।

detour

string ( Duration format)

পরিদর্শনের আগে রুটে পরিদর্শন করা শিপমেন্ট এবং টাইম উইন্ডোর দ্বারা প্ররোচিত সম্ভাব্য অপেক্ষার সময়ের কারণে অতিরিক্ত চক্কর সময়। যদি ভিজিটটি একটি ডেলিভারি হয়, তবে চক্করটি সংশ্লিষ্ট পিকআপ ভিজিট থেকে গণনা করা হয় এবং এর সমান:

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

অন্যথায়, এটি গাড়ির startLocation থেকে গণনা করা হয় এবং এর সমান:

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

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

shipmentLabel

string

সংশ্লিষ্ট Shipment.label এর কপি, যদি Shipment উল্লেখ করা থাকে।

visitLabel

string

সংশ্লিষ্ট VisitRequest.label এর অনুলিপি, যদি VisitRequest এ উল্লেখ করা থাকে।

উত্তরণ

রুটে দুটি ইভেন্টের মধ্যে স্থানান্তর। ShipmentRoute বর্ণনা দেখুন।

গাড়ির যদি startLocation এবং/অথবা endLocation না থাকে, তাহলে সংশ্লিষ্ট ভ্রমণের মেট্রিক্স 0 হয়।

JSON প্রতিনিধিত্ব
{
  "travelDuration": string,
  "travelDistanceMeters": number,
  "trafficInfoUnavailable": boolean,
  "delayDuration": string,
  "breakDuration": string,
  "waitDuration": string,
  "totalDuration": string,
  "startTime": string,
  "routePolyline": {
    object (EncodedPolyline)
  },
  "routeToken": string,
  "vehicleLoads": {
    string: {
      object (VehicleLoad)
    },
    ...
  }
}
ক্ষেত্র
travelDuration

string ( Duration format)

এই পরিবর্তনের সময় ভ্রমণের সময়কাল।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

travelDistanceMeters

number

স্থানান্তরের সময় দূরত্ব ভ্রমণ।

trafficInfoUnavailable

boolean

যখন OptimizeToursRequest.consider_road_traffic এর মাধ্যমে ট্রাফিকের অনুরোধ করা হয়, এবং Transition জন্য ট্র্যাফিক তথ্য পুনরুদ্ধার করা যায় না, তখন এই বুলিয়ান সত্যে সেট করা হয়। এটি অস্থায়ী হতে পারে (রিয়েলটাইম ট্র্যাফিক সার্ভারে বিরল হিক্কা) বা স্থায়ী (এই অবস্থানের জন্য কোনও ডেটা নেই)।

delayDuration

string ( Duration format)

এই ট্রানজিশনে প্রযোজ্য বিলম্বের সময়কালের যোগফল। যদি থাকে, বিলম্ব শুরু হয় ঠিক পরবর্তী ইভেন্টের (ভিজিট বা গাড়ির শেষ) আগে delayDuration সময়কাল। TransitionAttributes.delay দেখুন।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

breakDuration

string ( Duration format)

এই পরিবর্তনের সময় বিরতির সময়কালের যোগফল, যদি থাকে। প্রতিটি বিরতির শুরুর সময় এবং সময়কাল সম্পর্কে বিশদ বিবরণ ShipmentRoute.breaks এ সংরক্ষণ করা হয়।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

waitDuration

string ( Duration format)

এই ট্রানজিশনের সময় অপেক্ষায় কেটেছে। অপেক্ষার সময়কাল অলস সময়ের সাথে মিলে যায় এবং বিরতির সময় অন্তর্ভুক্ত করে না। এছাড়াও মনে রাখবেন যে এই অপেক্ষার সময়টিকে কয়েকটি অ-সংলগ্ন বিরতিতে বিভক্ত করা যেতে পারে।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

totalDuration

string ( Duration format)

ট্রানজিশনের মোট সময়কাল, সুবিধার জন্য প্রদত্ত। এটি সমান:

  • পরবর্তী ভিজিট startTime (অথবা vehicleEndTime যদি এটি শেষ ট্রানজিশন হয়) - এই ট্রানজিশনের startTime ;
  • ShipmentRoute.has_traffic_infeasibilities মিথ্যা হলে, নিম্নলিখিতগুলি অতিরিক্ত ধারণ করে: `totalDuration = ভ্রমণকাল + বিলম্বের সময়কাল
  • breakDuration + waitDuration`।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

startTime

string ( Timestamp format)

এই রূপান্তরের শুরুর সময়।

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

routePolyline

object ( EncodedPolyline )

রূপান্তরের সময় অনুসরণ করা রুটের এনকোডেড পলিলাইন উপস্থাপনা। populateTransitionPolylines true সেট করা থাকলেই এই ক্ষেত্রটি পপুলেট করা হয়।

routeToken

string

শুধুমাত্র আউটপুট। একটি অস্বচ্ছ টোকেন যা নেভিগেশনের সময় রুটটি পুনর্গঠন করতে নেভিগেশন SDK- তে পাস করা যেতে পারে এবং, পুনরায় রুট করার ক্ষেত্রে, রুটটি তৈরি করার সময় আসল উদ্দেশ্যকে সম্মান করে। এই টোকেনটিকে একটি অস্বচ্ছ ব্লব হিসাবে বিবেচনা করুন। অনুরোধ জুড়ে এর মান তুলনা করবেন না কারণ পরিষেবাটি ঠিক একই রুট ফিরিয়ে দিলেও এর মান পরিবর্তিত হতে পারে। populateTransitionPolylines true সেট করা থাকলেই এই ক্ষেত্রটি পপুলেট করা হয়।

vehicleLoads

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

এই ট্রানজিশনের সময় যানবাহন লোড হয়, প্রতিটি প্রকারের জন্য যা হয় এই গাড়ির Vehicle.load_limits তে প্রদর্শিত হয়, অথবা এই রুটে সম্পাদিত কিছু চালানে নন-জিরো Shipment.load_demands আছে৷

প্রথম স্থানান্তরের সময় লোডগুলি হল গাড়ির রুটের শুরুর লোড। তারপর, প্রতিটি ভিজিটের পরে, ভিজিটটি পিকআপ বা ডেলিভারি ছিল কিনা তার উপর নির্ভর করে, পরবর্তী ট্রানজিশনের লোড পেতে ভিজিটের loadDemands হয় যোগ করা হয় বা বিয়োগ করা হয়।

এনকোডেড পলিলাইন

একটি পলিলাইনের এনকোড করা উপস্থাপনা। পলিলাইন এনকোডিং সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding

JSON প্রতিনিধিত্ব
{
  "points": string
}
ক্ষেত্র
points

string

পলিলাইনের এনকোডেড পয়েন্ট প্রতিনিধিত্বকারী স্ট্রিং।

বিরতি

একটি বিরতির সম্পাদন প্রতিনিধিত্বকারী ডেটা।

JSON প্রতিনিধিত্ব
{
  "startTime": string,
  "duration": string
}
ক্ষেত্র
startTime

string ( Timestamp format)

বিরতির শুরুর সময়।

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

duration

string ( Duration format)

বিরতির সময়কাল।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"