SciPy विभेदक विकास

Scipy Vibhedaka Vikasa



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

पायथन भाषा में SciPy डिफरेंशियल इवोल्यूशन क्या है?

स्किपी वैज्ञानिक और गणितीय मुद्दों को हल करने के लिए उपयोग की जाने वाली एक सतही, मुक्त और समझने योग्य लाइब्रेरी है। SciPy डेवलपर्स के लिए एक खजाना बॉक्स है क्योंकि इसकी लाइब्रेरी कीमती मॉड्यूल से भरी है। SciPy एल्गोरिदम के मूल्यवान समूह के साथ NumPy कार्यक्षमता का विस्तार करता है। SciPy लाइब्रेरी में उप-पैकेज हैं जिनका उपयोग गणनाओं के लिए किया जा सकता है, जैसे scipy.io, scipy.optimize, आदि। SciPy एक 'अंतर विकास' फ़ंक्शन और scipy.optimize पैकेज में कई शक्तिशाली फ़ंक्शन उत्पन्न करता है। पायथन अनुप्रयोगों में अनुकूलन के लिए scipy.optimize का उपयोग किया जाता है।

डिफरेंशियल इवोल्यूशन फंक्शन एक वैश्विक फंक्शन है जिसे SciPy ऑप्टिमाइज़ पैकेज द्वारा अधिग्रहित किया गया है जिसका उपयोग वैश्विक न्यूनतम बहुभिन्नरूपी कार्यों को खोजने के लिए किया जाता है। यह बहुआयामी उद्देश्य कार्यों का प्रबंधन कर सकता है जो गैर-रैखिक और गैर-विभेदी हैं। यह एक खोज एल्गोरिदम है जिसका उपयोग निरंतर अंतरिक्ष कार्यों के क्षेत्रों को खोजने के लिए किया जाता है। यह फ़ंक्शन वास्तविक मूल्यों पर काम करता है।







डिफरेंशियल इवोल्यूशन फंक्शन का सिंटेक्स

डिफरेंशियल इवोल्यूशन फंक्शन डिफरेंशियल_इवोल्यूशन () फंक्शन का उपयोग करते हुए पायथन में मौजूद है। डिफरेंशियल इवोल्यूशन फंक्शन का सिंटैक्स नीचे दिखाया गया है:





आइए फ़ंक्शन पैरामीटर पर जाएं:





फ़ंक्शन f(x,*args); के साथ कॉल करने योग्य होना चाहिए; बाउंड वेरिएबल्स के अनुक्रम को संदर्भित करता है जिसे दो तरीकों से निर्दिष्ट किया जा सकता है: रणनीति वैकल्पिक है या डिफ़ॉल्ट मान 'best1bin' के साथ एक स्ट्रिंग है; मैक्सिटर वैकल्पिक या एक अंतर मान है; पॉपसाइज इंट या वैकल्पिक है; tol int या वैकल्पिक है; म्यूटेशन वैल्यू फ्लोट या वैकल्पिक में है; पुनर्संयोजन मूल्य फ्लोट या वैकल्पिक में है; बीज कोई नहीं, int, NumPy और Random है।

अगले भाग में, हम आसान उदाहरणों की सहायता से अवकल विकास फलन पर चर्चा करेंगे।



उदाहरण 1

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

आयात Numpy जैसा उदा.
से scipy आयात अनुकूलन
से scipy. अनुकूलन आयात अंतर_विकास
आयात matplotlib. pyplot जैसा पाई
से matplotlib आयात से। मी

डीईएफ़ समारोह ( पी ) :

साथ , एक्स = पी

एच = उदा. वर्ग ( साथ ** 4 + एक्स ** 4 )

वापसी उदा. वर्ग ( एच )


DE_सीमा = [ [ - 6 , 6 ] , [ - 6 , 6 ] ]

रेस = अंतर_विकास ( समारोह , DE_सीमा )

प्रिंट ( रेस )

हमने सरणी संख्यात्मक गणनाओं के लिए SciPy और NumPy जैसे पुस्तकालयों का आयात किया। हमने scipy.optimize मॉड्यूल से डिफरेंशियल_इवोल्यूशन फंक्शन इम्पोर्ट किया। फिर, कीवर्ड 'डीईएफ़' के साथ, हम कॉल करने योग्य उद्देश्य फ़ंक्शन को परिभाषित करते हैं और पैरामीटर 'पी' पास करते हैं। हम उस फ़ंक्शन को सफलतापूर्वक परिभाषित करते हैं जो NumPy वेरिएबल्स जोड़ का वर्गमूल पाता है, जो कि z, x है। वर्गमूल मान चर 'एच' में संग्रहीत किया जाता है। हम परिभाषित फ़ंक्शन में वर्गमूल मान लौटाते हैं। इसे एक तर्क के रूप में लौटाया जाता है।

