पलायन के लिए पथ-प्रदर्शक


61

जैसा कि आप जानते हैं कि 2-आयामी वातावरण में सबसे अच्छा रास्ता खोजने के लिए जब आप बिंदु A से बिंदु B तक जाते हैं तो बहुत सारे समाधान हैं।

लेकिन मैं एक पथ की गणना कैसे करता हूं जब कोई वस्तु बिंदु A पर होती है, और बिंदु B से दूर होना चाहता है, जितना संभव हो उतना तेज़ और दूर?

पृष्ठभूमि की थोड़ी जानकारी: मेरा गेम 2 डी पर्यावरण का उपयोग करता है जो टाइल-आधारित नहीं है लेकिन इसमें फ्लोटिंग पॉइंट सटीकता है। आंदोलन वेक्टर-आधारित है। Pathfinding खेल की दुनिया को आयतों में विभाजित करके किया जाता है जो चलने योग्य या गैर-चलने योग्य होते हैं और अपने कोनों से एक ग्राफ का निर्माण करते हैं। मेरे पास पहले से ही Dijkstras एल्गोरिथ्म का उपयोग करके काम करने वाले बिंदुओं के बीच पाथफाइंडिंग है। पलायन एल्गोरिथ्म के लिए उपयोग-मामला यह है कि कुछ स्थितियों में, मेरे खेल में अभिनेताओं को किसी अन्य अभिनेता को एक खतरे के रूप में देखना चाहिए और उससे पलायन करना चाहिए।

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

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

यहाँ छवि विवरण दर्ज करें

एक और समस्या जो मुझे दिखती है वह है मानचित्र ज्यामिति में मृत सिरों के साथ। कुछ स्थितियों में किसी को एक ऐसे रास्ते के बीच चयन करना चाहिए, जो अब तेज़ी से दूर हो जाता है, लेकिन एक मृत अंत में समाप्त होता है जहां यह फंस जाएगा, या दूसरा रास्ता जिसका अर्थ होगा कि यह पहले खतरे से बहुत दूर नहीं होगा (या यहां तक ​​कि थोड़ा सा करीब) लेकिन दूसरी ओर इसमें बहुत अधिक दीर्घकालिक इनाम होगा कि यह अंततः उन्हें बहुत दूर मिलेगा। तो दूर होने का अल्पकालिक इनाम तेजी से किसी भी तरह दूर हो रही की लंबी अवधि के इनाम के खिलाफ महत्वपूर्ण किया जाना चाहिए अब तक

यहाँ छवि विवरण दर्ज करें

उन स्थितियों के लिए एक और रेटिंग की समस्या भी है जहां एक अभिनेता को एक बड़े खतरे से दूर होने के लिए एक मामूली खतरे के करीब जाने के लिए स्वीकार करना चाहिए। लेकिन पूरी तरह से सभी छोटे खतरों की अनदेखी करना भी मूर्खतापूर्ण होगा, (इसीलिए इस ग्राफिक में अभिनेता ऊपरी दाएँ क्षेत्र में मामूली खतरे से बचने के लिए अपने रास्ते से हट जाता है):

यहाँ छवि विवरण दर्ज करें

क्या इस समस्या का कोई मानक समाधान है?


8
+1 महान दृश्यों के साथ महान प्रश्न। यह वास्तव में प्रश्न को स्पष्ट करता है।
MichaelHouse

जवाबों:


24

यह सबसे अच्छा समाधान नहीं हो सकता है, लेकिन इस खेल के लिए एक पलायन एआई बनाने के लिए इसने मेरे लिए काम किया ।

चरण 1. अपने दिक्जस्त्र के एल्गोरिथ्म को ए * में बदलें । यह सिर्फ एक अनुमानी को जोड़कर सरल होना चाहिए, जो लक्ष्य पर छोड़ी गई न्यूनतम दूरी को मापता है। यह हेयुरिस्टिक एक नोड स्कोर करते हुए अब तक की गई दूरी के लिए जोड़ा जाता है। आपको यह परिवर्तन वैसे भी करना चाहिए, क्योंकि यह आपके मार्ग खोजक को काफी बढ़ावा देगा।

चरण 2. हेयुरिस्टिक की भिन्नता बनाएं, जो लक्ष्य की दूरी का अनुमान लगाने के बजाय खतरे से दूरी को मापता है और इस मूल्य को नकारता है। यह कभी भी एक लक्ष्य तक नहीं पहुंचेगा (जैसा कि कोई भी नहीं है), इसलिए आपको कुछ बिंदुओं पर खोज को समाप्त करने की आवश्यकता है, शायद विशिष्ट पुनरावृत्तियों के बाद, विशिष्ट दूरी तक पहुंचने के बाद या जब सभी संभावित मार्गों को नियंत्रित किया जाता है। यह समाधान प्रभावी रूप से एक पथ खोजक बनाता है जो दिए गए सीमा के साथ इष्टतम बचने का मार्ग ढूंढता है।


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

