রুট প্ল্যান লাইফসাইকেল

এই পৃষ্ঠায় Route Optimization API ব্যবহার করে রুট প্ল্যানের লাইফ সাইকেল বর্ণনা করা হয়েছে। আপনার রুটিংয়ের প্রয়োজনীয়তা শনাক্ত করা থেকে শুরু করে আপনার সিস্টেমে ইন্টিগ্রেট করা রুট প্ল্যান তৈরি করা পর্যন্ত সব তথ্য এখানে দেওয়া হয়েছে।

রুট প্ল্যানের ধাপগুলি অনুসরণ করলে, আপনি নিম্নলিখিত লক্ষ্যগুলি অর্জন করতে পারবেন:

  • আপনার ফ্লিট অপারেশন ম্যাপ করুন: আপনার ফিজিক্যাল ফ্লিট, জটিল সীমাবদ্ধতা এবং ব্যবসার লক্ষ্য API-এর জন্য কোডে অনুবাদ করুন।
  • আপনার ব্যবসার জন্য রুট প্ল্যান অপ্টিমাইজ করুন: আপনার রুট প্ল্যান কীভাবে আরও উন্নত করবেন তা বুঝুন যাতে এটি আপনার লক্ষ্য পূরণ করতে পারে এবং আপনার দৈনিক অপারেশন উন্নত করতে পারে।
  • প্রোডাকশনে ডিপ্লয় করা: আপনার রুট প্ল্যানকে দৈনন্দিন অপারেশনে অন্তর্ভুক্ত করে সেটি প্রয়োগ করুন।

নিচের ডায়াগ্রামে রুট প্ল্যানের লাইফসাইকেল দেখানো হয়েছে।

নিচে টেক্সটে ব্যাখ্যা করা রুট প্ল্যানের লাইফের ফ্লো ডায়াগ্রাম

আপনি যখন প্রথমবার API ইন্টিগ্রেট করেন বা আপনার ব্যবসার প্রয়োজনীয়তা উল্লেখযোগ্যভাবে পরিবর্তিত হয় তখন রুট প্ল্যানের প্রয়োগের পর্যায় ঘটে। এতে ১ থেকে ৫ পর্যন্ত পর্যায় কভার করা হয়।

দৈনিক অপারেশন ফেজ আরও হালকা এবং রিফাইনমেন্ট ন্যূনতম। এটি ২ থেকে ৪ নম্বর ধাপ কভার করে।

রুটের লাইফসাইকেলের বিভিন্ন স্টেজ নিচে উল্লেখ করা হল:

  1. আপনার সমস্যার পরিধি নির্ধারণ করুন: API ব্যবহার শুরু করার আগে আপনার অপারেশনের সম্পূর্ণ ছবি পেতে আপনার উদ্দেশ্য, রিসোর্স, টাস্ক এবং সীমাবদ্ধতা শনাক্ত ও সাজান।
  2. আপনার ডেটা ম্যাপ করুন: আপনার ব্যবসার বাস্তবতাকে API প্যারামিটারে অনুবাদ করুন যাতে রুট প্ল্যানটি আপনার ফ্লিট কীভাবে পরিচালনা করতে হবে তা প্রতিফলিত করে।
  3. অনুরোধ তৈরি করে রুট প্ল্যান পান: API-তে আপনার ডেটা লিখুন এবং আপনার অপ্টিমাইজ করা রুট প্ল্যান পান।
  4. আপনার রুট প্ল্যান রিফাইন করুন: আপনার রুট প্ল্যান পরীক্ষা করুন এবং আপনার সীমাবদ্ধতা ও উদ্দেশ্যগুলি অ্যাডজাস্ট করে এটি পুনরাবৃত্তি করুন যাতে এটি আপনার সমস্ত প্রয়োজন কভার করে।
  5. রুট প্ল্যান ইন্টিগ্রেট করুন: অ্যাকশনেবল নেভিগেশন প্রদান করতে আপনার আগে থেকে থাকা সিস্টেমে রুট প্ল্যান কানেক্ট করুন।

আপনার সমস্যার স্কোপ নির্ধারণ করা

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

আপনার রিসোর্স ও টাস্ক শনাক্ত করুন

রুট প্ল্যান করার সময় একটি গুরুত্বপূর্ণ ধাপ হল আপনার রিসোর্স ও টাস্ক শনাক্ত করা, যা হল আপনার গাড়ি ও শিপমেন্ট।

