SciPy (تلفظ ٿيل سائي پائي) ھڪڙو نمپي تي ٻڌل رياضي وارو پيڪيج آھي جنھن ۾ C ۽ Fortran لائبريريون پڻ شامل آھن. SciPy توهان جي انٽرويو پٿون سيشن کي مڪمل ڊيٽا سائنس ماحول جهڙوڪ MATLAB، IDL، Octave، R، يا SciLab ۾ تبديل ڪري ٿو.
هن آرٽيڪل ۾، اسان رياضياتي پروگرامنگ جي بنيادي ٽيڪنالاجي تي نظر ڪنداسين - scipy.optimize پيڪيج استعمال ڪندي ڪيترن ئي متغيرن جي اسڪيلر فنڪشن لاء مشروط اصلاح جي مسئلن کي حل ڪرڻ. غير محدود اصلاحي الگورتھم اڳ ۾ ئي بحث ڪيو ويو آھي آخري مضمون. وڌيڪ تفصيلي ۽ تازه ترين مدد اسڪائپي افعال تي هميشه حاصل ڪري سگھجن ٿيون مدد () ڪمانڊ، شفٽ + ٽيب يا ان ۾ سرڪاري دستاويز.
تعارف
scipy.optimize پيڪيج ۾ مشروط ۽ غير محدود اصلاح جي مسئلن کي حل ڪرڻ لاءِ هڪ عام انٽرفيس فنڪشن پاران مهيا ڪيل آهي minimize(). بهرحال، اهو معلوم ٿئي ٿو ته سڀني مسئلن کي حل ڪرڻ لاء ڪو عالمگير طريقو ناهي، تنهنڪري هڪ مناسب طريقو جو انتخاب، هميشه وانگر، محقق جي ڪلهن تي پوي ٿو.
مناسب اصلاح الورورٿم فنڪشن دليل استعمال ڪندي بيان ڪيو ويو آهي minimize(..., method="").
ڪيترن ئي متغيرن جي هڪ فنڪشن جي مشروط اصلاح لاءِ، هيٺين طريقن جا عمل موجود آهن:
SLSQP - پابندين سان ترتيب وار چوٿين پروگرامنگ، Lagrange سسٽم کي حل ڪرڻ لاء نيوتونين طريقو. Wiki آرٽيڪل.
TNC - ٽوڙيو ويو نيوٽن محدود، محدود تعداد ۾ تکرار، وڏي تعداد ۾ آزاد متغيرن سان غير لائنر ڪمن لاءِ سٺو. Wiki آرٽيڪل.
L-BFGS-B - Broyden-Fletcher-Goldfarb-Shanno ٽيم جو ھڪڙو طريقو، ھيسين ميٽرڪس مان ویکٹر جي جزوي لوڊشيڊنگ جي ڪري ياداشت جي گھٽتائي سان لاڳو ڪيو ويو. Wiki آرٽيڪل, Habré تي مضمون.
COBYLA - MARE Constrained Optimization by Linear Approximation، Constrained Optimization with linear approximation (بغير گريڊيئيٽ حساب ڪتاب). Wiki آرٽيڪل.
چونڊيل طريقي تي مدار رکندي، مسئلا حل ڪرڻ لاء حالتون ۽ پابنديون مختلف طور تي مقرر ڪيا ويا آهن:
هڪ اعتراض يا شين جي فهرست LinearConstraint, NonlinearConstraint COBYLA لاءِ، SLSQP، ڀروسو ڪنٽر طريقن؛
لغت يا لغتن جي فهرست {'type':str, 'fun':callable, 'jac':callable,opt, 'args':sequence,opt} COBYLA، SLSQP طريقن لاءِ.
آرٽيڪل جو خاڪو:
1) ڀروسي واري علائقي ۾ مشروط اصلاح الورورٿم جي استعمال تي غور ڪريو (طريقو= ”ٽرسٽ-ڪانسٽر“) اعتراضن سان بيان ڪيل رڪاوٽن سان Bounds, LinearConstraint, NonlinearConstraint ;
2) ترتيب وار پروگرامنگ تي غور ڪريو گھٽ ۾ گھٽ اسڪوائر جو طريقو استعمال ڪندي (طريقو = "SLSQP") پابندين سان گڏ ڊڪشنري جي صورت ۾ بيان ڪيل {'type', 'fun', 'jac', 'args'};
3) ويب اسٽوڊيو جو مثال استعمال ڪندي ٺاهيل شين جي اصلاح جي مثال جو تجزيو ڪريو.
مشروط اصلاح جو طريقو="trust-constr"
عمل جي طريقيڪار trust-constr تي مبني EQSQP برابري جي شڪل جي پابندين سان مسئلن لاءِ سفر عدم مساوات جي صورت ۾ رڪاوٽن سان مسئلن لاء. ٻئي طريقا الگورتھم پاران لاڳو ڪيا ويا آھن مقامي گھٽ ۾ گھٽ اعتماد واري علائقي ۾ ڳولڻ لاءِ ۽ وڏي پيماني تي مسئلن لاءِ مناسب آھن.
عام فارم ۾ گھٽ ۾ گھٽ ڳولڻ جي مسئلي جي رياضياتي فارموليشن:
سخت برابري جي پابندين لاء، هيٺيون حدون مٿئين حد جي برابر آهي .
ھڪڙي طرفي پابندي لاء، مٿئين يا ھيٺئين حد مقرر ڪئي وئي آھي np.inf لاڳاپيل نشاني سان.
اچو ته اهو ضروري آهي ته گهٽ ۾ گهٽ معلوم ٿئي Rosenbrock فنڪشن جو ٻن متغيرن جو:
انهي حالت ۾، هيٺيون پابنديون ان جي تعريف جي ڊومين تي مقرر ٿيل آهن:
اسان جي حالت ۾، نقطي تي هڪ منفرد حل آهي ، جنهن لاءِ صرف پهرين ۽ چوٿين پابنديون صحيح آهن.
اچو ته هيٺئين کان مٿي تائين پابندين جي ذريعي وڃو ۽ ڏسو ته اسان انهن کي اسپيپي ۾ ڪيئن لکي سگهون ٿا.
پابنديون и اچو ته ان کي Bounds اعتراض استعمال ڪندي وضاحت ڪريون.
جڏهن هيسين ميٽرڪس جي حساب سان تمام گهڻي ڪوشش جي ضرورت آهي، توهان هڪ ڪلاس استعمال ڪري سگهو ٿا HessianUpdateStrategy. هيٺيون حڪمت عمليون موجود آهن: BFGS и SR1.
پابندين لاءِ جيڪوبين ميٽرڪس پڻ محدود فرقن کي استعمال ڪندي حساب ڪري سگھجي ٿو. بهرحال، هن معاملي ۾ هيسين ميٽرڪس کي محدود فرقن جي استعمال سان حساب نه ٿو ڪري سگهجي. هيسين کي هڪ فنڪشن جي طور تي يا HessianUpdateStrategy ڪلاس کي استعمال ڪندي بيان ڪيو وڃي.
Optimization terminated successfully. (Exit mode 0)
Current function value: 0.34271757499419825
Iterations: 4
Function evaluations: 5
Gradient evaluations: 4
[0.41494475 0.1701105 ]
اصلاح جو مثال
پنجين ٽيڪنالاجي ڍانچي جي منتقلي جي سلسلي ۾، اچو ته هڪ ويب اسٽوڊيو جو مثال استعمال ڪندي پيداوار جي اصلاح کي ڏسو، جيڪو اسان کي هڪ ننڍڙو پر مستحڪم آمدني آڻيندو آهي. اچو ته پاڻ کي تصور ڪريون هڪ گيلري جي ڊائريڪٽر جي طور تي جيڪو ٽن قسمن جي شين جي پيداوار ڪري ٿو:
x0 - لينڊنگ صفحا وڪڻڻ، 10 tr کان.
x1 - ڪارپوريٽ ويب سائيٽون، 20 کان.
x2 - آن لائن اسٽور، 30 ٽر.
اسان جي دوستانه ڪم ڪندڙ ٽيم ۾ چار جونيئر، ٻه مڊل ۽ هڪ سينئر شامل آهن. سندن مھينا ڪم ڪندڙ وقت فنڊ:
جون: 4 * 150 = 600 чел * час,
وچون: 2 * 150 = 300 чел * час,
سينيئر: 150 чел * час.
اچو ته پهرين جونيئر دستياب خرچ ڪريو (0, 1, 2) ڪلاڪ هڪ سائيٽ جي قسم جي ترقي ۽ تعیناتي تي (x10, x20, x30), وچ - (7, 15, 20), سينيئر - (5, 10, 15) توهان جي زندگي جي بهترين وقت جا ڪلاڪ.
ڪنهن به عام ڊائريڪٽر وانگر، اسان چاهيون ٿا وڌ ۾ وڌ مھينا منافعو. ڪاميابيءَ لاءِ پهريون قدم مقصدي ڪم کي لکڻ آهي value جيئن هر مهيني پيدا ٿيندڙ شين مان آمدني جي رقم:
۽ آخرڪار، سڀ کان وڌيڪ گلابي مفروضو اهو آهي ته گهٽ قيمت ۽ اعلي معيار جي ڪري، مطمئن گراهڪن جي هڪ قطار مسلسل اسان لاء قطار آهي. اسان پاڻ کي مھينن جي پيداوار جي مقدار کي منتخب ڪري سگھون ٿا، محدود اصلاح جي مسئلي کي حل ڪرڻ جي بنياد تي scipy.optimize:
اچو ته مڪمل انگن اکرن کي آسانيءَ سان گول ڪريون ۽ پراڊڪٽس جي بهترين ورڇ سان قطارن جي ماهوار لوڊ جو اندازو لڳايو x = (8, 6, 3) :
جون: 8 * 10 + 6 * 20 + 3 * 30 = 290 чел * час;
وچون: 8 * 7 + 6 * 15 + 3 * 20 = 206 чел * час;
سينيئر: 8 * 5 + 6 * 10 + 3 * 15 = 145 чел * час.
نتيجو: ڊائريڪٽر لاءِ ان جي چڱيءَ طرح مستحق وڌ کان وڌ حاصل ڪرڻ لاءِ، اهو بهتر آهي ته 8 لينڊنگ صفحا، 6 وچولي سائيز جون سائيٽون ۽ 3 اسٽور هر مهيني. ان حالت ۾، سينيئر کي مشين کان مٿي ڏسڻ جي بغير ھلائڻ گھرجي، وچين جو لوڊ لڳ ڀڳ 2/3 ٿيندو، جونيئر اڌ کان گھٽ.
ٿڪل
آرٽيڪل پيڪيج سان ڪم ڪرڻ لاء بنيادي ٽيڪنالاجي بيان ڪري ٿو scipy.optimize, مشروط گھٽ ۾ گھٽ مسئلن کي حل ڪرڻ لاء استعمال ڪيو ويو. ذاتي طور تي مان استعمال ڪريان ٿو scipy مڪمل طور تي علمي مقصدن لاءِ، جنهن ڪري ڏنل مثال اهڙي مزاحيه نوعيت جو آهي.
ڪيترائي نظريا ۽ مجازي مثال ملي سگھن ٿا، مثال طور، I.L. Akulich جي ڪتاب ۾ "مثالن ۽ مسئلن ۾ رياضياتي پروگرامنگ." وڌيڪ سخت ايپليڪيشن scipy.optimize تصويرن جي هڪ سيٽ مان هڪ 3D ساخت ٺاهڻ لاءِ (Habré تي مضمون) ۾ ڏسي سگھجي ٿو پچائڻ وارو ڪتاب.
معلومات جو مکيه ذريعو آهي docs.scipy.orgجيڪي هن ۽ ٻين حصن جي ترجمي ۾ حصو وٺڻ چاهين ٿا scipy ڀليڪار ڪيون ٿا GitHub.