+1 मुझे लगता है कि यह आपके हिरन के लिए सबसे अच्छा धमाका है जहाँ तक परिणाम के लिए प्रयास किया जाता है।
MichaelHouse

33

यदि आप वास्तव में अपने अभिनेताओं को भागने के बारे में समझदार बनाना चाहते हैं, तो बस सादे दिज्क्स्त्र / ए * पाथफाइंडिंग में कटौती नहीं होगी। इसका कारण यह है कि, एक दुश्मन से इष्टतम बचने के मार्ग को खोजने के लिए, अभिनेता को यह भी विचार करने की आवश्यकता है कि दुश्मन कैसे पीछा करेगा।

निम्नलिखित एमएस पेंट आरेख को एक विशेष स्थिति का वर्णन करना चाहिए जहां दुश्मन से दूरी को अधिकतम करने के लिए केवल स्थिर पथ-निर्धारण का उपयोग करने से उप-जलरोधी परिणाम प्राप्त होंगे:

पी-आकार के चक्रव्यूह में दुश्मन से भागते हुए एक अभिनेता का चित्र

यहाँ, हरे बिंदु लाल बिंदु से भाग रहे हैं, और लेने के लिए एक मार्ग के लिए दो विकल्प हैं। दाहिने हाथ के रास्ते से नीचे जाने से यह लाल बिंदु की वर्तमान स्थिति से बहुत आगे निकल जाएगा, लेकिन अंततः हरे रंग के बिंदु को एक मृत अंत में फंसा देगा। इसके बजाय, इष्टतम रणनीति, हरे बिंदु के लिए सर्कल के चारों ओर दौड़ते रहने के लिए है, लाल बिंदु से इसके विपरीत तरफ रहने की कोशिश कर रहा है।

इस तरह की भागने की रणनीतियों को सही ढंग से खोजने के लिए, आपको एक अल्पकालिक खोज एल्गोरिथ्म की आवश्यकता होगी जैसे कि मिनिमैक्स खोज या इसके परिशोधन जैसे कि अल्फा-बीटा pringing । इस तरह के एक एल्गोरिथ्म, एक पर्याप्त खोज गहराई के साथ ऊपर के परिदृश्य पर लागू होता है, यह सही ढंग से घटाएगा कि मृत अंत पथ को दाईं ओर ले जाने से अनिवार्य रूप से कब्जा हो जाएगा, जबकि सर्कल पर रहना तब तक नहीं होगा जब तक कि हरे रंग की बिंदी नहीं निकल सकती। लाल एक)।

बेशक, यदि दोनों प्रकार के कई कलाकार हैं, तो इन सभी को अपनी रणनीति की योजना बनाने की आवश्यकता होगी - या तो अलग से या, यदि अभिनेता सहयोग कर रहे हैं, एक साथ। इस तरह के मल्टी-एक्टर पीछा / भागने की रणनीति आश्चर्यजनक रूप से जटिल बन सकती है; उदाहरण के लिए, भागते हुए अभिनेता के लिए एक संभावित रणनीति दुश्मन को अधिक लुभाने वाले लक्ष्य की ओर ले जाकर उसे विचलित करने की कोशिश करना है। बेशक, यह अन्य लक्ष्य की इष्टतम रणनीति को प्रभावित करेगा, और इसी तरह ...

व्यवहार में, आप शायद बहुत सारे एजेंटों के साथ वास्तविक समय में बहुत गहरी खोज करने में सक्षम नहीं होंगे, इसलिए आपको बहुत सारे सिद्धांतों पर भरोसा करना होगा। इन अनुमानों का चुनाव तब आपके अभिनेताओं के "मनोविज्ञान" को निर्धारित करेगा - वे कितने स्मार्ट कार्य करते हैं, वे विभिन्न रणनीतियों पर कितना ध्यान देते हैं, वे कितने सहकारी या स्वतंत्र हैं, आदि।


7

आपको पाथफ़ाइंडिंग मिल गई है, जिससे आप अच्छे गंतव्य को चुनने में समस्या को कम कर सकते हैं।

यदि मानचित्र पर बिल्कुल सुरक्षित स्थान हैं (जैसे बाहर निकलता है कि खतरा आपके अभिनेता का अनुसरण नहीं कर सकता है), तो पास के एक या अधिक लोगों को चुनें, और पता लगाएँ कि किसमें सबसे कम पथ लागत है।

