একটি গাড়ির রুটকে সময় অক্ষ বরাবর এভাবে ভাগ করা যেতে পারে (আমরা ধরে নিচ্ছি 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
পরিশেষে, এখানে একটি পরিবর্তনের সময় ভ্রমণ, বিরতি, বিলম্ব এবং অপেক্ষার ব্যবস্থা কীভাবে করা যেতে পারে তা দেখানো হয়েছে।
- এগুলো ওভারল্যাপ করে না।
- বিলম্বের সময়কাল অনন্য এবং পরবর্তী পরিদর্শনের (অথবা গাড়ির শেষের) ঠিক আগে একটি ধারাবাহিক সময়কাল হতে হবে । সুতরাং, বিলম্বের সময়কাল জানা থাকলে এর শুরু এবং শেষের সময় জানা যথেষ্ট।
- বিরতিগুলি হল সংলগ্ন, অ-ওভারল্যাপিং সময়ের সময়কাল। প্রতিক্রিয়া প্রতিটি বিরতির শুরুর সময় এবং সময়কাল নির্দিষ্ট করে।
- ভ্রমণ এবং অপেক্ষা "পূর্বনির্ধারিত": এই পরিবর্তনের সময় এগুলি বেশ কয়েকবার বাধাগ্রস্ত হতে পারে। ক্লায়েন্টরা ধরে নিতে পারেন যে ভ্রমণ "যত তাড়াতাড়ি সম্ভব" হবে এবং "অপেক্ষা" বাকি সময় পূরণ করবে।
একটি (জটিল) উদাহরণ:
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 ( |
| ক্ষেত্র | |
|---|---|
vehicleIndex | উৎস |
vehicleLabel | এই রুটে চলাচলকারী যানবাহনের লেবেল, যদি নির্দিষ্ট করা থাকে, তাহলে |
vehicleStartTime | গাড়িটি যে সময়ে তার যাত্রা শুরু করে। RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
vehicleEndTime | গাড়িটি যে সময়ে তার রুট শেষ করে। RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
visits[] | একটি রুট প্রতিনিধিত্বকারী পরিদর্শনের ক্রমানুসারে ক্রমানুসারে। visits[i] হল রুটের i-তম পরিদর্শন। যদি এই ক্ষেত্রটি খালি থাকে, তাহলে যানবাহনটি অব্যবহৃত বলে বিবেচিত হবে। |
transitions[] | রুটের জন্য ট্রানজিশনের তালিকা অর্ডার করা হয়েছে। |
hasTrafficInfeasibilities | যখন ট্র্যাফিকের কারণে ভ্রমণের সময়সীমা |
routePolyline | রুটের এনকোডেড পলিলাইন উপস্থাপনা। |
breaks[] | এই রুটে চলাচলকারী যানবাহনের জন্য নির্ধারিত বিরতি। |
metrics | এই রুটের সময়কাল, দূরত্ব এবং লোড মেট্রিক্স। প্রেক্ষাপটের উপর নির্ভর করে |
vehicleFullness | ক্যাপড মেট্রিকগুলি তাদের নিজ নিজ যানবাহনের সীমার কতটা কাছাকাছি তা গণনা করার জন্য পরীক্ষামূলক: ভবিষ্যতে এই ক্ষেত্রের আচরণ বা অস্তিত্ব পরিবর্তিত হতে পারে। |
routeCosts | রুটের খরচ, খরচ-সম্পর্কিত অনুরোধ ক্ষেত্র দ্বারা বিভক্ত। কীগুলি হল প্রোটো পাথ, ইনপুট OptimizeToursRequest এর সাথে সম্পর্কিত, যেমন "model.shipments.pickups.cost", এবং মানগুলি হল সংশ্লিষ্ট খরচ ক্ষেত্র দ্বারা উৎপন্ন মোট খরচ, যা সমগ্র রুটে একত্রিত করা হয়েছে। অন্য কথায়, costs["model.shipments.pickups.cost"] হল রুটে সমস্ত পিকআপ খরচের যোগফল। মডেলে সংজ্ঞায়িত সমস্ত খরচ এখানে বিস্তারিতভাবে রিপোর্ট করা হয়েছে, TransitionAttributes সম্পর্কিত খরচ বাদে যা শুধুমাত্র 2022/01 অনুযায়ী সমষ্টিগতভাবে রিপোর্ট করা হয়েছে। |
routeTotalCost | রুটের মোট খরচ। খরচ মানচিত্রে সমস্ত খরচের যোগফল। |
যান
একটি রুট চলাকালীন একটি পরিদর্শন। এই পরিদর্শনটি একটি Shipment পিকআপ বা ডেলিভারির সাথে সম্পর্কিত।
| JSON উপস্থাপনা |
|---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
| ক্ষেত্র | |
|---|---|
shipmentIndex | উৎস |
isPickup | যদি সত্য হয়, তাহলে ভিজিটটি একটি |
visitRequestIndex | |
startTime | পরিদর্শন শুরু হওয়ার সময়। মনে রাখবেন যে যানবাহনটি পরিদর্শন স্থানে এর আগে পৌঁছাতে পারে। সময়গুলি RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
loadDemands | মোট ভিজিট লোড ডিমান্ডকে শিপমেন্ট এবং ভিজিট রিকোয়েস্ট |
detour | ভ্রমণের আগে রুটে পরিদর্শন করা শিপমেন্ট এবং সময়সূচীর কারণে সম্ভাব্য অপেক্ষার সময়ের কারণে অতিরিক্ত ঘুরপথ সময়। যদি ভ্রমণটি একটি ডেলিভারি হয়, তাহলে সংশ্লিষ্ট পিকআপ পরিদর্শন থেকে ঘুরপথ গণনা করা হয় এবং এর সমান: অন্যথায়, এটি গাড়ির সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
shipmentLabel | সংশ্লিষ্ট |
visitLabel | সংশ্লিষ্ট |
injectedSolutionLocationToken | একটি অস্বচ্ছ টোকেন যা পরিদর্শনের স্থান সম্পর্কে তথ্য উপস্থাপন করে। এই ভিজিটের জন্য যখন পরীক্ষামূলক: আরও বিস্তারিত জানার জন্য https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request দেখুন। |
রূপান্তর
রুটে দুটি ইভেন্টের মধ্যে পরিবর্তন। ShipmentRoute এর বর্ণনা দেখুন।
যদি গাড়ির startLocation এবং/অথবা endLocation না থাকে, তাহলে সংশ্লিষ্ট ভ্রমণের মেট্রিক্স 0 হবে।
| JSON উপস্থাপনা |
|---|
{ "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( |
| ক্ষেত্র | |
|---|---|
travelDuration | এই পরিবর্তনের সময় ভ্রমণের সময়কাল। সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
travelDistanceMeters | স্থানান্তরের সময় ভ্রমণ করা দূরত্ব। |
trafficInfoUnavailable | যখন |
delayDuration | এই ট্রানজিশনে প্রয়োগ করা বিলম্বের সমষ্টি। যদি থাকে, তাহলে বিলম্বটি পরবর্তী ইভেন্টের (ভ্রমণ বা যানবাহনের সমাপ্তি) ঠিক সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
breakDuration | এই ট্রানজিশনের সময়কালের বিরতির সমষ্টি, যদি থাকে। প্রতিটি বিরতির শুরুর সময় এবং সময়কাল সম্পর্কে বিশদ বিবরণ সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
waitDuration | এই পরিবর্তনের সময় অপেক্ষা করতে হয়েছে। অপেক্ষার সময়কাল অলস সময়ের সাথে মিলে যায় এবং এর মধ্যে বিরতির সময় অন্তর্ভুক্ত নয়। আরও মনে রাখবেন যে এই অপেক্ষার সময়টি বেশ কয়েকটি অসংলগ্ন বিরতিতে বিভক্ত হতে পারে। সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
totalDuration | সুবিধার জন্য প্রদত্ত স্থানান্তরের মোট সময়কাল। এটি সমান:
সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
startTime | এই পরিবর্তনের শুরুর সময়। RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
routePolyline | ট্রানজিশনের সময় অনুসরণ করা রুটের এনকোডেড পলিলাইন উপস্থাপনা। |
routeToken | শুধুমাত্র আউটপুট। একটি অস্বচ্ছ টোকেন যা নেভিগেশনের সময় রুট পুনর্গঠনের জন্য নেভিগেশন SDK- তে পাঠানো যেতে পারে, এবং, পুনরায় রুট করার ক্ষেত্রে, রুট তৈরির সময় মূল উদ্দেশ্যটি পালন করে। এই টোকেনটিকে একটি অস্বচ্ছ ব্লব হিসাবে বিবেচনা করুন। অনুরোধগুলির মধ্যে এর মান তুলনা করবেন না কারণ পরিষেবাটি একই রুট ফেরত দিলেও এর মান পরিবর্তিত হতে পারে। এই ক্ষেত্রটি কেবল তখনই পূরণ করা হবে যদি |
vehicleLoads | এই ট্রানজিশনের সময় যানবাহন লোড হয়, প্রতিটি ধরণের জন্য যা হয় এই গাড়ির প্রথম ট্রানজিশনের সময় লোডগুলি হল গাড়ির রুটের শুরুর লোড। তারপর, প্রতিটি ভিজিটের পরে, ভিজিটের |
এনকোডেডপলিলাইন
একটি পলিলাইনের এনকোডেড উপস্থাপনা। পলিলাইন এনকোডিং সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding ।
| JSON উপস্থাপনা |
|---|
{ "points": string } |
| ক্ষেত্র | |
|---|---|
points | পললাইনের এনকোডেড বিন্দুগুলি প্রতিনিধিত্বকারী স্ট্রিং। |
বিরতি
একটি বিরতির সম্পাদনের প্রতিনিধিত্বকারী ডেটা।
| JSON উপস্থাপনা |
|---|
{ "startTime": string, "duration": string } |
| ক্ষেত্র | |
|---|---|
startTime | বিরতির শুরুর সময়। RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
duration | বিরতির সময়কাল। সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
যানবাহনের পূর্ণতা
VehicleFullness হল একটি মেট্রিক যা একটি গাড়ি কতটা পূর্ণ তা গণনা করে। প্রতিটি VehicleFullness ক্ষেত্র 0 এবং 1 এর মধ্যে, একটি সীমাবদ্ধ মেট্রিক ক্ষেত্র (যেমন AggregatedMetrics.travel_distance_meters ) এবং এর সাথে সম্পর্কিত যানবাহন সীমা (যেমন Vehicle.route_distance_limit ) এর মধ্যে অনুপাত হিসাবে গণনা করা হয়, যদি এটি বিদ্যমান থাকে। অন্যথায় পূর্ণতা অনুপাত সেট না করা থাকে। যদি সীমা 0 হয়, তাহলে ক্ষেত্রটি 1 এ সেট করা হয়। দ্রষ্টব্য: যখন একটি রুট ট্র্যাফিক অসম্ভাব্যতার বিষয় হয়, তখন কিছু কাঁচা পূর্ণতা অনুপাত 1.0 ছাড়িয়ে যেতে পারে, যেমন গাড়িটি তার দূরত্ব সীমা অতিক্রম করতে পারে। এই ক্ষেত্রে, আমরা পূর্ণতার মান 1.0 এ সীমাবদ্ধ করি।
| JSON উপস্থাপনা |
|---|
{ "maxFullness": number, "distance": number, "travelDuration": number, "activeDuration": number, "maxLoad": number, "activeSpan": number } |
| ক্ষেত্র | |
|---|---|
maxFullness | এই বার্তার অন্যান্য সকল ক্ষেত্রের মধ্যে সর্বাধিক। |
distance | |
travelDuration | [AggregatedMetrics.travel_duration_seconds][] এবং |
activeDuration | [AggregatedMetrics.total_duration_seconds][] এবং |
maxLoad | সকল প্রকার [AggregatedMetrics.max_load][] এবং তাদের সংশ্লিষ্ট |
activeSpan | একটি নির্দিষ্ট গাড়ির জন্য অনুপাত (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime)। যদি হর উপস্থিত না থাকে, তাহলে এটি ( |