SciPy تفریق ارتقاء

Scipy Tfryq Artqa



یہ مضمون SciPy Differential Evolution (DE) کے بارے میں ہے۔ SciPy Python زبان کی لائبریری ہے، اور Differential Evolution SciPy لائبریری کا طریقہ یا کام ہے۔ زیادہ تر لوگ ازگر کو سیکھ رہے ہیں، چاہے وہ ڈویلپر ہوں یا نہیں، کیونکہ پائتھون کی متعدد لائبریریاں اور فنکشنز اسے بہت محفوظ اور قابل اعتماد بناتے ہیں۔ SciPy اکثر تفریق اور الجبری مساوات، انٹرپولیشن، آپٹیمائزیشن وغیرہ کو حل کرنے کے لیے استعمال کیا جاتا ہے۔ یہاں، ہم SciPy DE کے استعمال پر بات کر رہے ہیں تاکہ آپ کو یہ سمجھنے میں مدد ملے کہ Python ایپلی کیشنز میں SciPy ڈیفرینشل ایوولوشن فنکشن کو کیسے نافذ کیا جائے۔

Python کی زبان میں SciPy تفریق ارتقاء کیا ہے؟

Scipy ایک سطحی، مفت، اور قابل فہم لائبریری ہے جو سائنسی اور ریاضی کے مسائل کو حل کرنے کے لیے استعمال ہوتی ہے۔ SciPy ڈویلپرز کے لیے ایک خزانہ خانہ ہے کیونکہ اس کی لائبریری قیمتی ماڈیولز سے بھری ہوئی ہے۔ SciPy الگورتھم کے ایک قیمتی کلسٹر کے ساتھ NumPy فعالیت کو بڑھاتا ہے۔ SciPy لائبریری میں ذیلی پیکجز ہیں جنہیں حسابات کے لیے استعمال کیا جا سکتا ہے، جیسے scipy.io، scipy.optimize، وغیرہ۔ SciPy ایک 'تفرقی ارتقاء' فنکشن اور scipy.optimize پیکیج میں بہت سے طاقتور فنکشنز تیار کرتا ہے۔ scipy.optimize کو Python ایپلی کیشنز میں اصلاح کے لیے استعمال کیا جاتا ہے۔

Differential Evolution Function ایک عالمی فنکشن ہے جسے SciPy آپٹیمائز پیکج کے ذریعے حاصل کیا گیا ہے جو کہ عالمی کم از کم ملٹی ویریٹ فنکشنز کو تلاش کرنے کے لیے استعمال کیا جاتا ہے۔ یہ کثیر جہتی معروضی افعال کا انتظام کر سکتا ہے جو غیر خطی اور غیر تفریق ہیں۔ یہ ایک تلاش کا الگورتھم ہے جو مسلسل خلائی افعال کے علاقوں کو تلاش کرنے کے لیے استعمال ہوتا ہے۔ یہ فنکشن حقیقی اقدار پر کام کرتا ہے۔







تفریق ارتقاء فنکشن کا نحو

Differential evolution () فنکشن کا استعمال کرتے ہوئے پائیتھون میں ڈیفرینشل ایوولوشن فنکشن موجود ہے۔ تفریق ارتقاء فنکشن کا نحو ذیل میں دکھایا گیا ہے:





آئیے فنکشن پیرامیٹرز پر جائیں:





فنکشن کو f(x,*args) کے ساتھ قابل کال ہونا چاہیے؛ حد سے مراد متغیرات کی ترتیب ہے جسے دو طریقوں سے بیان کیا جا سکتا ہے: حکمت عملی اختیاری ہے یا پہلے سے طے شدہ قدر 'best1bin' کے ساتھ ایک سٹرنگ؛ maxiter اختیاری ہے یا ایک int قدر؛ پاپسائز int یا اختیاری ہے۔ ٹول int یا اختیاری ہے۔ اتپریورتن قدر فلوٹ یا اختیاری میں ہے؛ دوبارہ جمع کرنے کی قیمت فلوٹ یا اختیاری میں ہے؛ بیج کوئی نہیں، int، NumPy، اور بے ترتیب ہے۔

اگلے حصے میں، ہم آسان مثالوں کی مدد سے تفریق ارتقاء کے فنکشن پر بات کریں گے۔



مثال 1

آئیے ایک سیدھی سادی مثال کے ساتھ شروع کرتے ہیں جو تفریق ارتقاء فنکشن کے تصور کو سمجھنے میں آپ کی دلچسپی کو فروغ دے گی۔ ہم نے کم از کم قدر معلوم کرنے کے لیے differential_evolution() فنکشن کا استعمال کیا۔ لیکن، کم از کم قدر تلاش کرنے کے لیے، فنکشن کو تلاش کی حد اور ایک متعین کال ایبل آبجیکٹو فنکشن کی ضرورت ہوتی ہے۔ نتیجے کے طور پر، ہم پروگرام میں differential_evolution فنکشن استعمال کرنے سے پہلے ایک فنکشن کی وضاحت کرتے ہیں۔ پروگرام کا حوالہ کوڈ ذیل میں ذکر کیا گیا ہے:

