5

यह प्रश्न "सी ++ में संख्यात्मक व्यंजनों" से संबंधित है, इसलिए यह इसके बारे में कुछ जानने के लिए आरक्षित होगा बहुआयामी अनुकूलन।संख्यात्मक व्यंजनों/बहुआयामी रूट खोज (newt का उपयोग करके): अधिकतम त्रुटि को कम करने के लिए कैसे करें

मैं एक प्रोग्राम है जो एक बहुआयामी जड़ के लिए खोज करने की जरूरत है लिख रहा हूँ, और यह हल करने के लिए, मैं बहुआयामी न्यूटन जड़ खोज विधि, अर्थात् "न्यूट" प्रक्रिया का उपयोग कर रहा हूँ।

विवरण में रुचि रखने वालों के लिए, मैं कुछ फीचर पॉइंट्स (फीचर पॉइंट जो दो कैमरों द्वारा देखे जाते हैं) के आधार पर किसी ऑब्जेक्ट के स्टीरियोपॉपिक व्यू में एक विकृत 3 डी मॉडल फिट करने की कोशिश कर रहा हूं।

इस के लिए, मैं निम्नलिखित के साथ न्यूट प्रक्रिया का उपयोग कर रहा हूँ:

  • 11 इनपुट पैरामीटर: मेरी deformable मॉडल 11 मानकों (5 ज्यामितीय मापदंडों से बना है और के लिए स्वतंत्रता के 6 deegres साथ तैयार किया जा सकता 3 डी ऑब्जेक्ट स्थान):
  • 14 आउटपुट पैरामीटर जिसके लिए मुझे रूट खोजने की आवश्यकता है: कैमरे द्वारा पहचाने जाने वाले फीचर पॉइंट्स के आधार पर, और "इनपुट पैरामीटर" पर एक सेट दिया गया है, मैं एक सेट की गणना कर सकता हूं कैमरे और उनके सैद्धांतिक लो द्वारा देखे गए फीचर पॉइंट्स के बीच दूरी कटियन। मेरे पास 7 बिंदु हैं, इसलिए मुझे 14 पैरामीटर (7 दूरी 2 बार, क्योंकि मैं दोनों कैमरों पर दूरी की गणना करता हूं)

मेरी समस्या यह है कि इनपुट पैरामीटर की तुलना में मेरे पास अधिक आउटपुट पैरामीटर (14) हैं (11): जब भी मैं "newt" कहता हूं, एल्गोरिदम हमेशा अभिसरण करता है, हालांकि यह एक समाधान मिलेगा जो लगभग 11 पहले आउटपुट पैरामीटर को लगभग पूरी तरह से कम करता है, लेकिन इसमें 3 शेष पैरामीटर पर बहुत सारी त्रुटियां हैं।

हालांकि मैं त्रुटियों को आउटपुट पैरामीटर के बीच समान रूप से विभाजित करना चाहता हूं।

मैं पहले से ही करने की कोशिश की दृष्टिकोण नीचे वर्णित: 11 पैरामीटर में 14 उत्पादन मानकों गठबंधन करने के लिए

  1. कोशिश ( उदाहरण के लिए, यदि आप कुछ दूरी की औसत ले बजाय दोनों दूरी का उपयोग कर के)। हालांकि मैं सिद्धांत का पालन के साथ इस दृष्टिकोण के साथ 100% संतुष्ट
  2. मिक्स कई समाधान नहीं कर रहा हूँ:
    • कॉल mnewt और याद पाया जड़
    • बदलें mnewt फिर से और कॉलिंग 14 उत्पादन पैरामीटर
    • के आदेश पाया जड़
    • कंप्यूट याद एक समाधान दो पाया जड़ों की औसत है

क्या किसी को एक और सामान्य दृष्टिकोण के बारे में पता है, जिसमें रूट खोज एल्गोरिदम एक त्रुटि का पक्ष लेगा जो पहले पैरामीटर के पक्ष में, आउटपुट पैरामीटर के बीच समान रूप से विभाजित है?

+0

क्यों एक "दूरी मीट्रिक" सेट नहीं करें, उदा। अपने सभी 7 फीचर पॉइंट्स पर स्क्वायर दूरी की राशि, और उसके बाद कुछ अनुकूलन दिनचर्या चलाएं। लेवेनबर्ग-मार्क्वार्ट फिटिंग लग रहा है। –

+1

मैंने पहले से ही कोशिश की, और यह एक विफलता थी। यदि आप एनआर पुस्तक के बहुआयामी अनुकूलन को पढ़ते हैं, तो आप देखेंगे (और मैं उन पर विश्वास करता हूं) कि एक मल्टीडिम रूट खोज को न्यूनतम खोज (आपके सुझाव के अनुसार) में कोशिश करना और ट्रैनफॉर्म करना एक बुरा विचार है: आप कोशिश कर रहे हैं एक कार्य को कम करें जिसमें स्थानीय न्यूनतम और * बहुत * फ्लैट ज़ोन के एक दिशा में बहुत सारे हैं (यानी एक घटक पर व्युत्पन्न शून्य है: न्यूटन जैसी विधियों के लिए एक दुःस्वप्न) –

+0

हालांकि, मैं चारों ओर एक न्यूनतमकरण चलाने की कोशिश करूंगा न्यूट द्वारा दिया गया शुरुआती बिंदु। शायद यह एक झूठी स्थानीय न्यूनतम में परिवर्तित करने के लिए कम प्रवण होगा। –

उत्तर

2

आप f(x)=0 सुलझाने जहां x एक मीटर आयामी वेक्टर है और f एक n आयामी वेक्टर को यह नक्शे से F(x) कम करने की कोशिश।आपकी अनुकूलन समस्या m < n (आपके मामले में 11 < 14) है।

ऐसी प्रणालियों के लिए, उन्हें हल करने के सामान्य तरीके x पर एक सदिश आदर्श कम करने के लिए है। आप और Lagrange-multiplierc दोनों के संबंध में सिस्टम x^T A x + c f(x)^T f(x) को कम करके इसे कर सकते हैं। अधिक जानकारी के बिना, आप ए को एनएक्सएन पहचान मैट्रिक्स ले सकते हैं। यह x मिलेगा जो छोटे मानक होने के दौरान f(x)=0 हल करता है।

न्यूटन की विधि के साथ ऐसा करने के बारे में अधिक जानकारी के लिए, उदाहरण देखें। यह paper

+0

वाह, अच्छा जवाब, धन्यवाद! –

संबंधित मुद्दे