গাড়ি শিপমেন্ট
  • সংখ্যা: আপনার কতগুলি গাড়ি আছে?
  • লোকেশন: গাড়ি কোথা থেকে শুরু করে এবং কোথায় শেষ করে?
  • সময়: গাড়ির চালকদের কাজের সময় কী?
  • ধারণ ক্ষমতা: আপনার গাড়ির সীমা কত?
  • খরচ: আপনার ফ্লিট চালানোর খরচ কত?
  • লোকেশন: পিক-আপ ও ডেলিভারি পয়েন্ট কোথায়?
  • চাহিদা: প্যাকেজের ওজন বা সাইজ কত?
  • সীমাবদ্ধতা: ডেলিভারির জন্য কি নির্দিষ্ট সময়সীমা আছে?
  • পরিষেবার সময়: ড্রাইভারকে কতক্ষণ পার্ক করতে এবং আনলোড করতে হবে?
  • প্রয়োজনীয়তা: শিপমেন্টের জন্য কি নির্দিষ্ট ধরনের গাড়ি বা ড্রাইভারের প্রয়োজন?

আপনার সীমাবদ্ধতা শনাক্ত করুন

আপনার সীমাবদ্ধতা হল আপনি কীভাবে আপনার গাড়ি ব্যবহার করতে পারেন এবং কীভাবে আপনার শিপমেন্ট ম্যানেজ করতে হবে তার সীমা এবং বিধিনিষেধ। এগুলি আপনার বেশিরভাগ অপারেশনকে নির্দেশ করে এবং একটি অপ্টিমাইজ করা রুট প্ল্যান তৈরি করার সময় গুরুত্বপূর্ণ।

বাধ্যবাধকতা সাধারণত দুটি বিভাগে পড়ে:

কঠোর বাধ্যবাধকতা সফ্ট কনস্ট্রেন্ট
এইসব সীমা লঙ্ঘন করা যাবে না। যেমন, কোনও ট্রাক তার সর্বাধিক ক্ষমতার চেয়ে বেশি ওজন বহন করতে পারে না এবং কোনও স্টোর বন্ধ হয়ে যাওয়ার পরে ড্রাইভার সেখান থেকে পিক-আপ করতে পারেন না। এগুলি হল এমন পছন্দ যা প্রয়োজন হলে লঙ্ঘন করা যেতে পারে, সাধারণত জরিমানা দিয়ে। যেমন, আপনি হয়ত ট্রাকে তার ক্ষমতার ৮০% পর্যন্ত লোড করতে বা টার্গেট সময়ের আগে ডেলিভারি করতে পছন্দ করেন, তবে আরও ভাল রুট পাওয়ার জন্য এই সীমা অতিক্রম করতে আপনার কোনও আপত্তি নেই।

সাধারণ বাধ্যবাধকতার মধ্যে এগুলি পড়ে:

  • ধারণ ক্ষমতার সীমা: কোনও গাড়ি সর্বাধিক যে ওজন, ভলিউম বা আইটেমের সংখ্যা বহন করতে পারে।
  • টাইম উইন্ডো: নির্দিষ্ট সময় স্লট যখন কোনও লোকেশন ভিজিটের জন্য খোলা থাকে, অথবা কোনও ড্রাইভারের নির্দিষ্ট শিফটের সময়।
  • খরচ: কোনও গাড়ি চালানো বা শিপমেন্ট এড়িয়ে যাওয়ার খরচ। API-এর অন্যতম প্রধান লক্ষ্য হল সাশ্রয়ী রুট প্ল্যান তৈরি করা।
  • ড্রাইভারের বিরতি: নির্দিষ্ট সংখ্যক ঘণ্টা কাজ করার পরে শ্রম আইন অনুযায়ী ড্রাইভারের বিশ্রামের সময়।

আপনার ব্যবসার উদ্দেশ্য নির্ধারণ করুন

আপনার রিসোর্স, টাস্ক ও সেগুলির সীমাবদ্ধতা নির্ধারণ করার পরে, আপনার ব্যবসার জন্য কোন মেট্রিক সবচেয়ে গুরুত্বপূর্ণ তা নির্ধারণ করার সময় এসে গেছে। এইসব উদ্দেশ্য সীমাবদ্ধতার সাথে সম্পর্কিত এবং রুট প্ল্যান করার সময় কোন বিষয় সবচেয়ে গুরুত্বপূর্ণ তা ঠিক করতে আপনাকে সাহায্য করে।