درآمد بے حس کے طور پر جیسے
سے مسالہ دار درآمد بہتر بنائیں
سے مسالہ دار بہتر بنائیں درآمد تفریق_ارتقاء
درآمد matplotlib. pyplot کے طور پر py
سے matplotlib درآمد سینٹی میٹر

def func ( ص ) :

کے ساتھ , ایکس = ص

h = جیسے sqrt ( کے ساتھ ** 4 + x ** 4 )

واپسی جیسے sqrt ( h )


ڈی_باؤنڈز = [ [ - 6 , 6 ] , [ - 6 , 6 ] ]

res = تفریق_ارتقاء ( func , ڈی_باؤنڈز )

پرنٹ کریں ( res )

ہم نے صف کے عددی حسابات کے لیے SciPy اور NumPy جیسی لائبریریاں درآمد کیں۔ ہم نے scipy.optimize ماڈیول سے differential_evolution فنکشن درآمد کیا۔ پھر، کلیدی لفظ 'def' کے ساتھ، ہم قابل قابل اعتراض فنکشن کی وضاحت کرتے ہیں اور پیرامیٹر 'p' کو پاس کرتے ہیں۔ ہم کامیابی سے اس فنکشن کی وضاحت کرتے ہیں جو NumPy متغیرات کے اضافے کا مربع جڑ تلاش کرتا ہے، جو کہ z، x ہے۔ مربع جڑ کی قدر متغیر 'h' میں محفوظ ہے۔ ہم متعین فنکشن میں مربع جڑ کی قدر واپس کرتے ہیں۔ اسے دلیل کے طور پر واپس کیا جاتا ہے۔

اس کے بعد، ہم متغیر کی حدیں طے کرتے ہیں جن کو فنکشن کی کم سے کم اور زیادہ سے زیادہ قدروں کی وضاحت کرکے آئٹمائز کیا جاسکتا ہے۔ ہم ایک دلیل کے طور پر 'DE_bounds' کے ساتھ differential_evolution فنکشن کو انجام دیتے ہیں۔ ہم نے فنکشن ویلیو کو res نام کے متغیر کے ساتھ کہا۔ آخر میں، ہم آؤٹ پٹ دکھانے کے لیے پرنٹ اسٹیٹمنٹ استعمال کرتے ہیں۔ پروگرام چلانے کے بعد نتیجہ ظاہر ہوا۔ متوقع آؤٹ پٹ اسکرین شاٹ ذیل میں دکھایا گیا ہے:

Differential_evolution() سے پتہ چلتا ہے کہ فنکشن کی کم از کم قیمت پوائنٹ (0, 0) پر ظاہر ہوتی ہے۔

مثال 2

یہ تفریق ارتقاء فنکشن کی ایک اور مثال ہے۔ اس میں، ہم صفیں لیتے ہیں اور ان کے درمیان مختلف آپریشنز کا اطلاق کرتے ہیں۔ پروگرام کا حوالہ کوڈ ذیل میں ذکر کیا گیا ہے:

درآمد بے حس کے طور پر جیسے
سے مسالہ دار درآمد بہتر بنائیں
سے مسالہ دار بہتر بنائیں درآمد تفریق_ارتقاء

def مقصد_فنک ( ڈی ) :
واپسی ( ڈی [ 1 ] - 1.2 ) / 2 + 0.5 * ڈی [ 0 ] * 1.3 * ( ڈی [ 1 ] + 0.5 ) ** 3

_حدیں = [ ( - 0.3 , 0.3 ) , ( - 0.3 , 0.3 ) ]

disp = تفریق_ارتقاء ( مقصد_فنک , _حدیں , پاپسائز = 80 , پالش = جھوٹا۔ )

پرنٹ کریں ( disp )

جیسا کہ پچھلے اسکرین شاٹ میں دکھایا گیا ہے، ہم نے پروگرام میں SciPy.optimize.differential_evolution لائبریری اور NumPy لائبریری کو کامیابی کے ساتھ درآمد کیا۔ اب، ہم ایک معروضی فنکشن کی وضاحت کرتے ہیں جس کی طرف سے ہمیں ایک کم از کم قدر ملتی ہے۔ ہم نے معروضی فنکشن میں ریاضیاتی اظہار کو پاس کیا اور متعین فنکشن کی دلیل کے طور پر ایک قدر واپس کی۔ فنکشن ویلیوز کے درمیان حد ضروری ہے۔ لہذا، فنکشن کی وضاحت کرنے کے بعد، ہم نے دونوں قدریں (زیادہ سے زیادہ اور کم از کم) طے کیں۔

