2008-10-28 19 views
5

मुझे समुद्र में एक दृश्य कनेक्टिंग एन स्थानों की एक निश्चित उत्पत्ति और निम्नलिखित बाधाओं के साथ निर्दिष्ट गंतव्य के साथ योजना बनाने की आवश्यकता है।
यात्रा को सभी स्थानों को छूना है।
अगर वहाँ एक से आरक्षण तो बी को एक बी
से पहले छुआ जा करने के लिए है प्रत्येक स्थान पर समय खर्च बदलता रहता है
प्रत्येक स्थान का एक काम कर खिड़की है (उस स्थान पर आरक्षण पर निर्भर करता है)। अगर जहाज खिड़की से पहले पहुंचता है तो उसे इंतजार करना पड़ता है।
नोट: "न्यूनतम स्पैनिंग पेड़" एल्गोरिदम नहीं हो सकता है क्योंकि प्रत्येक पोर्ट पर आवश्यक समय पिछले मार्ग (काम करने वाली विंडो के कारण) पर निर्भर करता है
क्या इसके लिए कोई एल्गोरिदम उपलब्ध है?एल्गोरिदम: यात्रा योजना

उत्तर

4

Ant colony optimization यह करने के लिए सबसे अच्छा ज्ञात समाधान हो रहा है। ध्यान दें कि यह NP problem है, वास्तव में यहां तक ​​कि एक एनपी-पूर्ण समस्या भी है। इसका मतलब यह है कि समाधान को सही करने के लिए यह "आसान" है, लेकिन इसे ढूंढना "कठिन" है। "इष्टतम" समाधान खोजने का एकमात्र तरीका सभी संभावित समाधानों का प्रयास करना, परिणामों की तुलना करना और सबसे अच्छा लेना होगा। बेशक यह स्वीकार्य नहीं है अगर आप उचित समय सीमा के भीतर इसे हल करना चाहते हैं।

एसीओ एल्गोरिदम इष्टतम के करीब, एक अच्छा समाधान मिलेगा। मैं करीब कहता हूं, AFAIK के रूप में यह हमेशा सबसे अच्छा खोजने की गारंटी नहीं दे सकता है। बेहतर समाधान मौजूद हो सकते हैं। हालांकि, वास्तव में सबसे अच्छा समाधान संभवतः खोजने के लिए जरूरी नहीं है, एक समाधान जो कि "बहुत अच्छा" है, वह चाल करेगा और यहां एसीओ बिल्कुल वही है जो आप खोज रहे हैं। यह उचित समय अंतराल में समाधान पा सकता है और समाधान निश्चित रूप से अच्छा होगा।

आपके मामले में आपको इसे थोड़ा संशोधित करने की आवश्यकता है। आम तौर पर यह केवल सबसे छोटा रास्ता खोजने का प्रयास करेगा, केवल पथ को ध्यान में रखेगा। आपके मामले में इसे अपनी कार्यशील विंडो, आरक्षण और समय पर किसी स्थान पर बिताए गए समय को लेना चाहिए। लेकिन ये "चींटियों की यात्रा कैसे करें" के संशोधनों में हैं, मूल एल्गोरिदम वही रहता है और अभी भी वही काम करेगा।

+0

धन्यवाद। आशाजनक लगता है। मैं इसे काम करता हूं और देखता हूं कि यह कैसा चल रहा है। किसी भी छद्म कोड के रास्ते से उपलब्ध है? –

+0

यह एक एनपी समस्या नहीं है। आप न्यूनतम समय समाधान की तलाश में हैं। सही शब्द एनपी-हार्ड है। –

5

देखें Traveling salesman problem

+0

क्या यह कार्यरत विंडो भाग का ख्याल रखता है? वर्किंग विंडो का मतलब है कि किनारे का वजन किनारे के मार्ग पर निर्भर करता है। –

2

यह एक यात्रा विक्रेता समस्या है जो एक संशोधित खिड़की की बाधा को जोड़ने में संशोधन के साथ है ... जिसका मतलब है कि इस समस्या का समाधान मानक यात्रा विक्रेता समस्या से कहीं अधिक कठिन होगा।

मेरे पास कई दृष्टिकोण हैं जो अनुमानित समाधान देने के लिए काम करते हैं।

  1. Genetic Algorithms
  2. Tabu Search
  3. Randomized Algorithm (उदाहरण के लिए, रैंडम वॉक)

, आपकी समस्या के लिए लागू होता है, तो मेरे सिर के ऊपर से मैं कहना यह नहीं है मैं नहीं जानता , लेकिन dynamic programming कभी-कभी अव्यवस्थित समस्याओं पर उपयोग किया जा सकता है।

0

इस समस्या पर बहुत सारे काम हैं। यह विभिन्न नाम

  1. यात्रा करने वाले विक्रेता (वाहन मार्ग) समस्या समय खिड़कियों और प्राथमिकता बाधाओं के साथ समस्या से चला जाता है।
  2. पिक-अप और डिलीवरी समस्या।

इस समस्या पर कई सारे शोध हैं, इसमें ऑपरेशंस रिसर्च Journals में बहुत कुछ है। यह समस्या सामान्य रूप से, एनपी-हार्ड है, इसलिए समस्या का एक सामान्य सटीक समाधान जैसा कि आपने समस्या का वर्णन किया है व्यावहारिक नहीं है, लेकिन आपकी विशिष्ट समस्या के लिए अच्छे, सटीक या अनुमानित समाधान हो सकते हैं। सबसे अच्छा एल्गोरिदम आपके डेटा का एक कार्य होगा।

  • आपका डेटासेट कितना बड़ा है। यदि "एन" अपेक्षाकृत छोटा है (30-100) तो math programming के साथ एक सटीक समाधान संभव है।
  • समय-खिड़कियां और प्राथमिकता बाधाएं कितनी तंग हैं। यदि किसी भी समय विंडो में जाने के लिए संभावित स्थानों की संख्या छोटी है, तो गतिशील प्रोग्रामिंग जैसे समाधान संभव है।
  • यदि आपको कोई विशेष मामला नहीं मिल रहा है, तो आप शायद स्थानीय-खोज पोस्ट प्रोसेसर के साथ एक ह्युरिस्टिक निर्माण एल्गोरिदम को जोड़ना चाहते हैं। एक सरल विकल्प तथाकथित GRASP अनुमानी है, जहां आप
  • एक मौजूदा निर्माण अनुमानी ले,
  • अनियमित इतना है कि कई रन आप कई समाधान दे देंगे,
  • चलाने बेतरतीब संस्करण कई बार
  • ले है परिणाम का सबसे अच्छा समाधान।
संबंधित मुद्दे