अंकों की एन राशि के लिए त्रिपक्षीय एल्गोरिथ्म


27

मुझे उस एल्गोरिथ्म को खोजने की आवश्यकता है जो उस आकृति से सेंटीमीटर (उर्फ गुरुत्वाकर्षण केंद्र, ज्यामितीय केंद्र, द्रव्यमान केंद्र) की गणना कर सकता है जहां सर्किल T1, T2, T3, T4, T5, .., Tn इंटरसेक्ट और लाइन आर की लंबाई सेंटीरोइड के लिए है। उल्लिखित आकृति का सबसे दूर का कोना

निम्नलिखित जानकारी दी गई है:

  • T1 अक्षांश = 56.999883 देशांतर = 24.144473 त्रिज्या = 943
  • T2 अक्षांश = 57.005352 देशांतर = 24.151168 त्रिज्या = 857
  • T3 अक्षांश = 57.005352 देशांतर = 24.163356 त्रिज्या = 714
  • T4 अक्षांश = 56.999042 देशांतर = 24.168506 त्रिज्या = 714
  • T5 अक्षांश = 56.994226 देशांतर = 24.15709 त्रिज्या = 771

परिणाम इस तरह दिखना चाहिए: A अक्षांश = XX.XXXXXXX देशांतर = XX.XXXXXXX त्रिज्या = XX

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

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

यहाँ और यहाँ कुछ इसी तरह के प्रश्न हैं , लेकिन उनमें से कोई भी वास्तव में मेरे प्रश्न का उत्तर नहीं देता है।


आप किस भाषा में काम कर रहे हैं?
वुल्फऑर्ड्रेड

ज्यादातर PHP, जावास्क्रिप्ट का थोड़ा सा। मुझे लगता है कि मुझे पहले इसका उल्लेख करना था, लेकिन मैं एक वेब डेवलपर हूं और व्हीबर के जवाब को समझने के लिए मुझे एक गणितज्ञ की तलाश करनी होगी।
कावलीस बाउमनिस

क्या रेडियली सापेक्ष संकेत शक्तियों से प्राप्त होते हैं?
कर्क कुक्केंडल

हाँ! वास्तव में त्रिज्या dBm
Kārlis Baumanis

1
@Reddox, आंशिक रूप से - मैं इसे सर्वर पर गणितज्ञों का उपयोग करके php_exec () के साथ गणना करने में कामयाब रहा।
कलैरिस बाउमनिस

जवाबों:


29

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

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

विवरण सारणी

गणितज्ञ को कोड की केवल एक पंक्ति की आवश्यकता होती है और फिट की गणना करने के लिए कोई औसत दर्जे का सीपीयू समय नहीं होता है:

fit = NonlinearModelFit[data, Norm[{x, y} - {x0, y0}], {x0, y0}, {x, y}, Weights -> 1/observations^2]

Edit--

बड़ी रेडी के लिए, Norm[{x, y} - {x0, y0}]गोलाकार या दीर्घवृत्तीय दूरी की गणना करने के लिए एक फ़ंक्शन द्वारा यूक्लिडियन दूरी को प्रतिस्थापित करके अधिक सटीक (गोलाकार या दीर्घवृत्त) समाधान पाया जा सकता है । में मेथेमेटिका यह किया जा सकता है, उदाहरण के लिए , के माध्यम से

fit = NonlinearModelFit[data, GeoDistance[{x, y}, {x0, y0}], {x0, y0}, {x, y}, 
        Weights -> 1/observations^2]

- संपादित करें

इस तरह एक सांख्यिकीय तकनीक का उपयोग करने का एक फायदा यह है कि यह मापदंडों (जो डिवाइस के निर्देशांक हैं) और यहां तक ​​कि डिवाइस स्थान के लिए एक साथ आत्मविश्वास से आत्मविश्वास का उत्पादन कर सकता है।

ellipsoid = fit["ParameterConfidenceRegion", ConfidenceLevel -> 0.95];
fit["ParameterConfidenceIntervalTable", ConfidenceLevel -> 0.95]

आत्मविश्वास अंतराल तालिका

यह डेटा और समाधान की साजिश करने के लिए शिक्षाप्रद है:

