এই পৃষ্ঠায় Route Optimization API ব্যবহার করে রুট প্ল্যানের লাইফ সাইকেল বর্ণনা করা হয়েছে। আপনার রুটিংয়ের প্রয়োজনীয়তা শনাক্ত করা থেকে শুরু করে আপনার সিস্টেমে ইন্টিগ্রেট করা রুট প্ল্যান তৈরি করা পর্যন্ত সব তথ্য এখানে দেওয়া হয়েছে।
রুট প্ল্যানের বিভিন্ন পর্যায় অনুসরণ করলে, আপনি নিম্নলিখিত উদ্দেশ্যগুলি পূরণ করতে পারবেন:
- আপনার ফ্লিট অপারেশন ম্যাপ করুন: আপনার ফিজিক্যাল ফ্লিট, জটিল সীমাবদ্ধতা এবং ব্যবসার লক্ষ্য API-এর জন্য কোডে অনুবাদ করুন।
- আপনার ব্যবসার জন্য রুট প্ল্যান অপ্টিমাইজ করা: আপনার রুট প্ল্যানকে কীভাবে আরও উন্নত করবেন তা বুঝে নিন, যাতে এটি আপনার লক্ষ্য পূরণ করতে পারে এবং আপনার দৈনিক অপারেশন উন্নত করতে পারে।
- প্রোডাকশনে ডিপ্লয় করা: আপনার রুট প্ল্যানকে প্রতিদিনের অপারেশনে অন্তর্ভুক্ত করে বাস্তবায়িত করুন।
নিচের ডায়াগ্রাম থেকে রুট প্ল্যানের লাইফ সাইকেল সম্পর্কে জানতে পারবেন।
আপনি যখন প্রথম API ইন্টিগ্রেট করেন অথবা আপনার ব্যবসার প্রয়োজনীয়তা উল্লেখযোগ্যভাবে পরিবর্তিত হয়, তখন রুট প্ল্যানের বাস্তবায়ন পর্ব শুরু হয়। এতে ১ থেকে ৫ পর্যন্ত পর্যায় কভার করা হয়।
দৈনিক অপারেশন ফেজ আরও হালকা এবং রিফাইনমেন্ট ন্যূনতম। এটি ২ থেকে ৪ নম্বর ধাপ কভার করে।
কোনও রুটের লাইফসাইকেলের বিভিন্ন স্টেজ হল:
- আপনার সমস্যার পরিধি নির্ধারণ করুন: API ব্যবহার শুরু করার আগে আপনার অপারেশনের সম্পূর্ণ ছবি পেতে আপনার উদ্দেশ্য, রিসোর্স, টাস্ক এবং সীমাবদ্ধতা শনাক্ত ও সাজান।
- আপনার ডেটা ম্যাপ করুন: আপনার ব্যবসার বাস্তবতাকে API প্যারামিটারে অনুবাদ করুন যাতে রুট প্ল্যানটি আপনার ফ্লিট কীভাবে পরিচালনা করতে হবে তা প্রতিফলিত করে।
- অনুরোধ তৈরি করে রুট প্ল্যান পান: API-তে আপনার ডেটা লিখুন এবং আপনার অপ্টিমাইজ করা রুট প্ল্যান পান।
- আপনার রুট প্ল্যান রিফাইন করুন: আপনার রুট প্ল্যান পরীক্ষা করুন এবং আপনার সীমাবদ্ধতা এবং উদ্দেশ্যগুলি অ্যাডজাস্ট করে এটি পুনরাবৃত্তি করুন যাতে এটি আপনার সমস্ত প্রয়োজন কভার করে।
- রুট প্ল্যান ইন্টিগ্রেট করুন: অ্যাকশনেবল নেভিগেশন প্রদান করতে আপনার আগে থেকে থাকা সিস্টেমে রুট প্ল্যান কানেক্ট করুন।
আপনার সমস্যার স্কোপ
API ব্যবহার করার আগে, আপনার দৈনন্দিন অপারেশনের বিবরণ স্পষ্ট ডেটা বিভাগে সাজিয়ে নিতে হবে। এর ফলে, আপনার বর্তমান রিসোর্স ও টাস্ক কী কী, কী কী সীমাবদ্ধতা আছে এবং আপনার ফ্লিটের মাধ্যমে কী কী উদ্দেশ্য অর্জন করতে চান, সেইসব বিষয়ে স্পষ্ট ধারণা নিয়ে আপনি ইমপ্লিমেন্টেশন প্রসেস শুরু করতে পারবেন।
আপনার রিসোর্স ও টাস্ক শনাক্ত করুন
রুট প্ল্যান করার সময় একটি গুরুত্বপূর্ণ ধাপ হল আপনার রিসোর্স ও টাস্ক শনাক্ত করা, যা হল আপনার গাড়ি ও শিপমেন্ট।
| গাড়ি | শিপমেন্ট |
|---|---|
|
|
আপনার সীমাবদ্ধতা শনাক্ত করুন
আপনার সীমাবদ্ধতা হল আপনার গাড়ি কীভাবে ব্যবহার করতে পারবেন এবং কীভাবে আপনার শিপমেন্ট ম্যানেজ করতে হবে তার সীমা এবং বিধিনিষেধ। এগুলি আপনার বেশিরভাগ অপারেশনকে নির্দেশ করে এবং একটি অপ্টিমাইজ করা রুট প্ল্যান তৈরি করার সময় গুরুত্বপূর্ণ।
বাধ্যবাধকতা সাধারণত দুটি বিভাগে পড়ে:
| কঠোর বিধিনিষেধ | নরম বিধিনিষেধ |
|---|---|
| এইসব সীমা লঙ্ঘন করা যাবে না। যেমন, কোনও ট্রাক তার সর্বাধিক ক্ষমতার চেয়ে বেশি ওজন বহন করতে পারে না এবং কোনও ড্রাইভার স্টোর বন্ধ হয়ে যাওয়ার পরে পিক-আপ করতে পারেন না। | এগুলি হল এমন পছন্দ যা প্রয়োজন হলে লঙ্ঘন করা যেতে পারে, সাধারণত জরিমানা দিয়ে। যেমন, আপনি হয়ত ট্রাকে তার ক্ষমতার ৮০% পর্যন্ত লোড করতে বা টার্গেট সময়ের আগে ডেলিভারি করতে পছন্দ করেন, তবে আরও ভাল রুট পাওয়ার জন্য এই সীমা অতিক্রম করতে আপনার কোনও আপত্তি নেই। |
সাধারণ সীমাবদ্ধতার মধ্যে এগুলি পড়ে:
- ধারণ ক্ষমতার সীমা: কোনও গাড়ি সর্বাধিক যে ওজন, ভলিউম বা আইটেমের সংখ্যা বহন করতে পারে।
- টাইম উইন্ডো: নির্দিষ্ট সময় স্লট যখন কোনও লোকেশন ভিজিটের জন্য খোলা থাকে, অথবা কোনও ড্রাইভারের নির্দিষ্ট শিফটের সময়।
- খরচ: কোনও গাড়ি চালানো বা শিপমেন্ট এড়িয়ে যাওয়ার খরচ। API-এর অন্যতম প্রধান লক্ষ্য হল সাশ্রয়ী রুট প্ল্যান তৈরি করা।
- ড্রাইভারের বিরতি: শ্রম আইন অনুযায়ী নির্দিষ্ট সংখ্যক ঘণ্টা কাজ করার পরে ড্রাইভারকে সাধারণত বিশ্রাম নিতে হয়।
আপনার ব্যবসার উদ্দেশ্য নির্ধারণ করুন
আপনার রিসোর্স, টাস্ক ও সেগুলির সীমাবদ্ধতা নির্ধারণ করার পরে, আপনার ব্যবসার জন্য কোন মেট্রিক সবচেয়ে গুরুত্বপূর্ণ তা নির্ধারণ করার সময় এসেছে। এইসব উদ্দেশ্য সীমাবদ্ধতার সাথে সম্পর্কিত এবং রুট প্ল্যান করার সময় কোন বিষয় সবচেয়ে গুরুত্বপূর্ণ তা ঠিক করতে আপনাকে সাহায্য করে।
ব্যবসায়িক উদ্দেশ্যের কিছু উদাহরণ নিচে দেওয়া হল:
| ফ্লিট সাইজ | দূরত্ব | সময় | খরচ |
|---|---|---|---|
| আপনি কি ব্যবহৃত গাড়ির সংখ্যা কমাতে চান নাকি কাজ তাড়াতাড়ি শেষ করার জন্য আপনার সম্পূর্ণ ফ্লিট ব্যবহার করতে চান? | আপনি কি জ্বালানি সাশ্রয় করার জন্য সবচেয়ে ছোট পথ চান নাকি দ্রুততম রুট চান যা হাইওয়ে ব্যবহার করার জন্য দীর্ঘ হতে পারে? | আপনি কি মোট কাজের সময় কমাতে চান নাকি নির্দিষ্ট সময়ে পৌঁছানোকে অগ্রাধিকার দিতে চান, যার ফলে রুটে বেশি সময় লাগতে পারে? | আপনি কি মজুরি এবং জ্বালানির মতো অপারেশনাল খরচ কমাতে চান, নাকি কঠোর সময়সীমা পূরণ করতে বেশি খরচ করতে চান? |
আপনার ডেটা ম্যাপ করা
ডেটা সংগ্রহ করার পরে, API-এর প্রপার্টির সাথে ম্যাচ করাতে সেটি ম্যাপ করুন। এর ফলে অপ্টিমাইজার এমন রুট প্ল্যান রিটার্ন করার জন্য প্রয়োজনীয় সব তথ্য পায় যা আপনার বাস্তব ব্যবসার কথা মাথায় রাখে।
আপনার সমস্যাকে স্কোপ করা বিভাগে আপনি যে রিসোর্স, টাস্ক, সীমাবদ্ধতা ও উদ্দেশ্য ম্যাপ করেছেন, সেগুলি ম্যাপ করতে পরবর্তী টেবিলের প্যারামিটার ব্যবহার করুন।
ভেরিয়েবল ম্যাপিং
| বাস্তব জগতের ধারণা | API প্যারামিটার | বিবরণ |
|---|---|---|
| ড্রাইভার বা গাড়ি | model.vehicles[] |
আপনার ফ্লিটের একটি গাড়ি দেখায়। |
| ডিপোর লোকেশন |
vehicles[].startWaypointvehicles[].endWaypoint
|
যে লোকেশন থেকে গাড়িটি তার রুট শুরু করে এবং শেষ করে। |
| আপনার ব্যবসা খোলা ও বন্ধ থাকার সময় |
model.globalStartTimemodel.globalEndTime
|
সম্পূর্ণ ফ্লিটের অপারেশনের জন্য সবচেয়ে আগে শুরু করার সময় ও সবচেয়ে দেরিতে শেষ করার সময়। |
| টাস্ক বা প্যাকেজ | model.shipments[] |
কোনও চাকরির প্রতিনিধিত্ব করে। pickup, delivery বা দুটিই হতে পারে। |
| টাস্কের লোকেশন |
pickups[].arrivalWaypointdeliveries[].arrivalWaypoint
|
যে ভৌগোলিক লোকেশনে চাকরিটি করতে হবে। |
| পরিষেবার সময় |
pickups[].durationdeliveries[].duration
|
ভ্রমণের সময় বাদ দিয়ে, লোকেশনে টাস্ক সম্পূর্ণ করতে (যেমন, আনলোড করা) যে সময় লেগেছে। |
সীমাবদ্ধতা ম্যাপিং
| বাস্তব জগতের সীমাবদ্ধতা | API প্যারামিটার | বিবরণ |
|---|---|---|
| গাড়ির ক্ষমতা | vehicles[].loadLimits |
গাড়ির ক্ষমতার জন্য হার্ড বা সফট সীমা সেট করে। কোনও শিপমেন্টের loadDemand বাকি থাকা সীমা অতিক্রম করলে, সেটি অ্যাসাইন করা হয় না। |
| প্যাকেজের সাইজ | shipments[].loadDemands |
শিপমেন্টের জন্য প্রয়োজনীয় গাড়ির ধারণক্ষমতা। |
| গাড়ি সংক্রান্ত বিধিনিষেধ | shipments[].allowedVehicleIndices |
শিপমেন্টের উপর বিধিনিষেধ আরোপ করে যাতে এটি শুধুমাত্র নির্দিষ্ট যানবাহন বা ড্রাইভারের মাধ্যমে পিক-আপ বা ডেলিভারি করা যায়। |
| খোলা থাকার সময় | shipments[].pickups[].timeWindows বা shipments[].deliveries[].timeWindows |
কোনও লোকেশনে যাওয়ার জন্য উপলভ্য সময় সেট করে। এই সময়ের মধ্যে কোনও গাড়ি না পৌঁছালে, শিপমেন্ট বাতিল করা হয়। |
| শিফটের সময়সীমা সংক্রান্ত বিধিনিষেধ | vehicles[].routeDurationLimit |
গ্লোবাল শেষ হওয়ার সময় যাই হোক না কেন, কোনও নির্দিষ্ট ড্রাইভার কতক্ষণ কাজ করতে পারবেন (যেমন, সর্বাধিক ৮ ঘণ্টা) তার উপর একটি হার্ড বা সফট ক্যাপ সেট করে। |
| ড্রাইভারের বিরতি | vehicles[].breakRule |
বিশ্রাম সংক্রান্ত নির্দিষ্ট নিয়ম প্রয়োগ করে, যেমন নির্দিষ্ট সময় কাজ করার পরে বাধ্যতামূলক বিরতি। |
| রাস্তা সংক্রান্ত বিধিনিষেধ | vehicles[].travelMode |
ভ্রমণের মোড নির্দিষ্ট করে (যেমন, DRIVE বা BICYCLE)। এটি রুটকে আইনি রাস্তার মধ্যে সীমাবদ্ধ করে এবং ভ্রমণের সময় গণনা করার জন্য ব্যবহৃত গতি নির্ধারণ করে। |
উদ্দেশ্য ম্যাপিং
| বাস্তব জগতের উদ্দেশ্য | API প্যারামিটার | বিবরণ |
|---|---|---|
| ফ্লিট সাইজ কমানো | vehicles[].fixedCost |
গাড়ি ব্যবহার করার জন্য এককালীন খরচ প্রযোজ্য হয়। একটি উচ্চ নির্দিষ্ট খরচ একটি রুটকে মোট দূরত্ব বা কাজের সময় বাড়ানোর চেয়ে কম যানবাহন ব্যবহারকে অগ্রাধিকার দিতে বাধ্য করে। |
| দূরত্ব কমান | vehicles[].costPerKilometer |
প্রতি কিলোমিটার ভ্রমণের জন্য খরচ প্রযোজ্য হয়। জ্বালানি ও যন্ত্রাংশের ক্ষয় বাঁচানোর জন্য ছোট রুটকে অগ্রাধিকার দেয়। |
| মোট সময় কমান | vehicles[].costPerHour |
গাড়িটি যত ঘণ্টা অ্যাক্টিভ থাকে (ভ্রমণ ও অপেক্ষার সময় সহ) তার প্রতি ঘণ্টার জন্য খরচ প্রযোজ্য হয়। দ্রুত সম্পূর্ণ করার উপর জোর দেয়। |
| ড্রাইভ টাইম কমানো | vehicles[].costPerTraveledHour |
মুভ করার সময় কাটানো সময়ের জন্য নির্দিষ্টভাবে খরচ প্রযোজ্য হয়। এটি ট্রাফিকে বসে থাকা (ব্যয়বহুল) এবং স্টপে অপেক্ষা করার(সম্ভাব্য সস্তা) মধ্যে পার্থক্য করে। |
| নির্দিষ্ট কিছু টাস্ককে অগ্রাধিকার দেওয়া | shipments[].penaltyCost |
নির্দিষ্ট কোনও শিপমেন্ট বাদ দিলে খরচ প্রযোজ্য হয়। এটি বেশি হিসেবে সেট করা থাকলে, ঐচ্ছিক টাস্কের চেয়ে গুরুত্বপূর্ণ টাস্ককে অগ্রাধিকার দেওয়া হয়। |
অনুরোধ তৈরি করে উত্তর পান
রুট প্ল্যান তৈরি করতে Route Optimization API ব্যবহার করার মধ্যে নিম্নলিখিত ধাপগুলি অন্তর্ভুক্ত:
- আপনার এনভায়রনমেন্ট কনফিগার করুন: আপনার Google Cloud প্রোজেক্ট সেট-আপ করুন, API চালু করুন এবং যাচাইকরণ কনফিগার করুন। নির্দেশাবলীর জন্য, শুরু করুন বিকল্প দেখুন। আপনাকে এই ধাপটি একবারই অনুসরণ করতে হবে।
- অনুরোধ পাঠান: আগের বিভাগে সংজ্ঞায়িত ডেটা ম্যাপিং ব্যবহার করে অনুরোধের বডি তৈরি করুন। এন্ডপয়েন্ট, হেডার ও অনুরোধের ফর্ম্যাটিং সম্পর্কে জানতে, API অনুরোধ করুন দেখুন।
- উত্তরটি বুঝুন: API থেকে উত্তর পাওয়ার পরে, রুট প্ল্যান এবং প্রতিটি প্যারামিটারের অর্থ বুঝুন। উত্তর ব্যাখ্যা করুন দেখুন।
আপনার রুট প্ল্যান রিফাইন করুন
বাস্তব-জগতের লজিস্টিক্সকে API খরচ এবং সীমাবদ্ধতায় অনুবাদ করা একটি জটিল কাজ। আপনার প্রাথমিক রুট প্ল্যান আপনার ব্যবসার উদ্দেশ্য বা ড্রাইভারের প্রত্যাশার সাথে নাও মিলতে পারে। আপনার রুট প্ল্যান রিফাইন করা হল আপনার রিটার্ন করা রুট পরীক্ষা করার এবং আপনার প্যারামিটার অ্যাডজাস্ট করার পুনরাবৃত্তিমূলক প্রক্রিয়া যতক্ষণ না আপনি এমন একটি সেটআপ খুঁজে পান যা আপনার লক্ষ্য অর্জন করে।
উদ্দেশ্য ও সীমাবদ্ধতা অ্যাডজাস্ট করা
তৈরি করা রুট প্ল্যান আপনার প্রয়োজন পূরণ না করলে, আপনি নির্দিষ্ট কিছু প্যারামিটার পরিবর্তন করে অন্য ফলাফল পেতে পারেন। প্যারামিটার কঠোর বা শিথিল করলে রুট প্ল্যানে কীভাবে পরস্পরবিরোধী লক্ষ্যগুলি সমাধান করা হয় তা পরিবর্তন করে এবং প্যারামিটার শিথিল করা হল আপনার রুট প্ল্যানে ত্রুটি সৃষ্টি করছে এমন প্যারামিটারগুলি আবিষ্কার করার একটি কার্যকর উপায়।
নিচের সারণীতে সাধারণ রাউটিং সংক্রান্ত সমস্যা এবং সেগুলি সমাধান করার জন্য আপনি যেসব প্যারামিটার অ্যাডজাস্ট করতে পারেন তার তালিকা দেওয়া আছে।
| পরিস্থিতি | প্যারামিটার | সমন্বয় | বিবরণ |
|---|---|---|---|
| একটি গুরুত্বপূর্ণ শিপমেন্ট বাদ দেওয়া হয়েছে | shipments[].penaltyCost |
এর ভ্যালু বাড়ান অথবা অন্যান্য শিপমেন্টে পেনাল্টি খরচ যোগ করুন | শিপমেন্ট ঐচ্ছিক হলে, এটিকে অগ্রাধিকার দিতে এর জরিমানা খরচ বাড়ান। শিপমেন্ট বাধ্যতামূলক হলে (কোনও পেনাল্টি খরচ না থাকলে), অন্যান্য, কম গুরুত্বপূর্ণ শিপমেন্টে পেনাল্টি খরচ যোগ করুন। এটি তাদের ঐচ্ছিক করে তোলে, যা গুরুত্বপূর্ণ চালানের জন্য গাড়ির সময় এবং ক্ষমতা খালি করে। |
| সময়ের কারণে শিপমেন্ট বাদ দেওয়া হয়েছে | softStartTime / softEndTime |
সফ্ট টাইম উইন্ডো যোগ করুন | হার্ড টাইম উইন্ডো এক মিনিট দেরি হলেও টাস্ক ড্রপ করে দেয়। সফ্ট উইন্ডো ড্রাইভারকে অ্যাসাইনমেন্টে ব্যর্থ হওয়ার পরিবর্তে "খরচ" প্রদান করে সামান্য অফ-শিডিউলে পৌঁছানোর অনুমতি দেয়। |
| ওজনের কারণে শিপমেন্ট বাদ দেওয়া হয়েছে | loadLimits[].softMaxLoad ও costPerUnitAbove |
সফ্ট লোড ডিমান্ড যোগ করুন | কোনও প্যাকেজ ফেলে যাওয়ার পরিবর্তে, কোনও গাড়িকে তার আদর্শ ক্ষমতার থেকে সামান্য বেশি (জরিমানার জন্য) বহন করার অনুমতি দেয়। |
| ফ্লিট ওভারলোড হওয়ার কারণে শিপমেন্ট বাদ দেওয়া হয়েছে | model.vehicles[] বা shipments[].timeWindows |
গাড়ি যোগ করুন অথবা সময়সীমা শিথিল করুন | বর্তমান ফ্লিটের জন্য অনেক বেশি শিপমেন্ট থাকলে, বিশেষ করে সর্বাধিক চাহিদার সময়, আরও বেশি গাড়ি যোগ করুন বা কাজের চাপ ভাগ করে নিতে ডেলিভারি উইন্ডো বাড়ান। |
| রুট অনেক বেশি দীর্ঘ বা অদক্ষ | vehicles[].costPerKilometer / costPerHour |
খরচ যোগ করা বা ভ্যালু বাড়ানো | API-কে জানায় যে ভ্রমণ করা ব্যয়বহুল, তাই এটি API-কে উৎসাহিত করে যাতে এটি দূরবর্তী, বিচ্ছিন্ন স্টপগুলি বাদ দেয় এবং ফ্লিটের জন্য আরও আঁটসাঁট রুট তৈরি করে। |
| ড্রাইভারের শিফ্ট অনেক দীর্ঘ | vehicles[].routeDurationLimit বা model.vehicles[] |
সময়সীমা যোগ করুন অথবা গাড়ি ও সীমা যোগ করুন | রাস্তায় একজন ড্রাইভার মোট কত সময় (যেমন, ৮ ঘণ্টা) কাটাতে পারবেন তার একটি হার্ড ক্যাপ প্রয়োগ করে। শুধুমাত্র গাড়ি যোগ করলেই রুট ছোট হবে না, যতক্ষণ না আপনি সময়সীমাও প্রয়োগ করছেন যাতে সলভারকে আরও বড় ফ্লিট জুড়ে কাজের লোড ডিস্ট্রিবিউট করতে বাধ্য করা যায়। |
রুট প্ল্যান আপডেট করা
আপনাকে প্রায়ই বেস একই রেখে রুট প্ল্যান আপডেট করতে হয়, যেমন চালু থাকা ড্রাইভারের শিডিউলে পিক-আপ যোগ করা। এটি করতে, ইনজেকশন প্যারামিটার ব্যবহার করুন, যা API-কে আপনার আগের সমাধানের উপর ভিত্তি করে একটি শুরু প্রদান করে, এটি স্ক্র্যাচ থেকে একটি নতুন গণনা করার পরিবর্তে বিদ্যমান পরিকল্পনাটি সংশোধন করার অনুমতি দেয়।
ইনজেকশন প্যারামিটার সহ রুট প্ল্যান আপডেট করার বিভিন্ন উপায় নিচে উল্লেখ করা হল:
- আগের উত্তর থেকে রুটগুলি আপনার নতুন অনুরোধের
injectedFirstSolutionRoutesফিল্ডে পাস করুন। এটি অপ্টিমাইজেশন সার্চের গতি বাড়ায় এবং দৈনিক অপারেশন শুরু করার আগে আবার প্ল্যান করার জন্য উপযোগী, যেমন শেষ মুহূর্তের শিপমেন্ট যোগ করা। injectedSolutionConstraintফিল্ড ব্যবহার করে পরিবর্তনের ডিগ্রি কন্ট্রোল করুন। অপারেশন আগে থেকেই চলছে এমন পরিস্থিতিতে এটি কাজে লাগে, এর ফলে আপনি ড্রাইভারের বর্তমান সিকোয়েন্স সংরক্ষণ করতে পারেন অথবা প্ল্যানের যেসব অংশ আগে থেকেই এক্সিকিউট করা হয়েছে সেগুলি ঠিক করতে পারেন।interpretInjectedSolutionsUsingLabels-এর মানtrueসেট করে নিশ্চিত করুন যে আপডেট করা রুটটি সঠিক গাড়িতে অ্যাসাইন করা হয়েছে। শিপমেন্ট ও গাড়ি যোগ করা বা সরানোর সময় পরীক্ষামূলক প্রয়োগের ক্ষেত্রে এটি কাজে লাগে, কারণ এটি ইন্ডেক্সের পরিবর্তে লেবেল ব্যবহার করে রুট ম্যাচ করে। এর জন্য সব গাড়ি ও শিপমেন্টের লেবেল অনন্য হতে হবে।
আপনার রুট প্ল্যান ইন্টিগ্রেট করা
আপনার চূড়ান্ত করা রুট প্ল্যান হল একটি ডেটা অবজেক্ট যা আপনার সীমাবদ্ধতা এবং উদ্দেশ্য অনুসরণ করার সময় আপনার রিসোর্স এবং টাস্কের একটি অপ্টিমাইজ করা ম্যানেজমেন্টকে উপস্থাপন করে। আপনার সিস্টেমে এই রুট প্ল্যান ইন্টিগ্রেট করে আপনার দৈনিক অপারেশনে এটি ব্যবহার করুন। এর মধ্যে সাধারণত ফ্লিট ম্যানেজারদের জন্য আপনার রুট প্ল্যান ভিজ্যুয়ালাইজ করা এবং ড্রাইভারদের এক এক করে নির্দেশাবলী পাঠানো অন্তর্ভুক্ত থাকে।
ভিজুয়ালাইজেশান
ফ্লিট ম্যানেজারদের আপনার রুট প্ল্যান যাচাই ও মনিটর করার অনুমতি দিতে, আপনি নিম্নলিখিত উপায়ে আপনার রুট প্ল্যান ভিজ্যুয়ালাইজ করতে পারেন:
ফ্লিট ম্যানেজারকে আপনার রুট প্ল্যান যাচাই ও মনিটর করার অনুমতি দিতে, আপনি এটি ড্যাশবোর্ড ম্যাপে দেখাতে পারেন। আপনার বর্তমান ডেভেলপমেন্ট স্টেজের উপর নির্ভর করে, আপনি নিম্নলিখিত উপায়ে আপনার রুট প্ল্যান দেখতে পারেন:
- কোড ছাড়াই এক্সপ্লোর করুন: রুট অপ্টিমাইজেশন অ্যাপ ব্যবহার করে আপনি দেখতে পারেন যে কীভাবে API আপনার ডেটাকে ম্যাপে ফিজিক্যাল পাথে ট্রান্সলেট করে। এই ওয়েব অ্যাপ্লিকেশন একটি এক্সপ্লোরেটরি টুল হিসেবে কাজ করে যা আপনাকে কোনও কোড লেখার আগে দৃশ্যপট তৈরি করতে, বাধ্যতামূলক প্যারামিটার টিউন করতে এবং আপনার ফলাফল সংক্রান্ত রুট প্ল্যান ভিজ্যুয়ালি রেন্ডার করতে দেয়।
- ভিজিটের ক্রম দেখানো: আপনার সিস্টেমে অপ্টিমাইজেশন ও ডিসপ্যাচ প্ল্যান মূল্যায়ন করার জন্য, ম্যাপে নম্বরযুক্ত পয়েন্ট হিসেবে ভিজিটের ক্রম দেখাতে পারবেন। এটি করতে, API
উত্তরের প্রতিটি রুটের মধ্যে
visitsঅ্যারেটি খুঁজে বের করুন। এই অ্যারের আইটেমগুলি ঠিক সেইভাবে সাজানো হয়েছে যেভাবে ড্রাইভারের সেগুলি সম্পাদন করা উচিত। আপনি এই তালিকাটি পুনরাবৃত্তি করতে পারেন, প্রতিটি স্টপের জন্য লোকেশন কোঅর্ডিনেট পেতেshipmentIndexব্যবহার করতে পারেন এবং আপনার ম্যাপিং লাইব্রেরি ব্যবহার করে তালিকায় তাদের ক্রম অনুসারে ম্যাপে সংখ্যাযুক্ত মার্কার রেন্ডার করতে পারেন। - ফিজিক্যাল রুট আঁকা: অপ্টিমাইজার কেন একটি নির্দিষ্ট ক্রম বেছে নিয়েছে তা বোঝার জন্য আপনি ম্যাপে সঠিক পরিকল্পিত পথটি দেখতে পারেন। এই পলিলাইন
পরিকল্পনা ও মূল্যায়নের জন্য অভিপ্রেত পাথ দেখায়, ড্রাইভারের নেওয়া রিয়েল-টাইম
রুট নয়। প্রতিটি রুটের জন্য
encodedPolylineফিল্ড পেতে আপনার অনুরোধেpopulatePolylines: trueসেট করুন এবং Maps JavaScript API থেকেgoogle.maps.geometry.encoding.decodePath()পদ্ধতি ব্যবহার করে এটি ডিকোড করুন।
ড্রাইভারদের কাছে ডিসপ্যাচ করা
আপনি Navigation SDK ব্যবহার করে আপনার ড্রাইভার অ্যাপ্লিকেশনে ধাপে ধাপে নেভিগেশন ইন্টিগ্রেট করতে পারেন অথবা Google Maps গ্রাহক অ্যাপে ডিপ লিঙ্ক প্রদান করতে পারেন।
- Navigation SDK: আপনার কাছে কাস্টম ড্রাইভার অ্যাপ্লিকেশন থাকলে, আপনি অ্যাপ-মধ্যস্থ এক এক করে নির্দেশনার জন্য
Android-এর জন্য Navigation SDK বা
iOS ইন্টিগ্রেট করতে পারবেন।
আপনি API রেসপন্স থেকে টাস্কের তথ্য আপনার সিস্টেমে ইন্টিগ্রেট করতে পারেন
এবং নেভিগেশনের জন্য SDK ব্যবহার করতে পারেন। API উত্তর থেকে SDK-তে রুট পাস করতে, আপনার অনুরোধে
populateTransitionPolylines: trueসেট করুন। এটি উত্তরে প্রতিটি ট্রানজিশনের জন্য একটিrouteTokenতৈরি করে। - Fleet Engine: উন্নত ফ্লিট ম্যানেজমেন্টের জন্য, আপনি API দ্বারা তৈরি রুট প্ল্যান Fleet Engine-এ ইমপোর্ট করতে পারেন যাতে রিয়েল টাইমে রুট এক্সিকিউশন মনিটর করা যায়। মূল্যায়নের জন্য API উদ্দিষ্ট পথের পলিলাইন প্রদান করলেও, Fleet Engine আপনার পরিকল্পিত ভিজিটের ক্রমকে লাইভ ভেহিকল ট্র্যাকিংয়ের সাথে পেয়ার করে।