রাউটিং বিকল্প

এই বিভাগে রাউটিং সমাধানকারীর জন্য কিছু বিকল্প বর্ণনা করা হয়েছে।

অনুসন্ধান সীমা

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

নিম্নলিখিত সারণীটি সবচেয়ে সাধারণ অনুসন্ধান সীমা বর্ণনা করে।

নাম টাইপ ডিফল্ট বর্ণনা
solution_limit int64 kint64max অনুসন্ধানের সময় উত্পন্ন সমাধানের সংখ্যা সীমাবদ্ধ করুন।
time_limit.seconds int64 kint64max সময় ব্যয় করা সেকেন্ডের মধ্যে সীমাবদ্ধ করুন: অনুসন্ধানে।
lns_time_limit.seconds int64 100 প্রতিটি স্থানীয় অনুসন্ধান প্রতিবেশীর জন্য সমাপ্তি অনুসন্ধানে ব্যয় করা সময়ের মধ্যে সেকেন্ডের মধ্যে সীমাবদ্ধ করুন৷

প্রথম সমাধান কৌশল

প্রথম সমাধান কৌশল হল যে পদ্ধতিটি সমাধানকারী একটি প্রাথমিক সমাধান খুঁজে পেতে ব্যবহার করে। নিম্নলিখিত সারণী first_solution_strategy বিকল্পগুলি তালিকাভুক্ত করে।

