এই পৃষ্ঠায় 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()পদ্ধতি ব্যবহার করে এটি ডিকোড করুন।
ড্রাইভারদের কাছে পাঠানো
আপনি নেভিগেশন SDK ব্যবহার করে আপনার ড্রাইভার অ্যাপ্লিকেশনে এক এক করে নেভিগেশন ইন্টিগ্রেট করতে পারেন অথবা Google Maps কনজিউমার অ্যাপে ডিপ লিঙ্ক প্রদান করতে পারেন।
- Navigation SDK: আপনার কাছে কাস্টম ড্রাইভার অ্যাপ্লিকেশন থাকলে, আপনি অ্যাপ-মধ্যস্থ এক এক করে নির্দেশিকা পাওয়ার জন্য Android-এর জন্য Navigation SDK বা
iOS ইন্টিগ্রেট করতে পারবেন।
আপনি API রেসপন্স থেকে টাস্কের তথ্য আপনার সিস্টেমে ইন্টিগ্রেট করতে পারেন
এবং নেভিগেশনের জন্য SDK ব্যবহার করতে পারেন। API রেসপন্স থেকে SDK-তে রুট পাস করতে, আপনার অনুরোধে
populateTransitionPolylines: trueসেট করুন। এটি উত্তরে প্রতিটি ট্রানজিশনের জন্য একটিrouteTokenতৈরি করে। - Fleet Engine: উন্নত ফ্লিট ম্যানেজমেন্টের জন্য, আপনি রিয়েল টাইমে রুট এক্সিকিউশন মনিটর করতে API দ্বারা তৈরি রুট প্ল্যান Fleet Engine-এ ইম্পোর্ট করতে পারেন। মূল্যায়নের জন্য API উদ্দিষ্ট পথের পলিলাইন প্রদান করলেও, Fleet Engine আপনার পরিকল্পিত ভিজিটের ক্রমকে লাইভ ভেহিকল ট্র্যাকিংয়ের সাথে পেয়ার করে।