यदि आपके भागने वाले अभिनेता के पास अच्छी तरह से सशस्त्र मित्र हैं, या यदि मानचित्र में खतरे शामिल हैं, जो अभिनेता के लिए प्रतिरक्षा है, लेकिन खतरा नहीं है, तो ऐसे दोस्त या खतरे के पास एक खुला स्थान चुनें और उस पर pathfind।

यदि आपका भागने वाला अभिनेता किसी अन्य अभिनेता की तुलना में तेज़ है, तो उस खतरे में भी दिलचस्पी हो सकती है, उस अन्य अभिनेता की दिशा में एक बिंदु चुनें, लेकिन उससे परे, और उस बिंदु पर पथप्रदर्शक: "मुझे भालू को पीछे छोड़ने की ज़रूरत नहीं है , मुझे केवल आपको पछाड़ना है। ”

भागने की संभावना के बिना, या खतरे को मारने या विचलित करने के लिए, आपका अभिनेता बर्बाद है, है ना? तो चलाने के लिए एक मनमाना बिंदु चुनें, और यदि आप वहां पहुंचते हैं, और खतरा अभी भी आप का पीछा कर रहा है, तो क्या हुआ: बारी और लड़ाई।


7

चूंकि एक उपयुक्त लक्ष्य-स्थिति को निर्दिष्ट करना कई स्थितियों में अच्छी तरह से मुश्किल हो सकता है, 2 डी ऑक्यूपेंसी ग्रिड-मैप्स पर आधारित निम्नलिखित दृष्टिकोण विचार करने योग्य हो सकता है। इसे आमतौर पर "मूल्य पुनरावृत्ति" के रूप में संदर्भित किया जाता है, और ढाल-वंश / चढ़ाई के साथ जोड़ा जाता है, यह एक सरल और काफी कुशल (कार्यान्वयन के आधार पर) पथ-नियोजन एल्गोरिदम देता है। इसकी सादगी के कारण, यह मोबाइल रोबोटिक्स में विशेष रूप से जाना जाता है, विशेष रूप से इनडोर वातावरण में "सरल रोबोट" के लिए। जैसा कि ऊपर उल्लेख किया गया है, यह दृष्टिकोण एक लक्ष्य-स्थिति को स्पष्ट रूप से निर्दिष्ट किए बिना प्रारंभ-स्थिति से दूर का रास्ता खोजने का साधन प्रदान करता है। ध्यान दें कि यदि उपलब्ध हो तो लक्ष्य-स्थिति वैकल्पिक रूप से निर्दिष्ट की जा सकती है। इसके अलावा, दृष्टिकोण / एल्गोरिथ्म एक चौड़ाई-पहली खोज का गठन करता है,

बाइनरी केस में, 2 डी ऑक्यूपेंसी ग्रिड-मैप एक जगह पर मौजूद ग्रिड-सेल और शून्य के लिए है। ध्यान दें कि यह अधिभोग-मूल्य सीमा [0,1] में भी निरंतर हो सकता है, मैं इसे नीचे ले जाऊंगा। किसी दिए गए ग्रिड-सेल g i का मूल्य V (g i ) है

मूल संस्करण

  1. यह मानते हुए कि ग्रिड-सेल जी 0 में स्टार्ट-पोजिशन है। V (g 0 ) = 0 सेट करें , और G 0 को एक FIFO- कतार में रखें।
  2. कतार से अगला ग्रिड-सेल g i लें ।
  3. सभी पड़ोसियों के लिए जी जे के जी मैं :
    • यदि जी जे पर कब्जा नहीं किया गया है और पहले नहीं देखा गया है:
      • V (g j ) = V (g i ) +1
      • मार्क जी जे का दौरा किया।
      • जोड़े जी जे फीफो-कतार में।
  4. यदि दी गई दूरी-सीमा अभी तक नहीं पहुंची है, तो (2.) जारी रखें, अन्यथा जारी रखें (5.)।
  5. रास्ता जी 0 से शुरू होने वाले सबसे बड़े ढाल-चढ़ाई के बाद प्राप्त किया जाता है ।