उसके बाद, हम वेरिएबल की सीमाओं को व्यवस्थित करते हैं जिन्हें फ़ंक्शन के न्यूनतम और अधिकतम मानों को समझाकर अलग-अलग किया जा सकता है। हम एक तर्क के रूप में 'DE_bounds'' के साथ डिफरेंशियल_इवोल्यूशन फ़ंक्शन निष्पादित करते हैं। हमने res नाम के एक वेरिएबल के साथ फंक्शन वैल्यू को कॉल किया। अंत में, हम आउटपुट दिखाने के लिए प्रिंट स्टेटमेंट का उपयोग करते हैं। कार्यक्रम चलाने के बाद परिणाम प्रदर्शित किया गया था। अपेक्षित आउटपुट स्क्रीनशॉट नीचे दिखाया गया है:

डिफरेंशियल_इवोल्यूशन () दर्शाता है कि फ़ंक्शन का न्यूनतम मान बिंदु (0, 0) पर प्रदर्शित होता है।

उदाहरण 2

यह डिफरेंशियल इवोल्यूशन फंक्शन का एक और उदाहरण है। इसमें हम सरणियाँ लेते हैं और उनके बीच विभिन्न ऑपरेशन लागू करते हैं। कार्यक्रम का संदर्भ कोड नीचे उल्लिखित है:

आयात Numpy जैसा उदा.
से scipy आयात अनुकूलन
से scipy. अनुकूलन आयात अंतर_विकास

डीईएफ़ object_func ( डी ) :
वापसी ( डी [ 1 ] - 1.2 ) / 2 + 0.5 * डी [ 0 ] * 1.3 * ( डी [ 1 ] + 0.5 ) ** 3

सीमा = [ ( - 0.3 , 0.3 ) , ( - 0.3 , 0.3 ) ]

disp = अंतर_विकास ( object_func , सीमा , popsize = 80 , पोलिश = गलत )

प्रिंट ( disp )

जैसा कि पिछले स्क्रीनशॉट में दिखाया गया है, हमने प्रोग्राम में SciPy.optimize.differential_evolution लाइब्रेरी और NumPy लाइब्रेरी को सफलतापूर्वक इम्पोर्ट कर लिया है। अब, हम एक वस्तुनिष्ठ फलन को परिभाषित करते हैं जिसकी ओर से हम एक न्यूनतम मान पाते हैं। हमने गणितीय अभिव्यक्ति को उद्देश्य समारोह में पारित किया और परिभाषित समारोह के तर्क के रूप में एक मान वापस कर दिया। फ़ंक्शन मानों के बीच की सीमा अनिवार्य है। इसलिए, फ़ंक्शन को परिभाषित करने के बाद, हमने दोनों मान (अधिकतम और न्यूनतम) निर्धारित किए।

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

उदाहरण 3

जैसा कि हम देख सकते हैं, डिफरेंशियल इवोल्यूशन अपनी परिभाषा के आधार पर ऑब्जेक्टिव फंक्शन के विभिन्न न्यूनतम मान लौटाता है। यहां, हम डिफरेंशियल_इवोल्यूशन () से संबंधित एक और उदाहरण लेते हैं। इस कार्यक्रम के लिए संदर्भ कोड नीचे दिखाया गया है:

आयात Numpy जैसा उदा.
से scipy आयात अनुकूलन
से scipy. अनुकूलन आयात अंतर_विकास

डीईएफ़ obj_func ( ओपर ) :
वापसी 3 ** 9 / 0.2 + 6 / 3 * 2 ** बीस

सीमा = [ ( - 0.5 , 0.5 ) , ( - 0.5 , 0.5 ) ]

बाहर = अंतर_विकास ( obj_func , सीमा , पोलिश = सही )

प्रिंट ( 'आउटपुट है:' , बाहर )

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

पिछले स्क्रीनशॉट की तरह, फ़ंक्शन का न्यूनतम मान [0.29236931, 0.16808904] है। डिफरेंशियल_इवोल्यूशन फंक्शन कॉन्सेप्ट को बेहतर ढंग से समझने के लिए आप इन उदाहरणों को अपने परिवेश में भी चला सकते हैं।

निष्कर्ष

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