Pregunta Múltiples variables en SciPy's optimize.minimize


De acuerdo con la Documentación de SciPy es posible minimizar funciones con múltiples variables, pero no indica cómo optimizar dichas funciones.

from scipy.optimize import minimize
from math import *

def f(c):
  return sqrt((sin(pi/2) + sin(0) + sin(c) - 2)**2 + (cos(pi/2) + cos(0) + cos(c) - 1)**2)

print minimize(f, 3.14/2 + 3.14/7)

El código anterior intenta minimizar la función f, pero para mi tarea necesito minimizar con respecto a tres variables.

Simplemente introduciendo un segundo argumento y ajustando minimizar en consecuencia produce un error (TypeError: f() takes exactly 2 arguments (1 given))

Cómo minimize trabajo al minimizar con múltiples variables.


37
2017-12-02 14:43


origen


Respuestas:


Pack las múltiples variables en una sola matriz:

import scipy.optimize as optimize

def f(params):
    # print(params)  # <-- you'll see that params is a NumPy array
    a, b, c = params # <-- for readability you may wish to assign names to the component variables
    return a**2 + b**2 + c**2

initial_guess = [1, 1, 1]
result = optimize.minimize(f, initial_guess)
if result.success:
    fitted_params = result.x
    print(fitted_params)
else:
    raise ValueError(result.message)

rendimientos

[ -1.66705302e-08  -1.66705302e-08  -1.66705302e-08]

46
2017-12-02 14:54