टकराव 100% परिहार कार्यान्वयन


21

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

वाहन

मेरे खेल में, मेरे पास ऐसे वाहन हैं जो स्वायत्तता से चलते हैं। उन्हें 3 डी स्पेस में रखा गया है, और उनकी गति को कई चर द्वारा नियंत्रित किया जाता है जो प्रत्येक वाहनों के लिए अलग-अलग हैं। यहाँ ब्याज की एक मुख्य रूप से कर रहे हैं:

  • केवल आगे की गति।
  • एक गति जो न्यूनतम और अधिकतम के बीच भिन्न हो सकती है, लेकिन जिसका मिनट शून्य के करीब भी नहीं है।
  • एक स्टीयरिंग त्रिज्या जो गति (उच्च गति, बड़ी त्रिज्या) से निर्भर है
  • दो अधिकतम त्वरण (घटती और बढ़ती गति के लिए)

लक्ष्य

मेरा लक्ष्य कुछ प्रकार के एआई को लागू करना है जो 100% सटीक टक्कर से बचा जा सकेगा (अर्थात मुझे यकीन है कि वाहन कभी भी टकराएंगे नहीं )।

डिज़ाइन

  • हालाँकि, मैं AI "ऑनबोर्ड" होने के विचार को अधिक पसंद करूँगा (अर्थात प्रत्येक वाहन का अपना "टक्कर टालने वाला AI" है, अंततः क्वेरी करना और / या अन्य वाहनों को संदेश भेजना) मेरे लिए CA AI को लागू करना भी संभव है एक केंद्रीय स्तर (वाहनों को आदेश भेजना)।
  • ज्यादातर मामलों में, वाहन को बस किसी भी दिशा में एक-दूसरे को साफ करना होगा, लेकिन कुछ परिस्थितियों में, उन्हें टक्कर से बचना होगा और उसी लक्ष्य की ओर जाना होगा

मैंने अब तक क्या पाया और कहाँ फंस गया

इस बहुत सी साइट पर अन्य प्रश्नों के कई लिंक मिले हैं, मुझे इनमें से विशेष उपयोग के बारे में पता चला है:

  1. पूल गेंदों के बीच टकराव
  2. टकराया हुआ परिहार टालना
  3. कतार

जबकि इन तीन कड़ियों ने कई मायनों में "मेरी आँखें खोल दी", यह मेरे लिए तुरंत स्पष्ट नहीं है कि मैं अपने मामले में उस जानकारी का उपयोग कैसे करूं। विशेष लेख # 2 में केवल टकराव को रोकने के लिए "कोशिश करता है" (लेकिन टक्कर समय-समय पर होती है)। जबकि लेख # 3 टकराव को रोकने के लिए कभी-कभी वाहनों को रोकने की आवश्यकता होती है।

मैंने जो भी देखा, वह यह है कि ऊपर दिए गए टकराव से बचने वाले एल्गोरिदम वाहन की राह पर है या नहीं, यह जांचने के लिए रैखिक गति के "तत्काल प्रक्षेपण" का उपयोग करते हैं। मैं सोच रहा था कि क्या यह मेरे मामले में पर्याप्त है या यदि मुझे अपनी स्थिति को अधिक यथार्थवादी तरीके से प्रोजेक्ट करना है (उदाहरण के लिए: यदि मैं 60 ° से स्टीयरिंग 90 ° दाईं ओर हूं, तो मुझे बाकी हिस्सों के लिए अपनी स्थिति की गणना करनी चाहिए वक्र का 30 °, और फिर रैखिक गति मान)।

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

सवाल

मैं अपने "लक्ष्य" तक कैसे पहुँच सकता हूँ? गहराई से समझाना निश्चित रूप से बहुत सराहना की है, लेकिन बाहरी संसाधनों के लिंक से भी बहुत मदद मिलेगी (मुझे यकीन है कि मैं इस समस्या से पहले नहीं हूं, लेकिन शायद मैंने वेब खोजने के लिए गलत कीवर्ड का उपयोग किया है? )

आपकी मदद के लिए अग्रिम धन्यवाद!


20
हर वाहन को रोक दिया। 100% परिहार हासिल किया।
मार्टिन सोजका

2
यह काफी है अगर वे एक दूसरे के सापेक्ष रोकते हैं। यही है, वे सभी बिल्कुल उसी दिशा में चलते हैं, बिल्कुल उसी गति से। बड़ी समस्या यह है कि किसी भी एल्गोरिथ्म को प्राप्त करने के लिए यह (स्पष्ट रूप से) IMPOSSIBLE है जो इसे हर संभव कॉन्फ़िगरेशन के लिए 100% दर पर करता है। उदाहरण के लिए, अधिकतम गति के साथ एक दूसरे पर उड़ते हुए, एक दूसरे से शून्य के बराबर नहीं, न्यूनतम दूरी पर बहुत बड़े मोड़ वाले दो वाहनों पर विचार करें।
मार्टिन सोजका

12
@ एमएसी - इस एल्गोरिदम को विकसित करते समय एक बात का ध्यान रखें कि यह एक गेम है। यदि आप इस समस्या को हल करने में बहुत अधिक समय लगा रहे हैं, तो शायद आप गलत समस्या को हल करने का प्रयास कर रहे हैं। यदि आप एक कठिन स्थिति का पता लगाते हैं, तो आप वाहनों को धोखा दे सकते हैं या उनके हैंडलिंग नियमों का उल्लंघन कर सकते हैं, खासकर अगर खिलाड़ी इसे नहीं देख सकता है। सुनिश्चित करें कि जो भी वाहन हैंडलिंग नियम आपके साथ आते हैं वे उबाऊ नहीं दिखते हैं, यह सही होने की तुलना में मनोरंजक होना अधिक महत्वपूर्ण है।
फ्लिप करें