Graphics[{Opacity[0.2], EdgeForm[Opacity[0.75]], White, Disk[Most[#], Last[#]] & /@ data, 
  Opacity[1], Red, ellipsoid, 
  PointSize[0.0125], Blue, Point[source], Red, Point[solution],
  PointSize[0.0083], White, Point @ points}, 
  Background -> Black, ImageSize -> 600]

नक्शा

  • सफेद डॉट्स (ज्ञात) एक्सेस पॉइंट स्थान हैं।

  • बड़ी नीली बिंदी सच्ची डिवाइस लोकेशन है।

  • ग्रे सर्किल मापा रेडी का प्रतिनिधित्व करते हैं। आदर्श रूप से, वे सभी सही उपकरण स्थान पर प्रतिच्छेद करेंगे - लेकिन जाहिर है कि वे माप त्रुटि के कारण नहीं करते हैं।

  • बड़ी लाल बिंदी अनुमानित उपकरण स्थान है।

  • लाल दीर्घवृत्त उपकरण के स्थान के लिए एक 95% विश्वास क्षेत्र का सीमांकन करता है।

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

(एक अधिक सटीक विश्वास क्षेत्र कुछ प्रणालियों में एक संभावना फ़ंक्शन के समोच्च के रूप में प्राप्त किया जा सकता है; यह दीर्घवृत्त ऐसे समोच्च के लिए केवल एक दूसरे क्रम का अनुमान है।)

जब त्रिज्या को त्रुटि के बिना मापा जाता है, तो सभी हलकों में कम से कम एक बिंदु परस्पर चौराहा होगा और - यदि वह बिंदु अद्वितीय है - तो यह अद्वितीय समाधान होगा।

यह विधि दो या अधिक पहुंच बिंदुओं के साथ काम करती है। विश्वास अंतराल प्राप्त करने के लिए तीन या अधिक की आवश्यकता होती है। जब केवल दो उपलब्ध होते हैं, तो यह चौराहे के बिंदुओं में से एक पाता है (यदि वे मौजूद हैं); अन्यथा, यह दो पहुँच बिंदुओं के बीच एक उपयुक्त स्थान का चयन करता है।


3
अच्छा हुआ बिल!

1
@Reddox सिद्धांत रूप में, हाँ: कोई भी ट्यूरिंग-पूर्ण भाषा वस्तुतः कोई भी गणना कर सकती है। लेकिन PHP लक्ष्य भाषा के रूप में किसी की भी पसंद की सूची को नीचे कर देगा। यहां तक कि PHP मैनुअल भी उतना ही मानता है: "PHP शायद ग्राफिकल यूजर इंटरफेस के साथ डेस्कटॉप एप्लिकेशन बनाने के लिए बहुत अच्छी भाषा नहीं है, लेकिन अगर आप PHP को बहुत अच्छी तरह से जानते हैं, और अपने क्लाइंट साइड में कुछ उन्नत PHP सुविधाओं का उपयोग करना चाहते हैं ऐसे प्रोग्राम लिखने के लिए आप PHP-GTK का उपयोग कर सकते हैं। "
whuber

1
@Reddox लिंक के लिए धन्यवाद। मैं देखता हूं कि यह ज्यामिति की गणना कैसे प्रदान करता है। इस परिस्थिति में जिन्हें वास्तव में जरूरत नहीं है: एकमात्र ऐसी गणना पाइथागोरस प्रमेय का एक अनुप्रयोग है, जो वर्गों की मूल राशि ( Normमेरे कोड में कॉल ) के रूप में दूरी प्राप्त करने के लिए है । सभी काम भारहीन nonlinear कम से कम वर्ग फिटिंग में शामिल है, लेकिन मुझे विश्वास नहीं है कि GEOS पुस्तकालय उस क्षमता को प्रदान करता है। संभवतः दीर्घवृत्तीय दूरियों की आवश्यकता होने पर GEOS कुछ मदद कर सकता है।
whuber

2
अगर मैं इसे सही ढंग से पढ़ रहा हूं, तो @BenR, ऐसा लगता है कि आप डेटा का भार उनके विपरीत व्युत्क्रमानुपाती के बजाय चुकता राड के अनुपात में कर रहे हैं। जब आप क्या होता है विभाजित द्वारा square(data[2])यह से गुणा करने के बजाय?
whuber


1

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

पहले सभी n * (n-1) चौराहे बिंदु निर्धारित करें। इन चौराहे बिंदु I के सेट को कॉल करें । अंक की एक सूची ले लो टी जो अंतरतम अंक में शामिल है। फिर I में प्रत्येक बिंदु p के लिए , जांचें कि क्या p हर सर्कल के अंदर है। यदि पी हर सर्कल के अंदर है, तो यह अंतरतम चौराहे पर बिंदु है। सूची T पर ऐसे बिंदु जोड़ें ।

अब आपके पास वांछित चौराहे निर्देशांक हैं। मैं स्थान की भविष्यवाणी करने के लिए कम से कम दो तरीके सोच सकता हूं:

  1. बस T और केन्द्रक द्वारा गठित बहुभुज के केन्द्रक (वजन के रूप में दूरी का उपयोग करें) की गणना वांछित स्थान है।
  2. न्यूनतम सर्कल की गणना करें जिसमें टी के प्रत्येक बिंदु शामिल हैं । फिर इस सर्कल का केंद्र वांछित स्थान है। R की गणना इसके बाद सीधी होनी चाहिए।

एक और नोट: पहले खाली स्थान पथ मॉडल (या रूपांतरों) का उपयोग करके दूरी के लिए सिग्नल की ताकत को परिवर्तित करें। मेरा लेना है: आपके पास कोई प्रशिक्षण डेटासेट है, आपको निश्चित मूल्य के रूप में n = 2 या n = 2.2 का उपयोग करने के बजाय कुछ सीखने की तकनीक का उपयोग करके पथ हानि घातांक खोजने की कोशिश करनी चाहिए।


टी क्या है ... "अंतरतम बिंदु" - अगर मेरे पास 5 नोड हैं..कितने "अंतरतम बिंदुओं" के लिए मुझे जाँच करनी चाहिए?
छिपकली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.