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

এই পরিস্থিতিতে, এবং যে অনুরোধে শুধুমাত্র প্রতি ঘন্টা খরচ এবং প্রতি কিলোমিটার খরচ ব্যবহার করা হয়, তার জন্য অপ্টিমাইজ করা রুটটিতে A এবং B সকালে এবং C সন্ধ্যায় পরিচালনা করা যেতে পারে এবং সমাধানের খরচ একই হবে যদি তিনটি একই সময়ে পরিচালনা করা হয়।
একটি থ্রেশহোল্ড সহ প্রতি কিলোমিটারে খরচ
কাছাকাছি ভিজিটগুলিকে গোষ্ঠীভুক্ত করতে, আপনাকে প্রথমে একটি থ্রেশহোল্ড দূরত্ব নির্বাচন করতে হবে। এটি হল দুটি ভিজিটের মধ্যে সর্বাধিক দূরত্ব যা আপনি কাছাকাছি বলে মনে করেন। এই উদাহরণে ১০০ মিটারের থ্রেশহোল্ড ব্যবহার করা হয়েছে যা মোটামুটিভাবে একটি শহরাঞ্চলের ব্লকের সাথে মিলে যায়। আপনার ব্যবসার চাহিদা এবং আপনার ড্রাইভারদের পছন্দ অনুসারে আপনি থ্রেশহোল্ড বাড়াতে বা কমাতে পারেন।
একে অপরের ১০০ মিটারের মধ্যে কাছাকাছি পরিদর্শনগুলিকে গোষ্ঠীবদ্ধ করার জন্য, আপনি প্রতিটি ট্রানজিশনের প্রথম ১০০ মিটারের জন্য একটি উচ্চ খরচ এবং ট্রানজিশনের যেকোনো অতিরিক্ত মিটারের জন্য কম খরচ নির্ধারণ করেন। যেহেতু প্রথম ১০০ মিটার সবচেয়ে ব্যয়বহুল, তাই অপ্টিমাইজার ১০০-মিটার থ্রেশহোল্ডের চেয়ে ছোট ট্রানজিশন ব্যবহার করে সবচেয়ে বেশি সাশ্রয় করে, এমনকি যদি এর জন্য রুটের সামগ্রিক দৈর্ঘ্য বাড়ানো হয়।
খরচ সেট আপ করার জন্য, আপনাকে ShipmentModel.transition_attributes এ নিম্নলিখিত বৈশিষ্ট্য সহ একটি নতুন এন্ট্রি যোগ করতে হবে:
- সমস্ত সম্ভাব্য ট্রানজিশন মেলানোর জন্য, এমন একটি ট্যাগ বেছে নিন যা মডেলের কোথাও ব্যবহৃত হয় না, উদাহরণস্বরূপ
UNUSED_TAG। এই ট্যাগেTransitionAttributes.excluded_src_tagএবংTransitionAttributes.excluded_dst_tagসেট করুন। - থ্রেশহোল্ড দূরত্ব এবং খরচ সহ
TransitionAttributes.distance_limitসেট আপ করুন:- নির্বাচিত থ্রেশহোল্ডে
DistanceLimit.soft_max_metersসেট করুন। -
DistanceLimit.cost_per_kilometer_below_soft_maxকে থ্রেশহোল্ডের নিচে প্রতি কিলোমিটার খরচে সেট করুন। -
DistanceLimit.cost_per_kilometer_above_soft_maxকে থ্রেশহোল্ডের উপরে প্রতি কিলোমিটার খরচে সেট করুন।
- নির্বাচিত থ্রেশহোল্ডে
{
"model": {
"transitionAttributes": [
{
"excluded_dst_tag": "UNUSED_TAG",
"excluded_src_tag": "UNUSED_TAG",
"distanceLimit": {
"softMaxMeters": 100,
"costPerKilometerBelowSoftMax": 50,
"costPerKilometerAboveSoftMax": 1,
}
}
]
}
}
#unused_tag# ট্যাগটি কোনও চালান বা যানবাহনে সমস্ত সম্ভাব্য ট্রানজিশনের সাথে মেলানোর জন্য ব্যবহার করা উচিত নয়। আরও তথ্যের জন্য, সমস্ত ভিজিট অনুরোধ কীভাবে মেলাবেন তা দেখুন।
সীমার নিচে উচ্চ খরচ কীভাবে কাজ করে
এই বিভাগটি দেখায় যে কীভাবে থ্রেশহোল্ডের নীচে এবং উপরে খরচ উদাহরণের দৃশ্যকল্পের বিভিন্ন সমাধানের সামগ্রিক খরচকে প্রভাবিত করে।
সমাধান ১: সেখানে যাওয়ার পথে A, B, এবং ফেরার পথে C সম্পাদন করুন।
এই সমাধানে, চালানগুলিকে এই রাস্তার দুটি ট্রাভার্সালে বিভক্ত করা হয়। এর মধ্যে দুটি প্রথম ট্রাভার্সালে সরবরাহ করা হয়, এবং বাকিটি দ্বিতীয়টিতে সরবরাহ করা হয়। ৫টি ট্রানজিশন রয়েছে:
| রূপান্তর | দূরত্ব | সীমার নিচে | সীমার উপরে | ||
|---|---|---|---|---|---|
| দূরত্ব | খরচ | দূরত্ব | খরচ | ||
| ডিপো →A | ১০০০ মি | ১০০ মি | ৫ | ৯০০ মি | ০.৯ |
| A → B | ৫০ মি | ৫০ মি | ২.৫ | ০ মি | 0 |
| খ→অন্যান্য | ১০৩০ মি | ১০০ মি | ৫ | ৯৩০ মি | ০.৯৩ |
| অন্যান্য→C | ১০০০ মি | ১০০ মি | ৫ | ৯০০ মি | ০.৯ |
| C→ডিপো | ১০৮০ মি | ১০০ মি | ৫ | ৯৮০ মি | ০.৯৮ |
| মোট | ৪৫০ মি | ২২.৫ | ৩৭১০ মি | ৩.৭১ | |
প্রতি কিলোমিটারে দুটি খরচের যোগফল দিয়ে মোট খরচ গণনা করা হয়:
- সীমার নিচে প্রতি কিলোমিটারের খরচ (৫০) সীমার নিচে ভ্রমণ করা মোট দূরত্বের (৪৫০ মিটার = ০.৪৫ কিমি) গুণ,
- থ্রেশহোল্ডের উপরে প্রতি কিলোমিটারে খরচ (১) থ্রেশহোল্ডের উপরে ভ্রমণ করা মোট দূরত্বের (৩৭১০ মিটার = ৩.৭১ কিমি) গুণ।
মোট খরচ হল ০.৪৫ * ৫০ + ৩.৭১ * ১ = ২২.৫ + ৩.৭১ = ২৬.২১।
সমাধান ২: সেখানে যাওয়ার পথে A, B, C করুন, ফেরার পথে কিছুই করবেন না
এই সমাধানে, সমাধান ১ এর বিপরীতে, তিনটি চালানই রাস্তার এক প্রান্তে "একটি দল হিসাবে" সরবরাহ করা হয়। অন্য প্রান্তে, গাড়িটি মোটেও থামে না। আবার, ৫টি স্থানান্তর রয়েছে, তবে তাদের দৈর্ঘ্য এবং রচনা ভিন্ন:
| রূপান্তর | দূরত্ব | সীমার নিচে | সীমার উপরে | ||
|---|---|---|---|---|---|
| দূরত্ব | খরচ | দূরত্ব | খরচ | ||
| ডিপো →A | ১০০০ মি | ১০০ মি | ৫ | ৯০০ মি | ০.৯ |
| A → B | ৫০ মি | ৫০ মি | ২.৫ | ০ মি | 0 |
| খ → গ | ৩০ মি | ৩০ মি | ১.৫ | ০ মি | 0 |
| C→অন্যান্য | ১০০০ মি | ১০০ মি | ৫ | ৯০০ মি | ০.৯ |
| অন্যান্য→ডিপো | ২০৮০ মি | ১০০ মি | ৫ | ১৯৮০ মি | ১.৯৮ |
| মোট | ৩৮০ মি | ১৯ | ৩৭৮০ মি | ৩.৭৮ | |
সমাধান ১-এর মতো একই গণনা ব্যবহার করে, মোট খরচ হল 0.38 * 50 + 3.78 * 1 = 19 + 3.78 = 22.78, এবং এককালীন ব্লকে সমস্ত পরিদর্শন সম্পাদন করলে দুটি গ্রুপে সম্পাদনের তুলনায় কম খরচ হয়। আপনি DistanceLimit.cost_per_kilometer_below_soft_max বৃদ্ধি করে এই প্রভাবকে আরও শক্তিশালী করতে পারেন।
প্রতি কিলোমিটারে নির্ধারিত সীমার নিচে কম খরচ কেন কাজ করে না?
যেহেতু আপনি দীর্ঘ ট্রানজিশনের চেয়ে ছোট ট্রানজিশন পছন্দ করতে চান, তাই আপনি দীর্ঘ ট্রানজিশনের জন্য প্রতি কিলোমিটারে উচ্চ খরচ দিতে এবং ছোট ট্রানজিশনের জন্য প্রতি কিলোমিটারে কম খরচ রাখতে প্রলুব্ধ হতে পারেন। কিন্তু এর আসলে একটি বিপরীত প্রভাব রয়েছে: যেহেতু ট্রানজিশনের প্রথম ১০০ মিটার সবচেয়ে সস্তা, তাই অপ্টিমাইজার এই "সস্তা" মিটারগুলিকে সর্বাধিক প্রভাবের জন্য ব্যবহার করে ১০০ মিটারের কাছাকাছি বা তার বেশি ট্রানজিশন পছন্দ করে।
দুটি উদাহরণ সমাধানে আপনি এই প্রভাবটি দেখতে পাবেন। যদি আপনি প্রতি কিলোমিটারে খরচ থ্রেশহোল্ডের নিচে এবং উপরে অদলবদল করেন, তাহলে রুটের খরচ পরিবর্তিত হবে:
| সীমার উপরে উচ্চ খরচ | সীমার নিচে উচ্চ খরচ | |||
|---|---|---|---|---|
| সমাধান ১ | সমাধান ২ | সমাধান ১ | সমাধান ২ | |
| সীমার নিচে কিলোমিটার | ০.৪৫ | ০.৩৮ | ০.৪৫ | ০.৩৮ |
| প্রতি কিলোমিটার খরচ সীমার নিচে | ১.০০ | ১.০০ | ৫০.০০ | ৫০.০০ |
| থ্রেশহোল্ডের উপরে কিমি | ৩.৭১ | ৩.৭৮ | ৩.৭১ | ৩.৭৮ |
| প্রতি কিলোমিটার প্রতি খরচ সীমার উপরে | ৫০.০০ | ৫০.০০ | ১.০০ | ১.০০ |
| মোট খরচ | ১৮৫.৯৫ | ১৮৯.৩৮ | ২৬.২১ | ২২.৭৮ |
প্রতিটি সংস্করণের জন্য, দুটি সমাধানের মোট খরচের কম অংশটি মোটা অক্ষরে হাইলাইট করা হয়েছে। আপনি দেখতে পাচ্ছেন যে যখন আপনি থ্রেশহোল্ডের উপরে উচ্চ খরচ ব্যবহার করেন, তখন রুটের মোট খরচ এখন সেই রুটের জন্য বেশি হয় যেখানে ভিজিটগুলিকে গোষ্ঠীভুক্ত করা হয়, যা আপনি যা অর্জন করতে চেয়েছিলেন তার বিপরীত।