ব্যবসায়িক উদ্দেশ্যের কিছু উদাহরণ নিচে দেওয়া হল:

ফ্লিট সাইজ দূরত্ব সময় খরচ
আপনি কি কম সংখ্যক গাড়ি ব্যবহার করতে চান নাকি আপনার সবকটি গাড়ি ব্যবহার করে দিনের কাজ তাড়াতাড়ি শেষ করতে চান? আপনি কি জ্বালানি সাশ্রয় করার জন্য সবচেয়ে ছোট পথ চান নাকি দ্রুততম রুট চান যা হাইওয়ে ব্যবহার করার জন্য দীর্ঘ হতে পারে? আপনি কি মোট কাজের সময় কমাতে চান নাকি নির্দিষ্ট সময়ে পৌঁছানোকে অগ্রাধিকার দিতে চান, যার ফলে রুটে বেশি সময় লাগতে পারে? আপনি কি মজুরি এবং জ্বালানির মতো অপারেশনাল খরচ কমাতে চান, নাকি কঠোর সময়সীমা পূরণ করতে বেশি খরচ করতে চান?

আপনার ডেটা ম্যাপ করুন

আপনার ডেটা সংগ্রহ করা হয়ে গেলে, API-এর প্রপার্টির সাথে ম্যাচ করার জন্য এটি ম্যাপ করুন। এটি অপ্টিমাইজারকে এমন একটি রুট প্ল্যান প্রদান করার জন্য সমস্ত তথ্য দেয় যা আপনার ব্যবসার বাস্তবতাকে বিবেচনা করে।

আপনার সমস্যার পরিধি বিভাগে আপনি যেসব রিসোর্স, টাস্ক, সীমাবদ্ধতা ও উদ্দেশ্য ম্যাপ করেছেন, সেগুলি ম্যাপ করতে পরবর্তী টেবিলের প্যারামিটার ব্যবহার করুন।

ভেরিয়েবল ম্যাপিং

বাস্তব জগতের ধারণা API প্যারামিটার বিবরণ
ড্রাইভার বা গাড়ি model.vehicles[] আপনার ফ্লিটের একটি গাড়ি দেখায়।
ডিপোর লোকেশন vehicles[].startWaypoint
vehicles[].endWaypoint
যে লোকেশন থেকে গাড়িটি তার রুট শুরু করে এবং শেষ করে।
আপনার ব্যবসা খোলা ও বন্ধ থাকার সময় model.globalStartTime
model.globalEndTime
পুরো ফ্লিটের অপারেশনের জন্য সবচেয়ে প্রারম্ভিক শুরুর সময় এবং সবচেয়ে লেটেস্ট শেষের সময়।
টাস্ক বা প্যাকেজ model.shipments[] চাকরিকে উপস্থাপন করে। pickup, delivery বা দুটিই হতে পারে।
টাস্কের লোকেশন pickups[].arrivalWaypoint
deliveries[].arrivalWaypoint
যে ভৌগোলিক লোকেশনে চাকরিটি করতে হবে।
পরিষেবার সময় pickups[].duration
deliveries[].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 ব্যবহার করার মধ্যে নিম্নলিখিত ধাপগুলি অন্তর্ভুক্ত:

  1. আপনার এনভায়রনমেন্ট কনফিগার করুন: আপনার Google Cloud প্রোজেক্ট সেট-আপ করুন, API চালু করুন এবং যাচাইকরণ কনফিগার করুন। নির্দেশাবলীর জন্য, শুরু করুন বিকল্প দেখুন। আপনাকে শুধু একবারই এই ধাপ অনুসরণ করতে হবে।
  2. অনুরোধ পাঠান: আগের বিভাগে উল্লেখ করা ডেটা ম্যাপিং ব্যবহার করে অনুরোধের বডি তৈরি করুন। এন্ডপয়েন্ট, হেডার ও অনুরোধের ফর্ম্যাটিং সম্পর্কে জানতে, API অনুরোধ করুন দেখুন।
  3. উত্তরটি বুঝুন: 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 আপনার পরিকল্পিত ভিজিটের ক্রমকে লাইভ ভেহিকল ট্র্যাকিংয়ের সাথে পেয়ার করে।