3
@ ठीक है मैं शायद A * के साथ एक वैश्विक नियंत्रक का उपयोग करूंगा। मुझे पता है कि आप इस समाधान से दूर रहना चाहते थे, लेकिन यह अधिक समझ में आता है क्योंकि इसमें वाहनों का वैश्विक दृष्टिकोण है और यह पूर्व-गणना की गणना कर सकता है। आप वाहनों को प्राथमिकता देना चाहते हैं (लक्ष्य के निकटतम व्यक्ति को उच्च प्राथमिकता मिलती है, इसलिए यह मार्ग अपरिवर्तित रहता है और अन्य लोग इसके चारों ओर पुन: मार्ग बनाते हैं)।
जोनाथन कॉनेल

6
@ फ़ीलिंग ए फ्लाइट सिमुलेटर को अभी भी एक गेम माना जाता है, फिर भी अगर आपने 'धोखा' दिया, तो यह किसी भी खिलाड़ी के लिए गेम को तोड़ देगा जिसने इसे महसूस किया।
जोनाथन कॉनेल

जवाबों:


5

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

सौभाग्य!


2
यहाँ खोज-खोज शब्द Boids है । हालांकि, मुझे नहीं लगता कि यह वही है जो ओपी देख रहा था - यह अधिक लगता है जैसे वह चाहता है कि कारें हर-किस रास्ते पर जा रही हैं।
ब्लूराजा - डैनी पफ्लुगुएफ्ट

फ्लोइंग अभी भी एआई के बारे में है जो प्रत्येक अभिभावक के साथ टकराव से बचती है।
मैट जेन्सेन

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

@TobiasGurdan यदि आपके पास एक उत्तर है जो अधिक उपयुक्त है (और मैं सहमत हूं कि आप करते हैं), तो आपको एक उत्तर बनाना चाहिए।
MichaelHouse

3

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

विधि को तंग यातायात की अनुमति देने के लिए सुधार किया जा सकता है जिससे कि मार्ग एक दूसरे पर ओवरलैप करते हैं और जहां यह निर्धारित किया जा सकता है कि यह एक टकराव का कारण नहीं होगा छोरों।


0

प्रत्येक वाहन में एक विधि रखें जहां वह अपने चारों ओर एक रेडियल खोज करता है, अगर इस त्रिज्या के अंदर कोई अन्य वाहन हैं, तो अपनी पसंद के अनुरूप फैशन में चले जाएं: 1) विपरीत वेक्टर में स्थानांतरित करें, 2) धीमा, 3) गति, आदि।

आप संयोजन भी कर सकते हैं: यदि दूसरे वाहन का वेक्टर सीधे आगे या सीधे पीछे नहीं है: दूर हटो; और अगर यह सीधे आगे है: धीमा; और: गति।


0

मेरा लक्ष्य कुछ प्रकार के एआई को लागू करना है जो 100% सटीक टक्कर से बचा जा सकेगा (यानी मुझे यकीन है कि वाहन कभी भी टकराएंगे नहीं)।

यदि यह संभव होता, तो अब तक यह दुनिया के सभी विमानों में डाल दिया गया होता।

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

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


चूंकि वह ब्रह्मांड के नियमों को डिजाइन कर रहा है, यह बिल्कुल संभव है। वास्तविक दुनिया स्पष्ट रूप से अधिक जटिल है, लेकिन मुझे यकीन है कि वास्तविक दुनिया के विमान टकराव से बचने की तकनीक का एक टन का उपयोग करते हैं ...
ब्लूराजा - डैनी पफ्लुघोफ्ट

0

यह मुझे लगता है कि भीड़ अनुकार सबसे महत्वपूर्ण विषय हो सकता है जो आप प्राप्त करने की कोशिश कर रहे हैं। UNC में GAMMA समूह के पास इस विषय पर काम का एक बड़ा निकाय है जो देखने लायक हो सकता है। उनका विवरण:

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

http://gamma.cs.unc.edu/research/crowds/


-1

मुझे नहीं लगता कि 100% बचने की कोई विधि है, लेकिन अगर आप वाहनों को पूरी दुनिया में रखते हैं, तो आप प्रत्येक वाहन को एक बॉक्स में संलग्न कर सकते हैं, जिसकी लंबाई उसकी गति पर निर्भर करती है, और उन बॉक्सों पर टकराव की जाँच करें। यदि वास्तव में एक टक्कर है, तो प्रभाव की आसन्नता (या दो बक्से के बीच टकराव के क्षेत्र) के आधार पर एक शक्ति के साथ दूर चलाएं, और धीमी गति से डॉव (लेकिन परिहार ऑपरेशन के दौरान अपने बॉक्स को समान लंबाई रखें)।

जाहिर है कि यह काम नहीं करेगा अगर वाहन पूर्ण रूप से परिचालित नहीं होते हैं, लेकिन इस मामले में कुछ भी नहीं होगा 100% परिहार (छोड़कर, जैसा कि पहले ही कहा गया है, समानांतर आंदोलन)

यहां वर्णित कुछ विधियां संभवत: उपयोगी होंगी, विशेष रूप से यह एक: अनकॉल्ड कोलिजन अवॉइडेंस स्टीयरिंग व्यवहार

सादर


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