2016-04-07 4 views
0

Ich versuche mit SciPy zu arbeiten optimize.minimize usign mehrere Variablen und ich fand eine großartige Erklärung in: Structure of inputs to scipy minimize function in dem Fall, wenn die obektive Funktion der Art f (x, y) und der zu optimierende Parameter ist "x". Aber eine Frage stellt sich: Was ist, wenn meine Zielfunktion von der Art f (x, y, z, u, v) ist und ich in Bezug auf "y" und "u" optimieren möchte (vorausgesetzt, dass f einen Skalar zurückgibt).SciPy optimize.minimize mit mehreren Variablen

Antwort

1

Erstellen Sie einfach eine neue Funktion mit Zielvariablen in der Liste der Parameter gehen zuerst:

def g(y, u, x, z, v): 
    return f(x, y, z, u, v) 

(oder eine analoge Lambda verwenden).

+0

Können Sie mir mehr über die Lambda-Funktion erzählen? –

+0

Es gibt nicht viel zu sagen, es kann etwas lesbarer sein, wenn Ihre Funktion sehr kurz ist und Sie es nur einmal brauchen. Siehe [python docs on it] (https://docs.python.org/3.5/tutorial/controlflow.html#lambda-expressions). In Ihrem Fall wäre es etwas wie "minimieren (lambda y, u, x, z, v: f (x, y, z, u, v), args = (x0, z0, v0))" – fjarri