ट्यूनिंग नियंत्रकों के लिए आनुवंशिक एल्गोरिथ्म का उपयोग करना


9

मैंने nonlinear सिस्टम (जैसे nonlinear पेंडुलम) को नियंत्रित करने के लिए कुछ पेपर पढ़े हैं । Nonlinear सिस्टम को लक्षित करने के लिए कई दृष्टिकोण हैं। सबसे आम होते हैं प्रतिक्रिया linearizaing , backstepping , और मोड रपट नियंत्रकों।

मेरे मामले में, मैंने C ++ में एक साधारण पेंडुलम और अन्य मैनिपुलेटर्स समस्याओं के नॉनलाइन मॉडल को नियंत्रित करने के सैद्धांतिक और व्यावहारिक भागों को किया है। पेंडुलम के लिए, मैंने कोणीय विस्थापन और वेग के लिए ट्रैकिंग कार्य को हल करने के लिए एक बैकस्टैपिंग नियंत्रक का उपयोग किया है। परिणाम हैं

θ¨+(k/m)θ˙+(g/L)sinθ=u

कहाँ पे m=0.5,k=0.0001,L=.2 तथा g=9.81

ग्राफ 1

ग्राफ २

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

अब तक मैंने C ++ / Qt में एक साधारण GUI डिज़ाइन किया है ताकि कंट्रोलर को मैन्युअल रूप से ट्यून किया जा सके। नीचे दी गई तस्वीर में, चरण फ़ंक्शन के लिए नियंत्रक की प्रतिक्रिया।

नियंत्रक ट्यूनिंग आवेदन के जीयूआई का स्क्रीनशॉट

जवाबों:


1

पैरामीटर ट्यूनिंग के लिए विकासवादी तरीकों (GA उनमें से एक है) का उपयोग करना वास्तव में नियंत्रण क्षेत्र में एक सामान्य विधि [1] है। विशेष रूप से गैर-रैखिक प्रणालियों के लिए, इष्टतम मापदंडों के लिए विश्लेषणात्मक समाधान ढूंढना मुश्किल हो सकता है। इवोल्यूशनरी विधियां कुशलतापूर्वक निकट-इष्टतम मापदंडों की खोज करने का एक तरीका है।

एक बहुत ही सफल और सार्वभौमिक विधि जो व्यापक रूप से उपयोग की जाती है वह सीएमए-ईएस है । MATLAB सहित, वहाँ बड़ी संख्या में कार्यान्वयन हैं। मुझे पता है कि इसके विभिन्न रूपों में ध्रुव संतुलन अक्सर बेंचमार्क के रूप में उपयोग किया जाता है।

एल्गोरिथ्म को लागू करना आमतौर पर उतना मुश्किल नहीं है। अपने परिणाम के प्रदर्शन की रेटिंग करें - इसे ईए में फिटनेस फ़ंक्शन कहा जाता है - आमतौर पर सबसे अधिक भाग होता है।

[१] पीजे फ्लेमिंग, आरसी पर्सहाउस, कंट्रोल सिस्टम इंजीनियरिंग में इवोल्यूशनरी एल्गोरिदम: एक सर्वेक्षण, कंट्रोल इंजीनियरिंग प्रैक्टिस, वॉल्यूम १०, अंक ११, नवंबर १ ९, २००२, पृष्ठ १२२३-१२४१, आईएसएसएन ० ९ ६66-०६६११, http: ddx.doi। org / 10.1016 / S0967-0661 (02) 00081-3


क्या आपको लगता है कि यह जीए के बारे में पढ़ने लायक है।
क्रोको

8

जेनेटिक एल्गोरिदम एक मशीन लर्निंग तकनीक है जो एक सिस्टम को 'फाइन ट्यून' करने के लिए उपयोगकर्ता की आवश्यकता को दूर करती है, और इसके बजाय कंप्यूटर को यह पता लगाने की अनुमति देती है कि सिस्टम को कैसे ट्यून किया जाए। इस दृष्टिकोण का लाभ यह है कि यह शोधकर्ताओं / उपयोगकर्ताओं के समय को मुक्त करता है और अक्सर एक ऐसी प्रणाली को जन्म दे सकता है जो शोधकर्ता / उपयोगकर्ता खुद को प्राप्त करने में सक्षम होने से बेहतर है।

आनुवंशिक एल्गोरिथ्म का उपयोग करने का सामान्य विचार कुछ बुनियादी नियंत्रण प्रवाह का पालन करेगा:

Create_X_Number_Of_Random_Controllers()
while (Not_Yet_Satisfied_With_tuning)
    Score_Each_Controller_Based_On_Performance()
    Remove_Lowest_Performing_Controllers()
    Create_New_Controllers_By_Mixing_Best_Performers()
    Add_Slight_Randomness_For_Evolution()
Display_Top_Performer()

सबसे अच्छा उदाहरण मैं आसानी से इस सिद्धांत को व्यवहार में दिखा सकता हूं यह 'गेम' है जो आनुवांशिक विकास का उपयोग उन वाहनों को डिजाइन करने के लिए करता है जो एक कोर्स में ड्राइविंग करने में सक्षम हैं। एक ही विचार किसी भी प्रणाली पर लागू होता है जिसे आप बिना किसी ट्यूनिंग के ठीक करना चाहते हैं। उदाहरण: http://rednuht.org/genetic_cars_2/


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

मैं यह नहीं देख सकता कि @CroCo का और क्या अर्थ होगा, लेकिन Ziegler Nichols के साथ समस्या यह है कि आपको अभी भी उन घटकों में से एक को ट्यून करने की आवश्यकता है जहां एक आनुवंशिक अहंकार के साथ आप सिस्टम के किसी भी पहलू को बदल सकते हैं और यह 'विकसित' होगा किसी भी क्रूर काम को करने के लिए डेवलपर के बिना मैच के लिए
बीवी

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

2
मैं एक बीमार बाउंडेड जेनेटिक एल्गोरिदम का चित्रण कर रहा हूं जो ट्यूनिंग के दौरान बहुत खुशी से स्ट्रिंग को स्नैप करता है।
रामरोड

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

2

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


मैं आनुवंशिक एल्गोरिथ्म (GA) से परिचित नहीं हूं। मैंने बस कुछ कागजात का दावा किया है कि जीए का उपयोग करके उनके नियंत्रकों का ट्यूनिंग भाग। इस मामले के बारे में उनके कागजात में और कोई विवरण नहीं है। मुझे नहीं पता कि जीए क्या है और मैं इसका उपयोग कैसे कर सकता हूं।
क्रोको

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