【发布时间】:2019-07-16 19:52:00
【问题描述】:
我有一个问题:我试图找到一个函数的最小值,该函数取决于我想更改的几个参数。让我们作为一个简化的例子:
import numpy as np
import scipy.optimize as opt
def f(x, a, b, c):
f = a * x**2 + b * x + c
return f
我想找到对于 a、b、c 的不同值集的函数最小化的 x,比如说对于
a = [-1, 0, 1]
b = [0, 1, 2]
c = [0, 1]
ATM 我有三个嵌套循环和一个最小化:
for p1 in a:
for p2 in b:
for p3 in c:
y = opt.minimize(f, x0=[0, ], args=(p1, p2, p3, ))
print(y)
这对于我正在做的计算来说真的很慢,但到目前为止我还没有找到更好的方法。那么,有没有人知道可以让我提高效率的方法或包?
【问题讨论】:
-
您查看过
p1,p2,p3不同值的优化统计信息吗?大概minimize对每个解决方案采用不同的最佳路径,具有不同的迭代次数和试验值。因此,尝试一次最小化几组参数可能不是最优的。 -
你不能跳过
c循环吗?这两个值的解决方案没有区别,不是吗?而且我怀疑这些解决方案可能会以a/b比率或类似的比例扩展。我可能对这些直觉有误,但无论如何,一些预先计算的数学可能会帮助您减少迭代空间。 -
是的,谢谢,但我可能没有正确解释自己:这是一个简化的例子,实际计算的计算要求更高。我会尽量在文本中更清楚地说明这一点
标签: python numpy optimization scipy minimize