क्या कोई पथप्रदर्शक एल्गोरिदम है जो विभिन्न प्रकार के आंदोलन को संभालता है?


12

मैं बैटलटेक बोर्ड गेम सिम्युलेटर http://en.wikipedia.org/wiki/BattleTech के लिए एक बॉट विकसित कर रहा हूं , यह आधारित है।

बोर्ड को हेक्सागोन्स में विभाजित किया गया है, प्रत्येक में एक अलग भूभाग प्रकार और ऊंचाई है। आप एक रोबोट चलाते हैं जो अन्य रोबोट को नष्ट करने के लिए उन पर चलता है।

मैं केवल डायजेक्स्ट्रा और ए * पाथफाइंडिंग एल्गोरिदम जानता हूं, लेकिन समस्या यह है कि 3 प्रकार के आंदोलन हैं: चलना, दौड़ना और कूदना कई हेक्सागोन्स (उनमें से प्रत्येक के अपने नियम हैं)। चलना और दौड़ना लगभग एक ही है।

सबसे अच्छा रास्ता एक संयोजन या प्रत्येक आंदोलन प्रकार हो सकता है। यहाँ नक्शे का एक उदाहरण है http://megamek.info/sites/default/files/isometric_view.png

क्या आप इस जटिल पाथफाइंडिंग के लिए एक अच्छा एल्गोरिथ्म जानते हैं या प्रत्येक आंदोलन प्रकार के लिए ए * परिणाम गठबंधन करने का एक तरीका है?


मुझे लगता है कि यह अक्सर ए * के साथ एक भारित पथ के कुछ चतुर हेरफेर द्वारा नियंत्रित किया जाता है (वजन उस पथ / वर्ग की लागत हो सकता है)। उदाहरण के लिए, यदि कूदना श्रेयस्कर है, तो चलने की तुलना में इसका वजन कम होता है (जैसे। 5)।
ashes999

आंदोलन के तीन प्रकार बिल्कुल कैसे भिन्न होते हैं? क्या उन्हें जोड़ा जा सकता है (टाइल ए पर चलना, फिर बी तक दौड़ना और फिर उसी मोड़ पर सी पर कूदना)? जब हाँ, टाइल ए से टाइल बी तक पहुंचने के लिए कौन से नियम हमेशा खिलाड़ी के सबसे सस्ते तरीके का उपयोग करते हैं?
फिलिप

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

@ झिलम नहीं, आप प्रत्येक मोड़ पर केवल एक प्रकार की चाल का उपयोग कर सकते हैं।
अलेविसियो

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

जवाबों:


10

दिज्क्स्त्र और ए * दोनों एक टाइल से दूसरे टाइल के किनारों (= कनेक्शन) के लिए अलग-अलग लागत जोड़ सकते हैं। वे दो नोड्स (= टाइल) को एक से अधिक किनारे से जोड़ने की अनुमति देते हैं, प्रत्येक एक अलग लागत के साथ।

वैकल्पिक जंप-मोड का मतलब होगा कि जंप दूरी में प्रत्येक टाइल से प्रत्येक टाइल तक एक वैकल्पिक सीधा किनारा है। लेकिन क्योंकि एक mech एक मोड़ में या तो चल सकता है या कूद सकता है, इस किनारे का उपयोग करने की लागत एक पूरे मोड़ की चाल बिंदु होगी, साथ ही चालू मोड़ के शेष बिंदु जब इस मोड़ पर पहले से ही एक चाल थी।

आपके विवरण के अनुसार, पैदल चलने / दौड़ने के निर्णय से पथ की पसंद के बारे में बहुत अधिक फर्क नहीं पड़ता है, बल्कि यह एक रणनीतिक निर्णय लगता है। अभिनेता निश्चित रूप से चल सकता है जब गंतव्य को चालू मोड़ में बिना चलने का सहारा लिए पहुँचा जा सकता है। लेकिन अन्यथा कारक के कई कारक हैं, जैसे:

  • वर्तमान गर्मी का स्तर और ठंड से निपटने में सक्षम होने से पहले युद्ध में शामिल होने की संभावना
  • किसी भी शॉट की कठिनाई जिसे इस दौर में निकाल दिया जाना चाहिए
  • रणनीतिक रूप से कितना महत्वपूर्ण है कि यह जल्दी से गंतव्य तक पहुंचे

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

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

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