सीमाओं के साथ एनील विधि के तहत एक समारोह को कम करने के लिए कैसे?

मैं method = 'Anneal'
के साथ फ़ंक्शन को कम करने की कोशिश कर रहा हूं मैंने opts नामक एक शब्दकोश में सीमाएं निर्दिष्ट की हैं 'lower': 0.0 और 'upper': 1.0
मैं विकल्प तर्क में opts पास करता हूं।
अनुकूलन काम करता है और मुझे एक जवाब मिलता है।
हालांकि सबसे अच्छे समाधान के मूल्य मेरे द्वारा ऊपरी बाउंड सेट से ऊपर हैं।
कोई आइडिया है कि मैं क्या गलत कर रहा हूँ? सीमाओं को किसी अन्य तरीके से सेट किया जाना चाहिए?

1
मुझे नहीं लगता scipy anneal सीमाओं का सम्मान करता है। कृपया यह scipy समस्या रिपोर्ट देखें।
जोड़ा लेखक Anders Gustafsson, स्रोत
तो, क्या कोई वैकल्पिक विधि है जिसका उपयोग मैं बाध्य सीमाबद्ध न्यूनतमकरण के लिए कर सकता हूं। मैंने पाया कि slsqp भी सीमाओं का सख्ती से पालन नहीं करता है। यह बहुत छोटी मात्रा से बाहर चला जाता है।
जोड़ा लेखक user1327454, स्रोत
कृपया एक विधि सुझाएं जो एक वैश्विक अनुकूलक है और डेरिवेटिव की आवश्यकता नहीं है।
जोड़ा लेखक user1327454, स्रोत

1 उत्तर

यदि आपको एक अनुकूलक की आवश्यकता है जो सीमा विनिर्देशों का सम्मान करता है और जिसके लिए डेरिवेटिव की आवश्यकता नहीं है:

scipy contains fmin_cobyla that supports any type of constraints and does not require derivatives. It is not a global optimizer (but on the other hand I don't believe simulated annealing can guarantee global optimzality either).

NLOpt has a Python interface and contains the more efficient BOBYQA algorithm for nonlinear optimization with variable bounds.

0
जोड़ा