gpt4 book ai didi

python - 使用 iminuit 求解 n 维优化问题

转载 作者:太空宇宙 更新时间:2023-11-04 10:45:21 25 4
gpt4 key购买 nike

我想使用 iminuit 解决一个 n 维优化问题。

所以我的方法如下。我想弄清楚如何扩展它:

def f(x,y,z):
return (x-1.)**2 + (y-2*x)**2 + (z-3.*x)**2 -1.

到一个变量“x”,它是一个 numpy.array。

我想做这样的事情:

x = [1,2,3,4,5]
y = [2,4,6,8,10]# y=2x
class StraightLineChi2:
def __init__(self,x,y):
self.x = x
self.y = y
def __call__(self,m,c): #lets try to find slope and intercept
chi2 = sum((y - m*x+c)**2 for x,y in zip(self.x,self.y))
return chi2

但在我的例子中 x 是我的未知数,它是一个数组。与许多优化/最小化问题一样,该函数是 f=f(x1,...,xn),其中 n 可以很大。 x1,...,xn 是问题的未知数。

(这些例子摘自here)

“黑客”pyminuit2 实现了类似的东西,如所述here

最佳答案

对于您的示例,我建议您使用 iminuitprobfit .将参数作为参数列表并不是您想要做的,因为您很快就会搞不清哪个参数是什么。

这是直接取自 probfit tutorial 的示例.另见 the documentation


import iminuit
import probfit
x = np.linspace(0, 10, 20)
y = 3 * x + 15 + np.random.randn(len(x))
err = np.ones(len(x))
def line(x, m, c): # define it to be parabolic or whatever you like
return m * x + c
chi2 = probfit.Chi2Regression(line, x, y, err)
minuit = iminuit.Minuit(chi2)
minuit.migrad();
print(minuit.values) #{'c': 16.137947520534624, 'm': 2.8862774144823855}

关于python - 使用 iminuit 求解 n 维优化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17748600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com