scipy - Stochastic Optimization in Python -


मैं उत्तल स्टेचस्टिक अनुकूलन समस्याओं को हल करने के लिए (एक अनुकूलन सॉल्वर) और (एक सैंपलर) को संयोजित करने की कोशिश कर रहा हूं

P> दोनों पैकेज स्वतंत्र रूप से पूरी तरह से अच्छी तरह से काम करते हैं। cvxopt :

  # के साथ एक एल.पी. समस्या को हल करने का उदाहरण यहां दिया गया है कि cvxopt cvxopt आयात मैट्रिक्स से काम करता है, solvers # http: // cvxopt से उदाहरण .org / userguide / coneprog.html # linear-programming c = मैट्रिक्स ([- 4। -5।]) जी = मैट्रिक्स ([[2।, ​​1., -1, 0], [1., 2., 0., -1।]]) एच = मैट्रिक्स ([3।, 3., 0., 0.]) sol = solvers.lp (c, g, h) # समाधान sol ['x' ] सही है: (1,1)  

हालांकि, जब मैं इसे पीईएमसी के साथ प्रयोग करने की कोशिश करता हूं (उदाहरण के तौर पर एक गुणांक पर एक वितरण डालकर), पिपएमसी एक त्रुटि देता है:

<प्री> आयातक के रूप में आयात करें cvxopt c1 = pm.Normal ('c1', mu = -4, tau = .5 ** - 2) @ pm.deterministic def my_lp_solver (c1 = c1): c = मैट्रिक्स ([सी 1, -5।]) जी = मैट्रिक्स ([[2।, ​​1., -1, 0.], [1., 2., 0., -1]]) एच = मैट्रिक्स ([3., 3., 0., 0.]) sol = solvers.lp (c, g, h) समाधान = np.array (sol ['x'], dtype = float)। फ्लेटन () रिटर्न समाधान M = pm.MCMC (dict (c1 = c1, x = x)) m.sample (20000, 10000, 10)

मुझे निम्न पाईएमसी एर्रो मिलता है R:

  & lt; ipython-input-21-5ce2909be733 & gt; एक्स में (सी 1) 14 @ pm.deterministic 15 डीईएफ़ एक्स (सी 1 = सी 1): --- & gt; 16 सी = मैट्रिक्स ([सी 1, -5।]) 17 जी = मैट्रिक्स ([[2।, ​​1., -1, 0], [1., 2., 0., -1]]]) 18 एच = मैट्रिक्स ([3।, 3., 0., 0.]) TypeError: सूची में अमान्य प्रकार  

क्यों? cvxopt को PyMC के साथ अच्छी तरह से खेलने का कोई तरीका क्या है?

पृष्ठभूमि:

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

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

ऊपर दिए गए समाधान से प्रेरित है, केवल अंतर यह है कि मैं एक सच्चे सामान्य सॉल्वर (इस मामले में) का उपयोग करने की उम्मीद कर रहा हूं

c1 से उत्पन्न pm। सामान्य है numpy array , आपको इसे पट्टी करने और इसे float (c1) < / कोड>, फिर यह पतले काम करता है:

 > gt; & gt; @ Pm.deterministic ... def my_lp_solver (c1 = c1): ... c = मैट्रिक्स ([फ्लोट (सी 1), -5।]) ... जी = मैट्रिक्स ([[2।, ​​1., -1 ।, 0.], [1., 2., 0., -1]]) ... h = मैट्रिक्स ([3।, 3., 0., 0.]) ... sol = solvers Lp (c, g, h) ... समाधान = np.array (sol ['x'], dtype = float)। फ्लेटन () ... रिटर्न समाधान ... pcost dcost gap pres dres k / t 0: -8.1223 ई + 00 -1.8293 ई + 01 4e + 00 0e + 00 7e-01 1e + 00 1: -8.8301e + 00-9.4605e + 00 2e-01 1e-16 4e-02 3e-02 2: -9.022 9 ई 00 9.0297e + 00 2e-03 2e-16 5e-04 4e-04 3: -9.0248e + 00-9.0248e + 00 2e-05 3e-16 5e-06 4e-06 4: -9.0248e + 00 -9.0248 ई +2 2 ई-07 2 ई -16 5e-08 4e-08 इष्टतम समाधान मिला।  

Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -