Ich benutze Python 2.5.Angeben von Einschränkungen für fmin_cobyla in scipy
I Grenzen der cobyla Optimierung bin vorbei:
import numpy
from numpy import asarray
Initial = numpy.asarray [2, 4, 5, 3] # Initial values to start with
#bounding limits (lower,upper) - for visualizing
#bounds = [(1, 5000), (1, 6000), (2, 100000), (1, 50000)]
# actual passed bounds
b1 = lambda x: 5000 - x[0] # lambda x: bounds[0][1] - Initial[0]
b2 = lambda x: x[0] - 2.0 # lambda x: Initial[0] - bounds[0][0]
b3 = lambda x: 6000 - x[1] # same as above
b4 = lambda x: x[1] - 4.0
b5 = lambda x: 100000 - x[2]
b6 = lambda x: x[2] - 5.0
b7 = lambda x: 50000 - x[3]
b8 = lambda x: x[3] - 3.0
b9 = lambda x: x[2] > x[3] # very important condition for my problem!
opt= optimize.fmin_cobyla(func,Initial,cons=[b1,b2,b3,b4,b5,b6,b7,b8,b9,b10],maxfun=1500000)
Basierend auf den Ausgangswerten Initial
und als pro/innerhalb der Grenzen b1
-b10
die Werte zu opt()
geben werden. Aber die Werte sind abweichend, insbesondere mit b9
. Dies ist eine sehr wichtige Randbedingung für mein Problem!
"Der Wert von x[2]
, der bei jeder Iteration an meine Funktion opt()
übergeben wird, muss immer größer sein als x[3]
" - Wie ist es möglich, dies zu erreichen?
Gibt es etwas falsch in meinen Grenzen (b1
bis b9
) Definition?
Oder gibt es eine bessere Möglichkeit, meine Grenzen zu definieren?
Bitte helfen Sie mir.
ich den Titel revidieren würde Dies ist eine Frage darüber, wie Constraints für die fmin_cobyla-Funktion von scipy angegeben werden und nicht, wie lambdas im Allgemeinen angegeben werden. –