এই গাইড ট্রানজিশন অ্যাট্রিবিউটের সম্ভাব্য ব্যবহার দেখায়। এটি আপনাকে শেখাবে কিভাবে দুটি উদাহরণে বাস্তব-বিশ্বের পরিস্থিতি মডেল করা যায়: অপ্টিমাইজ করা রুটে গাড়ি পার্ক করার সময় অন্তর্ভুক্ত করা এবং প্রতিটি রুট একটি নির্দিষ্ট অবস্থানে যাওয়ার মাধ্যমে শেষ হয় তা নিশ্চিত করা।
আপনি শুরু করার আগে
আপনি অপ্টিমাইজ করা রুটে নির্দিষ্ট ট্রানজিশনে মডেল-নির্দিষ্ট খরচ এবং বিলম্ব যোগ করতে ট্রানজিশন অ্যাট্রিবিউট ব্যবহার করেন। ব্যবহৃত গাড়ির প্যারামিটারের উপর ভিত্তি করে মানচিত্র ডেটা থেকে গণনা করা স্থানান্তর সময়কাল এবং খরচের উপরে এই খরচ এবং বিলম্ব যোগ করা হয়।
একটি ট্রানজিশন হল রুটের সেগমেন্ট যা একটি অবস্থানকে অন্যের সাথে সংযুক্ত করে।
একটি অবস্থান একটি গাড়ির রুটে নিম্নলিখিত পয়েন্টগুলির যে কোনো একটিকে বোঝায়:
- পথের সূচনা বিন্দু।
- একটি স্টপ যেখানে একটি পিকআপ বা একটি ডেলিভারি করা হয়।
- পথের শেষ বিন্দু।
আপনি ShipmentModel.transition_attributes
তালিকায় যোগ করে মডেলের জন্য সমস্ত রূপান্তর বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করেন। তালিকার প্রতিটি উপাদান ট্রানজিশন অ্যাট্রিবিউটের একটি সেটকে সংজ্ঞায়িত করে এবং এটি শুরুর অবস্থান এবং ট্রানজিশনের শেষ অবস্থানে ট্যাগ ব্যবহার করে রুটে ট্রানজিশনের সাথে মিলে যায়। ট্রানজিশন অ্যাট্রিবিউটস সম্পর্কে আরও জানতে, TransitionAttributes
জন্য রেফারেন্স ডকুমেন্টেশন দেখুন।
মডেল বাস্তব বিশ্বের দৃশ্যকল্প
এই বিভাগটি ট্রানজিশন অ্যাট্রিবিউট ব্যবহার করে বাস্তব-বিশ্বের ব্যবসার সীমাবদ্ধতা কীভাবে বাস্তবায়ন করতে হয় তার দুটি ছোট উদাহরণ দেখায়।
পার্কিং জন্য রিজার্ভ সময়
এই পরিস্থিতিতে, চালককে অবস্থান A-তে যাওয়ার আগে গাড়িটিকে পার্ক করতে হবে। অবস্থান B কাছাকাছি, এবং ড্রাইভার উভয় দর্শনের জন্য একই পার্কিং স্থান ব্যবহার করতে পারে। ড্রাইভার যদি A-এর ঠিক পরে B তে যান, তাহলে তারা সময় বাঁচায় কারণ তাদের পার্কিং স্পট ছেড়ে আবার গাড়ি পার্ক করার দরকার নেই। রুট অপ্টিমাইজেশান এপিআই-এ, আপনি গাড়ি পার্ক করার জন্য অতিরিক্ত সময় যোগ করতে ট্রানজিশন অ্যাট্রিবিউট ব্যবহার করতে পারেন শুধুমাত্র যখন ড্রাইভার এক পার্কিং স্পট থেকে অন্য জায়গায় চলে যায়।
আপনি যখন পার্কিং সময়কে দর্শনের সময়কাল থেকে আলাদাভাবে মডেল করেন, তখন আপনি এমন রুট তৈরি করেন যেখানে একই পার্কিং ব্যবহার করে এমন ভিজিটগুলিকে গ্রুপ করা হয় কম সময় নেয়। আপনি মডেলটিকে আরও সুনির্দিষ্ট করে তোলেন এবং আপনি অপ্টিমাইজারকে এমন রুট পছন্দ করেন যেখানে ভিজিটগুলি গোষ্ঠীবদ্ধ হয়৷
একটি রুট অপ্টিমাইজেশান API অনুরোধে এটি করতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন:
শুধুমাত্র ভিজিট করার জন্য প্রয়োজনীয় সময়ের জন্য
VisitRequest.duration
ব্যবহার করুন। উদাহরণস্বরূপ, প্যাকেজ হস্তান্তর করা এবং গ্রাহকের কাছ থেকে একটি স্বাক্ষর সংগ্রহ করা।মডেলে ব্যবহৃত প্রতিটি স্বতন্ত্র পার্কিং স্পটের জন্য, একটি নতুন ট্যাগ ব্যবহার করুন যা মডেলের অন্য কিছুর জন্য ব্যবহৃত হয় না, উদাহরণস্বরূপ
PARKING_123
।নিম্নলিখিত এই ট্যাগ যোগ করুন:
এই পার্কিং স্পট ব্যবহার করে এমন সমস্ত ভিজিট অনুরোধে
VisitRequest.tags
।এই পার্কিং স্পটে গাড়িটি তার রুট শুরু করলে
Vehicle.start_tags
।এই পার্কিং স্পটে গাড়ির রুট শেষ হলে
Vehicle.end_tags
।
প্রতিটি নতুন পার্কিং ট্যাগের জন্য,
ShipmentModel.transition_attributes
এ একটি এন্ট্রি যোগ করুন যা নিম্নলিখিতগুলি করে একটি ভিন্ন পার্কিং স্পট থেকে আসার সময় পার্কিংয়ের জন্য বিলম্ব যোগ করে:TransitionAttributes.excluded_src_tag
এবংTransitionAttributes.dst_tag
PARKING_123
এ সেট করুন।গাড়ি পার্ক করার জন্য প্রয়োজনীয় সময়ের জন্য
TransitionAttributes.delay
সেট করুন।
উদাহরণস্বরূপ, যখন একটি অবস্থানের ট্যাগ হয়
PARKING_123
এবং গাড়িটি পার্ক করতে 150 সেকেন্ড সময় লাগে, তখন আপনিShipmentModel.transition_attributes
এ নিম্নলিখিত এন্ট্রি যোগ করুন:{ "excluded_src_tag": "PARKING_123", "dst_tag": "PARKING_123", "delay": "150s" }
রুটের শেষে বাধ্যতামূলক পরিষ্কার করা
এই পরিস্থিতিতে, নিম্নলিখিত অতিরিক্ত সীমাবদ্ধতার সাথে গাড়িটিকে রুটের শেষে পরিষ্কার করতে হবে:
- গাড়ির ডিপোতে ফিরে যাওয়ার আগে একটি বিশেষ পরিচ্ছন্নতার সুবিধায় পরিষ্কার করা হয়। অপ্টিমাইজ করা রুটটি তার অবস্থান এবং গাড়ির দ্বারা তৈরি পিকআপ এবং ডেলিভারির অবস্থানের উপর ভিত্তি করে সর্বোত্তম পরিষ্কারের সুবিধা ব্যবহার করে।
- পরিষ্কার করার পরে, গাড়িটি কোনও অতিরিক্ত পিকআপ বা ডেলিভারি সঞ্চালন করবে না।
- সেখানে গাড়ি চালানো এবং গাড়ি পরিষ্কার করার সময় চালকের কাজের সময়ের তুলনায় গণনা করা হয় এবং এটি অবশ্যই রুটের সর্বাধিক সময়কালের সাথে খাপ খায়।
আপনি শুধুমাত্র সেই রুটগুলিকে অনুমতি দিয়ে এই প্রয়োজনীয়তার মডেল করুন যেগুলি হয় খালি বা যাদের শেষ পরিদর্শন একটি পরিষ্কারের সুবিধা। রুট অপ্টিমাইজেশান এপিআই-এ, আপনি পরিচ্ছন্নতার সুবিধা বা রুটের সূচনা বিন্দু থেকে যেকোন অবস্থান থেকে রুটের শেষ ওয়েপয়েন্টে রূপান্তর নিষিদ্ধ করে এটি করেন:
- দুটি নতুন ট্যাগ বেছে নিন যা মডেলের কোথাও ব্যবহার করা হয় না, উদাহরণস্বরূপ
CLEANED
এবংROUTE_END
। প্রথমটি এমন অবস্থানের জন্য যেখানে যানবাহনটি পরিষ্কার হয় বা পরিষ্কার হয়ে যায় এবং পরবর্তীটি রুটের শেষের জন্য। - প্রতিটি গাড়ির জন্য, একটি নতুন ডেলিভারি-শুধু চালান যোগ করুন যা নিম্নলিখিত বৈশিষ্ট্যগুলির সাথে একটি পরিষ্কারের সুবিধার পরিদর্শনের প্রতিনিধিত্ব করে:
- প্রতিটি পরিষ্কারের সুবিধার অবস্থান এই চালানের একটি ডেলিভারি ভিজিট অনুরোধ হিসাবে প্রতিনিধিত্ব করা উচিত।
- পরিচ্ছন্নতার সুবিধা চালানের প্রতিটি ভিজিট অনুরোধের
VisitRequest.tags
এCLEANED
যোগ করুন। এটি সংকেত দেয় যে এই স্থানটি ছেড়ে যাওয়া একটি গাড়ি পরিষ্কার। মডেলের অন্যান্য ভিজিট অনুরোধে এই ট্যাগ ব্যবহার করা উচিত নয় যাতে গাড়িটি ছেড়ে যাওয়ার সময় "পরিষ্কার নয়" বলে বিবেচিত হয়। - অপ্টিমাইজারকে এই চালানটি এড়িয়ে যাওয়ার অনুমতি দিন যখন যানবাহনটি অন্যথায় অব্যবহৃত হয় তার
penalty_cost
একটি ছোট সংখ্যায় সেট করে।
প্রতিটি গাড়ির জন্য,
Vehicle.start_tags
এCLEANED
যোগ করুন। এটি কোনও পিকআপ বা ডেলিভারি করার আগে গাড়িটিকে পরিষ্কার হিসাবে চিহ্নিত করতে ব্যবহৃত হয়, ধরে নেওয়া হয় যে এটি আগের কার্যদিবসের শেষে পরিষ্কার করা হয়েছে এবং এটিকে শুরুর পথ থেকে সরাসরি তার শেষ ওয়েপয়েন্টে যাওয়ার অনুমতি দেয়। এমনকি যদি এই ধরনের রুটগুলি অনুশীলনে না ঘটে, তবে এই দৃশ্যের অনুমতি দেওয়া অপ্টিমাইজারকে অপ্টিমাইজ করা রুটগুলি আরও দক্ষতার সাথে অনুসন্ধান করতে সহায়তা করে৷প্রতিটি গাড়ির জন্য,
Vehicle.end_tags
এROUTE_END
যোগ করুন।ShipmentModel.transition_attributes
এ একটি নতুন এন্ট্রি যোগ করুন যা যানবাহনকে গাড়ির শেষ ওয়েপয়েন্টে পৌঁছাতে নিষেধ করে যখন তারা পরিষ্কার না থাকে, নিম্নলিখিত বৈশিষ্ট্য সহ:TransitionAttributes.excluded_src_tag
CLEANED
এ সেট করুন।TransitionAttributes.dst_tag
ROUTE_END
এ সেট করুন।একটি বড় মান
TransitionAttributes.delay
সেট করুন। আপনি যখন সর্বাধিক রুটের সময়কালের চেয়ে বেশি বিলম্ব করেন, আপনি কার্যকরভাবে অপ্টিমাইজারকে একটি রুটে এই রূপান্তরটি ব্যবহার করতে নিষেধ করেন।
উদাহরণ স্বরূপ, যখন মডেলের টাইম স্কেল এক কার্যদিবস হয়, তখন আপনি 24 ঘন্টা (86400 সেকেন্ড) বিলম্ব ব্যবহার করতে পারেন একটি পরিচ্ছন্নতার সুবিধা এবং রুট শুরু ছাড়া যেকোন স্থান থেকে রুটের শেষ প্রান্তে স্থানান্তর নিষিদ্ধ করতে:
{ "excluded_src_tag": "CLEANED", "dst_tag": "ROUTE_END", "delay": "86400s" }
বিলম্ব এবং খরচ মধ্যে নির্বাচন কিভাবে
বিলম্ব এবং খরচের মধ্যে পছন্দ বাস্তবায়িত ব্যবসায়িক যুক্তি এবং সীমাবদ্ধতার প্রকৃতির উপর নির্ভর করে। TransitionAttributes.delay
সেট করা কঠিন সীমাবদ্ধতা বাস্তবায়নের জন্য বা ব্যয় করা সময়ের পরিপ্রেক্ষিতে একটি ট্রেড-অফ প্রকাশ করার জন্য সর্বোত্তম। TransitionAttributes.cost
একটি অতিরিক্ত খরচ হিসাবে প্রকাশ করা নরম পছন্দ বা ট্রেড-অফ বাস্তবায়ন করার সময় আরও ভাল ফিট করে। আপনি বিলম্ব এবং খরচ নির্বিচারে একত্রিত করতে পারেন যখন সময় ব্যয় এবং খরচ উভয়ই উদ্বিগ্ন হয়।
যানবাহন পরিষ্কারের উদাহরণটি খুব দীর্ঘ বিলম্ব ব্যবহার করে, কারণ রুটের শেষে গাড়ি পরিষ্কার করা একটি কঠিন প্রয়োজন এবং দীর্ঘ বিলম্ব অপ্টিমাইজারকে প্রয়োজনীয়তা উপেক্ষা করতে বাধা দেয়। আপনি যদি শুধুমাত্র একটি খরচ সেট করেন, তাহলে অপ্টিমাইজারটি পরিষ্কার করা এড়িয়ে যেতে বেছে নিতে পারে, যদি এটি অন্য কোথাও খরচের জন্য একটি উপায় খুঁজে পায়, উদাহরণস্বরূপ যানবাহন পরিষ্কার না করে "সংরক্ষিত" সময়ের মধ্যে আরও চালান সরবরাহ করে৷
পার্কিং উদাহরণটি একটি ছোট বিলম্ব ব্যবহার করে যা গাড়ি পার্ক করার জন্য প্রয়োজনীয় অতিরিক্ত সময়ের সাথে সামঞ্জস্যপূর্ণ। আপনি বিলম্বের সংমিশ্রণে খরচও ব্যবহার করতে পারেন, যদি ড্রাইভার একটি অর্থপ্রদানকারী পার্কিং লটে থামে।
সমস্ত ভিজিট অনুরোধের সাথে মেলে এমন একটি ট্রানজিশন অ্যাট্রিবিউট কীভাবে যোগ করবেন
উপরের উদাহরণগুলি ট্রানজিশন অ্যাট্রিবিউটগুলি ব্যবহার করে যা একটি প্রদত্ত ট্যাগযুক্ত অবস্থানগুলির সাথে মেলে, বা ট্যাগ নেই এমন অবস্থানগুলির সাথে মেলে৷ কিন্তু আপনি যদি সমস্ত ট্রানজিশনে প্রযোজ্য ট্রানজিশন অ্যাট্রিবিউট যোগ করতে চান?
আপনি কেবল ট্যাগগুলি বাদ দিতে পারবেন না, কারণ প্রতিটি TransitionAttributes
বার্তায় অবশ্যই TransitionAttributes.src_tag
এবং TransitionAttributes.excluded_src_tag
এবং TransitionAttributes.dst_tag
এবং TransitionAttributes.excluded_dst_tag
এর একটি থাকতে হবে।
যাইহোক, আপনি TransitionAttributes.excluded_src_tag
বা TransitionAttributes.excluded_dst_tag
মডেলের কোথাও ব্যবহার করা হয়নি এমন একটি ট্যাগ সেট করে সমস্ত ট্যাগ মেলাতে পারেন। এটি এমন সমস্ত অবস্থানের সাথে মিলবে যেখানে এই ট্যাগ নেই, কিন্তু যেহেতু আপনি ইচ্ছাকৃতভাবে এমন একটি ট্যাগ বেছে নিয়েছেন যা কোনো অবস্থান দ্বারা ব্যবহৃত হয় না, তাই এই স্থানান্তর বৈশিষ্ট্যগুলি সমস্ত অবস্থানের সাথে মেলে৷