এই উদাহরণে দেখানো হয়েছে যে কীভাবে ট্রানজিশন অ্যাট্রিবিউট ব্যবহার করে সেইসব রুটকে অগ্রাধিকার দেওয়া যায় যেখানে আশেপাশের পিক-আপ ও ডেলিভারি একই গাড়ি দিয়ে একটি টাইম ব্লকে করা হয়। ট্রানজিশন অ্যাট্রিবিউট সম্পর্কে আরও জানতে, ট্রানজিশন অ্যাট্রিবিউট সহ মডেল বিজনেস লজিক দেখুন।
এই উদাহরণে:
- একই রাস্তায় কাছাকাছি জায়গায় শিপমেন্ট 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 | ১০০০ মিটার | ১০০ মিটার | 5 | ৯০০ মিটার | ০.৯ |
| A→B | ৫০ মিটার | ৫০ মিটার | ২.৫ | ০ মিটার | 0 |
| B→অন্য | ১০৩০ মিটার | ১০০ মিটার | 5 | ৯৩০ মিটার | ০.৯৩ |
| অন্যান্য→C | ১০০০ মিটার | ১০০ মিটার | 5 | ৯০০ মিটার | ০.৯ |
| C→ডিপো | ১০৮০ মিটার | ১০০ মিটার | 5 | ৯৮০ মিটার | ০.৯৮ |
| মোট | ৪৫০ মিটার | 22.5 | ৩৭১০ মিটার | মার্কিন ডলার (USD) | |
প্রতি কিলোমিটারের দুটি খরচের যোগফল হিসেবে সামগ্রিক খরচ গণনা করা হয়:
- থ্রেশহোল্ডের নিচে প্রতি কিলোমিটারের খরচ (৫০) এবং থ্রেশহোল্ডের নিচে মোট ভ্রমণ করা দূরত্ব (৪৫০ মি = ০.৪৫ কিমি) গুণ করে,
- থ্রেশহোল্ডের (১) উপরে প্রতি কিলোমিটারের খরচকে থ্রেশহোল্ডের (৩৭১০ মি = ৩.৭১ কিমি) উপরে মোট ভ্রমণ করা দূরত্ব দিয়ে গুণ করা হয়।
তাই, মোট খরচ হল ০.৪৫ * ৫০ + ৩.৭১ * ১ = ২২.৫ + ৩.৭১ = ২৬.২১।
সমাধান ২: যাওয়ার পথে A, B, C করুন, ফেরার পথে কিছু করার দরকার নেই
এই সমাধানে, সমাধান ১-এর মতো নয়, তিনটি শিপমেন্টই "গ্রুপ হিসেবে" রাস্তা দিয়ে একবার যাওয়ার সময় ডেলিভার করা হয়। অন্য ট্রাভার্সে, গাড়িটি একদমই থামে না। আবার, ৫টি ট্রানজিশন আছে, কিন্তু সেগুলির দৈর্ঘ্য এবং কম্পোজিশন আলাদা:
| পরিবর্তন | দূরত্ব | থ্রেশহোল্ডের নিচে | থ্রেশহোল্ডের উপরে | ||
|---|---|---|---|---|---|
| দূরত্ব | খরচ | দূরত্ব | খরচ | ||
| ডিপো →A | ১০০০ মিটার | ১০০ মিটার | 5 | ৯০০ মিটার | ০.৯ |
| A→B | ৫০ মিটার | ৫০ মিটার | ২.৫ | ০ মিটার | 0 |
| B→C | ৩০ মিটার | ৩০ মিটার | 1.5 | ০ মিটার | 0 |
| C→অন্য | ১০০০ মিটার | ১০০ মিটার | 5 | ৯০০ মিটার | ০.৯ |
| অন্যান্য→ডিপো | ২০৮০ মিটার | ১০০ মিটার | 5 | ১৯৮০ মিটার | ১.৯৮ |
| মোট | ৩৮০ মিটার | ১৯ | ৩৭৮০ মিটার | ৩.৭৮ | |
সমাধান ১-এর মতো একই গণনা ব্যবহার করে, সামগ্রিক খরচ হল ০.৩৮ * ৫০ +
৩.৭৮ * ১ = ১৯ + ৩.৭৮ = ২২.৭৮ এবং একটি টাইম ব্লকে সব ভিজিট সম্পূর্ণ করার খরচ
দুটি গ্রুপে সেগুলি সম্পূর্ণ করার খরচের চেয়ে কম। আপনি
DistanceLimit.cost_per_kilometer_below_soft_max
বাড়িয়ে এই প্রভাবকে আরও শক্তিশালী করতে পারেন।
থ্রেশহোল্ডের নিচে প্রতি কিলোমিটারের জন্য কম খরচ কেন কাজ করে না
আপনি যেহেতু দীর্ঘ ট্রানজিশনের চেয়ে সংক্ষিপ্ত ট্রানজিশন পছন্দ করেন, তাই দীর্ঘ ট্রানজিশনের জন্য কিলোমিটার প্রতি বেশি খরচ এবং সংক্ষিপ্ত ট্রানজিশনের জন্য কিলোমিটার প্রতি কম খরচ নির্ধারণ করতে পারেন। কিন্তু এর ফলে আসলে বিপরীত প্রভাব পড়ে: যেহেতু ট্রানজিশনের প্রথম ১০০ মিটার সবচেয়ে সস্তা, তাই অপ্টিমাইজার এই "সস্তা" মিটারগুলিকে সবচেয়ে বেশি প্রভাবের জন্য ব্যবহার করে, যার ফলে ১০০ মিটারের কাছাকাছি বা তার বেশি ট্রানজিশনগুলিকে অগ্রাধিকার দেওয়া হয়।
আপনি এই প্রভাব দুটি উদাহরণ সমাধানে দেখতে পাবেন। আপনি যদি থ্রেশহোল্ডের নিচে এবং উপরে প্রতি কিলোমিটারের খরচ অদলবদল করেন, তাহলে রুটের খরচ পরিবর্তিত হয়:
| থ্রেশহোল্ডের উপরে বেশি খরচ | থ্রেশহোল্ডের নিচে বেশি খরচ | |||
|---|---|---|---|---|
| সমাধান ১ | সমাধান ২ | সমাধান ১ | সমাধান ২ | |
| থ্রেশহোল্ডের নিচে কিমি | ০.৪৫ | ০.৩৮ | ০.৪৫ | ০.৩৮ |
| থ্রেশহোল্ডের নিচে প্রতি কিমি খরচ | ১.০০ | ১.০০ | ৫০.০০ | ৫০.০০ |
| থ্রেশহোল্ডের উপরে কিমি | মার্কিন ডলার (USD) | ৩.৭৮ | মার্কিন ডলার (USD) | ৩.৭৮ |
| থ্রেশহোল্ডের উপরে প্রতি কিমি খরচ | ৫০.০০ | ৫০.০০ | ১.০০ | ১.০০ |
| মোট মূল্য | ১৮৫.৯৫ | ১৮৯.৩৮ | ২৬.২১ | ২২.৭৮ |
প্রতিটি ভার্সনের জন্য, দুটি সমাধানের মোট খরচের মধ্যে যেটি কম সেটি বোল্ড করে হাইলাইট করা হয়েছে। আপনি দেখতে পাবেন যে থ্রেশহোল্ডের উপরে বেশি খরচ ব্যবহার করলে, যে রুটে ভিজিট গ্রুপ করা হয়েছে, সেই রুটের মোট খরচ এখন বেশি, যা আপনি যা অর্জন করতে চেয়েছিলেন তার বিপরীত।