मैं ऑप्टिमाइज़ेशन के लिए SciPy का उपयोग कर रहा हूं और विधि SLSQP मेरी बाधाओं को अनदेखा कर रहा है।Scipy.optimize.minimize method = 'SLSQP' बाधा को अनदेखा करता है
विशेष रूप से, मैं एक्स [3] और एक्स [4] सीमा [0-1]
मुझे संदेश मिल रहा में रहना चाहता हूँ: 'असमानता की कमी असंगत'
यहाँ है निष्पादन एक उदाहरण कोड के बाद के परिणाम (एक डमी फ़ंक्शन का उपयोग करता):
from random import random
from scipy.optimize import minimize
def func(x):
""" dummy function to optimize """
print 'x'+str(x)
return random()
my_constraints = ({'type':'ineq', 'fun':lambda(x):1-x[3]-x[4]},
{'type':'ineq', 'fun':lambda(x):x[3]},
{'type':'ineq', 'fun':lambda(x):x[4]},
{'type':'ineq', 'fun':lambda(x):1-x[4]},
{'type':'ineq', 'fun':lambda(x):1-x[3]})
minimize(func, [57.9499 ,-18.2736,1.1664,0.0000,0.0765],
method='SLSQP',constraints=my_constraints)
:
status: 4
success: False
njev: 2
nfev: 24
fun: 0.11923608071680103
x: array([-10993.4278558 , -19570.77080806, -23495.15914299, -26531.4862831 ,
4679.97660534])
message: 'Inequality constraints incompatible'
jac: array([ 12548372.4766904 , 12967696.88362279, 39928956.72239509,
-9224613.99092537, 3954696.30747453, 0. ])
nit: 2
यहाँ मेरी कोड है
संपादित करें - समस्या तब भी बनी रहती है जब पहली बाधा को हटाते समय भी।
समस्या तब होती है जब मैं सीमा चर का उपयोग करने का प्रयास करता हूं। अर्थात,
bounds_pairs = [(None,None),(None,None),(None,None),(0,1),(0,1)]
minimize(f,initial_guess,method=method_name,bounds=bounds_pairs,constraints=non_negative_prob)
आप ऑप्टिमाइज़ करने के लिए एक गैर-कार्यशील फ़ंक्शन का उपयोग क्यों कर रहे हैं? यदि फ़ंक्शन केवल 'यादृच्छिक() '(और विशेष रूप से, उसी इनपुट के लिए लगातार परिणाम भी नहीं लौटाता है), निश्चित रूप से SciPy भ्रमित हो जा रहा है।उदाहरण के लिए – user2357112
। यह समस्या मेरे द्वारा उपयोग किए जाने वाले फ़ंक्शन के बावजूद होती है। मुझे नहीं लगता कि यह समस्या है @ user2357112 – Zahy
कम से कम scipy दस्तावेज़ों में, एक लैम्ब्डा का उपयोग करते समय वे एक np.array(), जैसे 'मजेदार': lambda x: np.array ([x [ 0] ** 3 - एक्स [1]])। –