অপশন বর্ণনা
AUTOMATIC সমাধানকারীকে সমাধান করা মডেল অনুযায়ী কোন কৌশল ব্যবহার করতে হবে তা সনাক্ত করতে দেয়।
PATH_CHEAPEST_ARC একটি রুট "স্টার্ট" নোড থেকে শুরু করে, এটিকে নোডের সাথে সংযুক্ত করুন যা সবচেয়ে সস্তা রুট সেগমেন্ট তৈরি করে, তারপর রুটে যোগ করা শেষ নোডে পুনরাবৃত্তি করে রুটটি প্রসারিত করুন।
PATH_MOST_CONSTRAINED_ARC PATH_CHEAPEST_ARC এর অনুরূপ, কিন্তু আর্কগুলি তুলনা-ভিত্তিক নির্বাচকের সাথে মূল্যায়ন করা হয় যা প্রথমে সবচেয়ে সীমাবদ্ধ চাপের পক্ষে হবে। রাউটিং মডেলে একটি নির্বাচক নিয়োগ করতে, ArcIsMoreConstrainedThanArc() পদ্ধতিটি ব্যবহার করুন।
EVALUATOR_STRATEGY PATH_CHEAPEST_ARC এর মতোই, SetFirstSolutionEvaluator() এ পাস করা ফাংশন ব্যবহার করে আর্ক খরচ মূল্যায়ন করা হয়।
SAVINGS সঞ্চয় অ্যালগরিদম (ক্লার্ক এবং রাইট)। রেফারেন্স ক্লার্ক, জি এবং রাইট, JW "একটি কেন্দ্রীয় ডিপো থেকে একটি সংখ্যার ডেলিভারি পয়েন্টে যানবাহনের সময়সূচী" , অপারেশন রিসার্চ, ভলিউম। 12, 1964, পৃ. 568-581।
SWEEP সুইপ অ্যালগরিদম (Wren & Holliday)। রেফারেন্স Anthony Wren এবং Alan Holliday Computer Scheduling of Vehicles from one or more depots to a number of Delivery points operational Research Quarterly (1970-1977), Vol. 23, নং 3 (সেপ্টেম্বর, 1972), পৃ. 333-344।
CHRISTOFIDES ক্রিস্টোফাইডস অ্যালগরিদম (আসলে ক্রিস্টোফাইডস অ্যালগরিদমের একটি রূপ যা সর্বাধিক মিলের পরিবর্তে সর্বাধিক ম্যাচিং ব্যবহার করে, যা একজন মেট্রিক ভ্রমণকারী বিক্রয়কর্মীর অনুমানের 3/2 ফ্যাক্টরের গ্যারান্টি দেয় না)। কোন নোড সন্নিবেশ করা না হওয়া পর্যন্ত একটি রুট প্রসারিত করে জেনেরিক যানবাহন রাউটিং মডেলগুলিতে কাজ করে। রেফারেন্স নিকোস ক্রিস্টোফাইডস, ট্র্যাভেলিং সেলসম্যান সমস্যার জন্য একটি নতুন হিউরিস্টিকের সবচেয়ে খারাপ-কেস বিশ্লেষণ, রিপোর্ট 388, গ্র্যাজুয়েট স্কুল অফ ইন্ডাস্ট্রিয়াল অ্যাডমিনিস্ট্রেশন, সিএমইউ, 1976।
ALL_UNPERFORMED সমস্ত নোড নিষ্ক্রিয় করুন। নোডগুলি ঐচ্ছিক হলেই কেবল একটি সমাধান খুঁজে পায় (একটি সীমাবদ্ধ শাস্তির খরচ সহ একটি বিচ্ছিন্নতা সীমাবদ্ধতার উপাদান)।
BEST_INSERTION পুনরাবৃত্তভাবে তার সস্তা অবস্থানে সস্তা নোড সন্নিবেশ করে একটি সমাধান তৈরি করুন; সন্নিবেশের খরচ রাউটিং মডেলের বিশ্বব্যাপী খরচ ফাংশনের উপর ভিত্তি করে। 2/2012 অনুসারে, শুধুমাত্র ঐচ্ছিক নোড সহ মডেলগুলিতে কাজ করে (সসীম জরিমানা খরচ সহ)।
PARALLEL_CHEAPEST_INSERTION পুনরাবৃত্তভাবে তার সস্তা অবস্থানে সস্তা নোড সন্নিবেশ করে একটি সমাধান তৈরি করুন; সন্নিবেশ খরচ চাপ খরচ ফাংশন উপর ভিত্তি করে. BEST_INSERTION এর চেয়ে দ্রুত।
LOCAL_CHEAPEST_INSERTION প্রতিটি নোডকে তার সবচেয়ে সস্তা অবস্থানে সন্নিবেশ করে পুনরাবৃত্তিমূলকভাবে একটি সমাধান তৈরি করুন; সন্নিবেশ খরচ চাপ খরচ ফাংশন উপর ভিত্তি করে. সন্নিবেশের জন্য নির্বাচিত নোড দ্বারা PARALLEL_CHEAPEST_INSERTION থেকে পৃথক; এখানে নোডগুলি তাদের সৃষ্টির ক্রম অনুসারে বিবেচনা করা হয়। PARALLEL_CHEAPEST_INSERTION এর চেয়ে দ্রুত।
GLOBAL_CHEAPEST_ARC পুনরাবৃত্তভাবে দুটি নোড সংযোগ করে যা সবচেয়ে সস্তা রুট সেগমেন্ট তৈরি করে।
LOCAL_CHEAPEST_ARC একটি আনবাউন্ড উত্তরসূরি সহ প্রথম নোডটি নির্বাচন করুন এবং এটিকে নোডের সাথে সংযুক্ত করুন যা সবচেয়ে সস্তা রুট সেগমেন্ট তৈরি করে।
FIRST_UNBOUND_MIN_VALUE একটি আনবাউন্ড উত্তরসূরি সহ প্রথম নোডটি নির্বাচন করুন এবং এটিকে প্রথম উপলব্ধ নোডের সাথে সংযুক্ত করুন। এটি ASSIGN_MIN_VALUE (cf. constraint_solver.h) এর সাথে মিলিত CHOOSE_FIRST_UNBOUND কৌশলের সমতুল্য।

সার্চ স্ট্যাটাস

আপনি রাউটিং মডেলের status পদ্ধতি ব্যবহার করে অনুসন্ধানের স্থিতি ফেরত দিতে পারেন। একটি অনুসন্ধানের অবস্থা মুদ্রণ করার জন্য এখানে পাইথন কোড রয়েছে:

print("Solver status: ", solver.status())

এটি নিম্নলিখিত অর্থ সহ একটি পূর্ণসংখ্যা মুদ্রণ করে:

