【问题标题】:Build scipy objective function dynamically动态构建 scipy 目标函数
【发布时间】:2019-11-17 22:07:06
【问题描述】:

我想要完成的工作: 尝试使用 scipy 优化最小化功能并动态构建 lambda 目标函数。

所以我想要 1 个函数来构建并返回一个 lambda,并且我希望它接受参数。所以例如我想构建:

def build_lambdas([params]):
   for param in params:
     lambda.var = param.var
     lambda.coeff = param.coeff

y = 4 + 3y 要么 y = 2x + 5y + 4z 要么 y = 5x + 3z + 2r + 0.5p

取决于我传入的内容。

完成此任务的最佳方法是什么?我已经看到了许多尝试在 lambda 中动态更新 x 值的示例,但我所追求的是使用要优化的变量和系数来执行此操作。

所以我正在寻找想法、提示和示例。

提前致谢!

【问题讨论】:

  • 我并不完全清楚为什么要将它作为参数传递,而不是直接构建 lambda。当然,你也可以只传递一个 lambda 作为参数。

标签: python python-3.x lambda scipy


【解决方案1】:

你可以这样做:

import numpy as np
def build_lambda(*coefficients):
   return lambda *vars: np.dot(coefficients, vars)

l = build_lambda(2,3)
print(l(3,4))  # 18              

它只限于线性方程,但您可以将概念扩展到多项式。

【讨论】:

  • 谢谢,这或多或少是我所追求的。是的,我将扩展到多项式以获得更复杂的函数。
猜你喜欢
  • 2021-02-16
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 1970-01-01
  • 2021-10-14
相关资源
最近更新 更多