रूटिंग विकल्प

इस सेक्शन में रूटिंग सॉल्वर के कुछ विकल्पों के बारे में बताया गया है.

खोजने की सीमाएं

तय सीमा तक पहुंचने पर, 'सॉल्वर' सॉल्वर को खत्म कर देता है. जैसे, तय की गई समयसीमा या तय सीमा तक समाधान मिल जाना. सॉल्वर के खोज पैरामीटर से, खोज की सीमा सेट की जा सकती है. उदाहरण के लिए समयसीमा देखें.

नीचे दी गई टेबल में, खोज के लिए इस्तेमाल की जाने वाली सामान्य सीमाओं के बारे में बताया गया है.

नाम Type डिफ़ॉल्ट जानकारी
solution_limit int64 किंट66मैक्स खोज के दौरान बनाए गए समाधानों की संख्या सीमित करें.
time_limit.seconds int64 किंट66मैक्स सेकंड में बिताया गया समय सीमित करें : खोज में बिताया गया समय.
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 बचत का एल्गोरिदम (क्लार्क और राइट). ग्रैगरी रेफ़रंस क्लार्क, राइट, जे॰ डब्ल्यू॰ "सेंट्रल डिपो से लेकर कई डिलीवरी पॉइंट तक वाहनों का शेड्यूल तय करना" , ऑपरेशन रिसर्च, वॉल्यूम 12, 1964, पेज 568-581.
SWEEP स्वीप एल्गोरिदम (वर्न और हॉलीडे) रेफ़रंस नंबर रेन और ऐलन हॉलिडे कंप्यूटर शेड्यूलिंग ऑफ़ वाहन्स एक या उससे ज़्यादा डिपो से लेकर कई डिलीवरी पॉइंट पर ऑपरेशनल ऑपरेशन रिसर्च क्वाटर्ली (1970-1977), वॉल्यूम 23, नंबर 3 (सितंबर, 1972), पेज 333-344.
CHRISTOFIDES क्रिस्टॉफ़इड एल्गोरिदम (असल में क्रिस्टोफ़ाइड एल्गोरिदम का एक वैरिएंट होता है. यह एल्गोरिदम, सबसे ज़्यादा मेल खाने वाले मेल खाने वाले एल्गोरिदम के बजाय, सबसे ज़्यादा मेल खाने वाला एल्गोरिदम इस्तेमाल करता है. यह एल्गोरिदम, यात्रा करने वाले किसी मेट्रिक का अनुमान लगाने के लिए तीन-दो बातों की गारंटी नहीं देता). यह जनरल वाहन रूटिंग मॉडल पर तब तक काम करता है, जब तक उस पर कोई नोड नहीं डाला जाता. यात्रा सेल्समैन की समस्या, रिपोर्ट 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 तरीके का इस्तेमाल करके, खोज की स्थिति को दिखाया जा सकता है. किसी स्टेटस को प्रिंट करने के लिए, Python कोड को यहां देखें:

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 लोकल मिनीमा (सीएलएफ़) (सिम्युलेटेड ऐनलिंग) से बचने के लिए, ऐनिमेट किए गए ऐनलिंग का इस्तेमाल करता है.
TABU_SEARCH स्थानीय मिनीमा (cf. Tabu Search) से बचने के लिए Tabu का इस्तेमाल करता है.
GENERIC_TABU_SEARCH स्थानीय मिनीमा से बचने के लिए, हल करने के मकसद की वैल्यू पर tabu खोज का इस्तेमाल करता है.

डेटा इकट्ठा करने से जुड़े कंट्रोल

नाम Type डिफ़ॉल्ट जानकारी
use_full_propagation बूल सही रूटिंग मॉडल में पूरे प्रचार के लिए कंस्ट्रेंट का इस्तेमाल करें (सिर्फ़ लाइट प्रसार के बजाय). पूरी तरह से लागू होने के लिए, सिर्फ़ अहम जानकारी वाले खोज का इस्तेमाल करना ज़रूरी होता है. इसके अलावा, ऐसे मॉडल के लिए भी ऐसा किया जा सकता है जिनमें सेकंडरी वैरिएबल की वैल्यू को अंतिम रूप देने के लिए, ज़रूरी जानकारी दी जाए. इस सेटिंग को सही पर बदलने से, ज़्यादातर मामलों में खोज धीमी हो जाएगी और सभी मामलों में मेमोरी का इस्तेमाल बढ़ जाएगा.