মান বর্ণনা
0 ROUTING_NOT_SOLVED : সমস্যা এখনও সমাধান হয়নি৷
1 ROUTING_SUCCESS : সমস্যা সফলভাবে সমাধান হয়েছে৷
2 ROUTING_PARTIAL_SUCCESS_LOCAL_OPTIMUM_NOT_REACHED : RoutingModel.Solve() কল করার পরে সমস্যাটি সফলভাবে সমাধান করা হয়েছে, তবে একটি স্থানীয় সর্বোত্তম পৌঁছানো যায়নি। আরো সময় ত্যাগ সমাধান উন্নত করার অনুমতি দেবে.
3 ROUTING_FAIL : সমস্যার কোন সমাধান পাওয়া যায়নি।
4 ROUTING_FAIL_TIMEOUT : একটি সমাধান খোঁজার আগে সময়সীমা পৌঁছে গেছে৷
5 ROUTING_INVALID : মডেল, মডেল প্যারামিটার বা পতাকা বৈধ নয়৷
6 ROUTING_INFEASIBLE : সমস্যা অসম্ভাব্য বলে প্রমাণিত।

স্থানীয় অনুসন্ধান বিকল্প

নিম্নলিখিত সারণী স্থানীয় অনুসন্ধান কৌশলগুলির জন্য বিকল্পগুলি তালিকাভুক্ত করে (যাকে মেটাহেরিস্টিকও বলা হয়)। এই বিকল্পগুলি সেট করার উদাহরণগুলির জন্য অনুসন্ধান কৌশল পরিবর্তন করা দেখুন।

অপশন বর্ণনা
AUTOMATIC সমাধানকারীকে মেটাহিউরিস্টিক নির্বাচন করতে দেয়।
GREEDY_DESCENT স্থানীয় ন্যূনতম না হওয়া পর্যন্ত স্থানীয় অনুসন্ধান প্রতিবেশীদের উন্নতি (খরচ-হ্রাস) গ্রহণ করে৷
GUIDED_LOCAL_SEARCH স্থানীয় মিনিমা এড়ানোর জন্য নির্দেশিত স্থানীয় অনুসন্ধান ব্যবহার করে। (cf. গাইডেড লোকাল সার্চ ) এটি সাধারণত যানবাহন রাউটিং-এর জন্য সবচেয়ে দক্ষ মেটাহিউরিস্টিক।
SIMULATED_ANNEALING স্থানীয় মিনিমা এড়ানোর জন্য সিমুলেটেড অ্যানিলিং ব্যবহার করে (cf. সিমুলেটেড অ্যানিলিং )।
TABU_SEARCH স্থানীয় মিনিমা (cf. Tabu অনুসন্ধান ) থেকে বাঁচতে ট্যাবু অনুসন্ধান ব্যবহার করে।
GENERIC_TABU_SEARCH স্থানীয় মিনিমা এড়ানোর জন্য সমাধানের উদ্দেশ্যমূলক মানের উপর ট্যাবু অনুসন্ধান ব্যবহার করে।

বংশবিস্তার নিয়ন্ত্রণ

নাম টাইপ ডিফল্ট বর্ণনা
use_full_propagation bool সত্য রাউটিং মডেলে সম্পূর্ণ প্রচার সহ সীমাবদ্ধতা ব্যবহার করুন (শুধুমাত্র হালকা প্রচারের পরিবর্তে)। গভীরতা-প্রথম অনুসন্ধান ব্যবহার করার সময় বা গৌণ ভেরিয়েবলের মান চূড়ান্ত করার জন্য শক্তিশালী প্রচারের প্রয়োজন হয় এমন মডেলগুলির জন্য সম্পূর্ণ প্রচার শুধুমাত্র প্রয়োজনীয়। এই সেটিংটিকে সত্যে পরিবর্তন করলে বেশিরভাগ ক্ষেত্রে অনুসন্ধানটি ধীর হয়ে যাবে এবং সব ক্ষেত্রেই মেমরি খরচ বৃদ্ধি পাবে৷