क्षेत्र की गश्त की योजना


14

मैं एक गेम / सिमुलेशन विकसित कर रहा हूं जहां एजेंट जमीन के लिए लड़ रहे हैं। मुझे नीचे दी गई तस्वीर में दिखाया गया है:

एक हरे और लाल टाइल वाले क्षेत्र, समान रंग के "जीव" के साथ

ये जीव चारों ओर घूम रहे हैं और जमीन के टुकड़ों पर कब्जा कर रहे हैं यदि वे स्वतंत्र हैं। इसे और अधिक दिलचस्प बनाने के लिए, मैं "गश्त" व्यवहार शुरू करना चाहता हूं, जैसे कि एजेंट वास्तव में किसी घुसपैठिए से गश्त करने के लिए अपनी जमीन पर घूम रहे हैं जो इसे लेना चाहते हैं।

तकनीकी पक्ष पर, प्रत्येक वर्ग को एक x,yस्थिति के साथ-साथ एक आयाम के रूप में दर्शाया जाता है जो इसकी लंबाई का प्रतिनिधित्व करता है। इसमें यह भी जानकारी है कि कौन वर्ग पर कब्जा करता है। सभी वर्गों एक में जमा हो जाती ArrayList

मैं गश्त व्यवहार कैसे पेश कर सकता हूं? मैं चाहता हूं कि प्रत्येक एजेंट क्षेत्र के एक निश्चित हिस्से को गश्त करने के लिए है (वे आपस में विभाजित करते हैं कि वे किन क्षेत्रों में गश्त करेंगे)। मैंने पाया मुख्य मुद्दा इस प्रकार है:

  • भूमि का क्षेत्र बहुत यादृच्छिक है, जैसा कि तस्वीर में देखा गया है। यह समझना मुश्किल है कि प्रत्येक दिशा में सीमाएं कहां हैं।
  • एजेंटों को गश्त करने के लिए क्षेत्रों को कैसे विभाजित करना चाहिए?
  • भूमि का क्षेत्र असहमतिपूर्ण हो सकता है, क्योंकि विरोधी टीम मध्य से क्षेत्र ले सकती है।

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

मुझे इस समस्या से कैसे संपर्क करना चाहिए?


1
शायद आप विचारों के लिए कुछ इमेज प्रोसेसिंग तकनीक देख सकते हैं? जब तक उनकी टीम से संबंधित सभी टाइलों को एक पैट्रोलिंग एजेंट नहीं दिया जाता है, तब तक विभिन्न क्षेत्र के विकास एल्गोरिदम प्रत्येक एजेंट से निकल सकते हैं।
क्वेटज़ालकोट

@Quetzalcoatl: अच्छा विचार, लागू करना आसान है, लेकिन इससे बहुत असमान गश्ती क्षेत्रों को बढ़ावा मिलेगा। ऊपर की छवि में हरे एजेंटों पर विचार करें। शीर्ष सही एजेंट कवर करने के लिए ~ 15 वर्ग, केंद्र में एक बस 2. होता
Junuxx

उम यह कमोबेश अगले निकटतम ब्लॉक को चुनने की तरह है जो वर्तमान ब्लॉक से उनकी टीम के अंतर्गत आता है।
18

1
वास्तव में, यह अपूर्ण है। शायद क्षेत्र के विकास के लिए बीज के रूप में एजेंटों का उपयोग करने के बजाय, बीज शुरू में बेतरतीब ढंग से लगाए जा सकते हैं (एक प्रति एजेंट)। एक बार क्षेत्र बढ़ने के बाद, शायद एक संतुलन कदम रखा जा सकता है, प्रत्येक क्षेत्र को एक वर्ग क्लस्टर जैसे नोड्स के रूप में टाइल के साथ इलाज किया जा सकता है। KNearestNeighbour या KMean या इसी तरह का अभिसरण तब तक हो सकता है, जब तक कि क्षेत्रों को मोटे तौर पर संतुलित माना जा सकता है, प्रत्येक एजेंट को तब निकटतम बीज (यूक्लिडियन दूरी?) को सौंपा जा सकता है। (मुझे लगता है कि मैं शायद इस पर काबू पा रहा हूं, इसका एक सरल तरीका है ...)
Quetzalcoatl

1
शायद प्रत्येक एजेंट मैग्नेट जैसे अन्य सभी एजेंटों को दोहराकर शुरू कर सकता है। यह एजेंटों को क्षेत्र के विभिन्न कोनों के लिए मजबूर करेगा। जब एजेंट आराम करने के लिए आते हैं, तो जमीन को विभाजित करें जैसे कि क्वेटज़ालकोट ने सुझाव दिया। क्षेत्रों को मोटे तौर पर भी होना चाहिए।
tyjkenn

जवाबों:


9

आकर्षक प्रश्न। मुझे लगता है कि आपके द्वारा संबोधित किए जाने वाले पहले मुद्दों में से एक यह है कि क्या आप चाहते हैं कि गश्त का व्यवहार "इष्टतम" गश्त या "आजीवन" गश्त करने वाला हो। मैं सिर्फ इन शब्दों को बना रहा हूं, लेकिन मेरा मतलब है:

इष्टतम : एजेंट इस तरीके से चलते हैं जो सिस्टम के लिए अपने कवरेज क्षेत्र को पूरी तरह से वितरित करते हैं।

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

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

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

  • भटकना - एजेंट घूमने और तलाश करने का प्रयास करते हैं। यह वह है जो आप भारी वजन करना चाहते हैं अन्यथा एजेंट प्रत्येक अभिभावक से एक इष्टतम पृथक्करण बिंदु खोजने की कोशिश करने जा रहे हैं और फिर "स्टे पुट"।

  • पृथक्करण (अन्य एजेंट) - एजेंट अन्य एजेंटों से दूरी बनाए रखने का प्रयास करते हैं (इसलिए वे अधिकतम जमीन को कवर करते हैं और टकराते नहीं हैं)।

  • चाहने वालों (आक्रमणकारियों) - एजेंटों का पता लगाने वाले किसी भी आक्रमणकारियों को बंद करने का प्रयास करते हैं।

मुझे लगता है कि आप गतिशील रूप से सापेक्ष भार के साथ खेलना चाहते हैं। उदाहरण के लिए, यदि कोई एजेंट किसी हमलावर का पता लगाता है, तो पृथक्करण भार गिरना चाहिए। (दूसरे शब्दों में, उन्हें केवल तब फैलाना होगा जब वे शिकार कर रहे हों, न कि जब वे किसी को ढूंढते हों।) मुझे लगता है कि यदि आप ऊपर के चार पैटर्न के लिए वजन के साथ खेलते हैं, तो आपके पास जो कुछ है वह आपके बहुत करीब होगा। ' फिर से खोज रहे हैं

ऑनलाइन "boids" को लागू करने के तरीके के बारे में काफी कुछ संसाधन हैं जो वर्णित व्यवहार पैटर्न का पालन करते हैं। मैं ओपन-सोर्स कार्यान्वयन ओपनस्टियर की सिफारिश करता हूं


2

एक aproach को प्रत्येक सेल के लिए रिकॉर्ड करना है, जब इसे "गार्ड" द्वारा अंतिम बार देखा गया था, और गार्ड लगातार पड़ोसी सेल जो भी सबसे लंबे समय तक परिकल्पित किया गया है के लिए आगे बढ़ना है।

बेशक, यह मानता है कि क्षेत्र जुड़ा हुआ है।

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

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