चरण 4 पर नोट्स।

  • जैसा कि ऊपर दिया गया है, चरण (4.) को अधिकतम दूरी को कवर करने की आवश्यकता है, जिसे स्पष्टता / संक्षिप्तता के कारणों के लिए उपरोक्त विवरण में छोड़ दिया गया है।
  • यदि लक्ष्य-स्थिति दी गई है, तो लक्ष्य-स्थिति तक पहुँचते ही पुनरावृत्ति रोक दी जाती है, अर्थात चरण (3.) के भाग के रूप में संसाधित / दौरा किया जाता है।
  • यह, निश्चित रूप से, पूरे ग्रिड-मैप को संसाधित करने के लिए भी संभव है, अर्थात जारी रखने के लिए जब तक कि सभी (मुक्त) ग्रिड-कोशिकाओं को संसाधित या विज़िट नहीं किया गया हो। सीमित कारक स्पष्ट रूप से इसके रिज़ॉल्यूशन के साथ ग्रिड-मैप के आकार का है।

एक्सटेंशन और आगे की टिप्पणियाँ

अद्यतन-समीकरण V (g j ) = V (g i ) +1 में डाउन-स्केलिंग V (g j ) द्वारा सभी प्रकार के अतिरिक्त उत्तराधिकार को लागू करने के लिए बहुत जगह है।या निश्चित पथ-विकल्पों के लिए मूल्य को कम करने के लिए योज्य घटक। अधिकांश, यदि सभी नहीं, तो इस तरह के संशोधनों को [0,1] से निरंतर मूल्यों के साथ ग्रिड-मैप का उपयोग करके अच्छी तरह से और उदारतापूर्वक शामिल किया जा सकता है, जो प्रभावी रूप से प्रारंभिक, बाइनरी ग्रिड-मैप के पूर्व-प्रसंस्करण कदम का गठन करता है। उदाहरण के लिए, बाधा सीमाओं के साथ 1 से 0 तक संक्रमण को जोड़ने से, "अभिनेता" को बाधाओं के अधिमानतः साफ रहने का कारण बनता है। इस तरह के ग्रिड-मैप, उदाहरण के लिए, धुंधला, भारित फैलाव, या इसी तरह से द्विआधारी संस्करण से उत्पन्न हो सकते हैं। बड़े धुंधले त्रिज्या के साथ खतरों और दुश्मनों को जोड़ना, इन के करीब आने वाले रास्तों को दंडित करता है। कोई इस तरह समग्र ग्रिड-मानचित्र पर एक प्रसार-प्रक्रिया का उपयोग कर सकता है:

V (g j ) = (1 / (N + 1)) × [V (g j ) + योग (V (g i ))]

जहां " सम " का तात्पर्य सभी पड़ोसी ग्रिड-कोशिकाओं से अधिक राशि से है। उदाहरण के लिए, एक बाइनरी मैप बनाने के बजाय, प्रारंभिक (पूर्णांक) मान खतरों की परिमाण के लिए आनुपातिक हो सकते हैं, और बाधाएं "छोटे" खतरों को पेश करती हैं। प्रसार-प्रक्रिया को लागू करने के बाद, ग्रिड-मानों को [0,1] तक बढ़ाया जाना चाहिए, और बाधाओं, खतरों और दुश्मनों द्वारा कब्जा की गई कोशिकाओं को सेट / मजबूर करना चाहिए। अन्यथा अद्यतन-समीकरण में स्केलिंग हो सकती है इच्छानुसार काम नहीं।

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

यहाँ जावा-स्क्रिप्ट (?) में चित्रण के साथ एक और संक्षिप्त विवरण दिया गया है, हालाँकि चित्रण मेरे ब्राउज़र के साथ काम नहीं करता है :(

http://www.cs.ubc.ca/~poole/demos/mdp/vi.html

योजना पर अधिक विवरण निम्न पुस्तक में पाया जा सकता है। मूल्य पुनरावृत्ति विशेष रूप से अध्याय 2, खंड 2.3.1 इष्टतम निश्चित-लंबाई योजनाओं में चर्चा की गई है।

http://planning.cs.uiuc.edu/

आशा है कि मदद करता है, तरह का संबंध है, डेरिक।


3

शिकारियों पर ध्यान कैसे दें? चलो उपयुक्त घनत्व के साथ, शिकारी की स्थिति पर सिर्फ 360 डिग्री पर किरण करें। और हम शरण नमूने हो सकते हैं। और सबसे अच्छी शरण का चयन करें।

मामला एक

मामला 2


0

जानवरों के झुंड के लिए स्टार ट्रेक ऑनलाइन में उनके पास एक दृष्टिकोण है कि एक निश्चित दिशा और एक निश्चित दूरी के बाद तेजी से, डी-स्पॉनिंग जानवरों को खुली दिशा में ले जाना है। लेकिन यह ज्यादातर झुंडों के लिए एक गौरवशाली डी-स्पॉन एनीमेशन है जिसे आप पर हमला करने से डरने वाले हैं, और वास्तविक मुकाबला करने वाले भीड़ के लिए उपयुक्त नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.