इस सेक्शन में रूटिंग सॉल्वर के कुछ विकल्पों के बारे में बताया गया है.
खोजने की सीमाएं
तय सीमा तक पहुंचने पर, 'सॉल्वर' सॉल्वर को खत्म कर देता है. जैसे, तय की गई समयसीमा या तय सीमा तक समाधान मिल जाना. सॉल्वर के खोज पैरामीटर से, खोज की सीमा सेट की जा सकती है. उदाहरण के लिए समयसीमा देखें.
नीचे दी गई टेबल में, खोज के लिए इस्तेमाल की जाने वाली सामान्य सीमाओं के बारे में बताया गया है.
नाम | 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
|
बूल | सही | रूटिंग मॉडल में पूरे प्रचार के लिए कंस्ट्रेंट का इस्तेमाल करें (सिर्फ़ लाइट प्रसार के बजाय). पूरी तरह से लागू होने के लिए, सिर्फ़ अहम जानकारी वाले खोज का इस्तेमाल करना ज़रूरी होता है. इसके अलावा, ऐसे मॉडल के लिए भी ऐसा किया जा सकता है जिनमें सेकंडरी वैरिएबल की वैल्यू को अंतिम रूप देने के लिए, ज़रूरी जानकारी दी जाए. इस सेटिंग को सही पर बदलने से, ज़्यादातर मामलों में खोज धीमी हो जाएगी और सभी मामलों में मेमोरी का इस्तेमाल बढ़ जाएगा. |