تمام ضروری متغیرات کی وضاحت کرنے کے بعد، ہم نے فنکشن کی کم از کم قیمت معلوم کرنے کے لیے differential_evolution فنکشن کا نام دیا۔ ہم نے فنکشن کی کم از کم واپسی کی قیمت کو ڈسپ نامی متغیر میں محفوظ کیا۔ پروگرام کے اختتام پر، نتیجہ ظاہر کرنے کے لیے ہم پرنٹ اسٹیٹمنٹ میں ڈسپ متغیر کو پاس کرتے ہیں۔ پروگرام کو چلانے کے بعد، طے شدہ فنکشن کی کم از کم قیمت باؤنڈز کے ساتھ اسکرین پر ظاہر ہوتی ہے۔ مندرجہ ذیل آؤٹ پٹ ہے:

مثال 3

جیسا کہ ہم دیکھ سکتے ہیں، تفریق ارتقاء اس کی تعریف کی بنیاد پر معروضی فنکشن کی مختلف کم از کم قدریں لوٹاتا ہے۔ یہاں، ہم ایک اور مثال لیتے ہیں جو differential_evolution() سے متعلق ہے۔ اس پروگرام کا حوالہ کوڈ ذیل میں دکھایا گیا ہے:

درآمد بے حس کے طور پر جیسے
سے مسالہ دار درآمد بہتر بنائیں
سے مسالہ دار بہتر بنائیں درآمد تفریق_ارتقاء

def obj_func ( آپریشن ) :
واپسی 3 ** 9 / 0.2 + 6 / 3 * 2 ** بیس

حد = [ ( - 0.5 , 0.5 ) , ( - 0.5 , 0.5 ) ]

باہر = تفریق_ارتقاء ( obj_func , حد , پالش = سچ ہے۔ )

پرنٹ کریں ( 'آؤٹ پٹ ہے:' , باہر )

لائبریریاں کامیابی کے ساتھ اس پروگرام میں درآمد کی گئی ہیں کیونکہ ہم ان کے بغیر اپنی خواہش کے مطابق کام نہیں کر سکتے۔ نتیجے کے طور پر، ہم پروگرام میں SciPy لائبریری کو شامل کرتے ہیں۔ اس کے بعد، مطلوبہ آپریشن کے ساتھ مقصدی فنکشن کی وضاحت کریں۔ ہم اس متعین فنکشن کی کم از کم قیمت تلاش کرتے ہیں۔ فنکشن کی باؤنڈری کو ایڈجسٹ کرنے کے بعد، ہم نے فنکشن کی کم از کم قدر معلوم کرنے کے لیے ڈیفینشل ایوولوشن میں ڈیفائنڈ فنکشن کا نام دیا۔ اس کے بعد اسے متغیر میں رکھا جاتا ہے۔ ہم پرنٹ اسٹیٹمنٹ میں اس متغیر کو کال کرکے ظاہر کرتے ہیں۔ اس پروگرام کا آؤٹ پٹ ذیل میں دکھایا گیا ہے:

جیسا کہ پچھلے اسکرین شاٹ میں، فنکشن کی کم از کم ویلیو [0.29236931, 0.16808904] ہے۔ آپ ان مثالوں کو اپنے ماحول میں بھی چلا سکتے ہیں تاکہ فرق_ایوولوشن فنکشن کے تصور کو بہتر طور پر سمجھا جا سکے۔

نتیجہ

آئیے اس مضمون کا ایک سرسری جائزہ لیتے ہیں۔ ہم نے امتیازی ارتقاء کے طریقہ کار کی بنیادی فعالیت کو سمجھ لیا جو Python میں SciPy لائبریری سے تعلق رکھتا ہے۔ Python سب سے حالیہ زبان ہے، جس میں متعدد لچکدار لائبریریاں ہیں۔ زیادہ تر ڈویلپرز کو پہلے سے طے شدہ افعال اور لائبریریوں کے ذریعے پیچیدہ کوڈ ڈھانچے کو حل کرنے میں مدد ملی۔ تفریق ارتقاء ایک SciPy پیکیج آپٹیمائزیشن فنکشن یا طریقہ ہے جو مائنسائزیشن کے لیے استعمال ہوتا ہے۔ جب آپ ان پچھلی مثالوں کو کوڈ میں استعمال کرتے ہیں، تو آپ تفریق ارتقاء کے تصور کو زیادہ واضح طور پر سمجھتے ہیں۔