Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

302
Visualizações
Minimizar función con parámetros

Actualmente tengo el siguiente código que define la función f .

 a = #something b = #something c = #something def f(x): """Evaluates some function that depends on parameters a, b, and c""" someNumber = #some calculation return someNumber

Idealmente, haría def f(x, a, b, c) , PERO estoy minimizando f con respecto a x y la caja de herramientas de optimización de SciPy no permite minimizar funciones con parámetros en los argumentos. Dicho esto, me gustaría ejecutar mi código de minimización para múltiples valores de a, b y c . ¿Hay alguna manera de que pueda hacer esto?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede especificar argumentos adicionales en args

 from scipy.optimize import minimize minimize(f, x0, args=(a, b, c))
over 4 years ago · Santiago Trujillo Relatório

0

Esta es una pregunta y respuesta sencillas sobre el uso de minimize . En caso de que otros usuarios necesiten algo más concreto, aquí hay un ejemplo simple.

Una ecuación cuadrática generalizada:

 In [282]: def fun(x, a,b,c): ...: return a*x**2 + b*x + c In [283]: optimize.minimize(fun, 10, args=(1,0,0)) Out[283]: fun: 1.7161984122524196e-15 hess_inv: array([[ 0.50000001]]) jac: array([ -6.79528891e-08]) message: 'Optimization terminated successfully.' nfev: 15 nit: 4 njev: 5 status: 0 success: True x: array([ -4.14270251e-08]) In [284]: optimize.minimize(fun, 10, args=(1,1,1)) Out[284]: fun: 0.7500000000000221 hess_inv: array([[ 0.49999999]]) jac: array([ 3.12924385e-07]) message: 'Optimization terminated successfully.' nfev: 12 nit: 2 njev: 4 status: 0 success: True x: array([-0.49999985])

La función también podría tomar matrices como entrada, pero aún necesita devolver un solo valor (escalar):

 In [289]: optimize.minimize(fun, [10,10,10], args=(np.array([1,2,3]), 1, 1)) Out[289]: fun: 2.541666666667115 hess_inv: array([[ 0.50021475, -0.00126004, 0.00061239], [-0.00126004, 0.25822101, -0.00259327], [ 0.00061239, -0.00259327, 0.16946887]]) jac: array([ -8.94069672e-08, 4.47034836e-07, -2.20537186e-06]) message: 'Optimization terminated successfully.' nfev: 55 nit: 9 njev: 11 status: 0 success: True x: array([-0.50000006, -0.2499999 , -0.16666704]) In [286]: def fun(x, a,b,c): ...: return (a*x**2 + b*x + c).sum()

Es una buena idea asegurarse de que la función se ejecute con el x0 y los argumentos propuestos, por ejemplo

 In [291]: fun(np.array([10,10,10]), np.array([1,2,3]), 1, 1) Out[291]: 633

Si no puede llamar a la función objetivo, o está confundido acerca de cómo funcionan sus argumentos, minimize no es una bala mágica. Esta minimización es tan buena como su comprensión de la función objetivo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda